Portál AbcLinuxu, 10. května 2025 00:59

Dotaz: pptp zahazuje GRE pakety

onion avatar 14.2.2008 17:59 onion | skóre: 8 | blog: onion | Praha
pptp zahazuje GRE pakety
Přečteno: 567×
Odpovědět | Admin

Zdravim, pripojuju se pomoci ppp+pptp na jeden VPN server (svedska sluzba Relakks), ktery pouziva P-t-P protokol. Vse bezi jak ma, az na to, ze mam logy plne hlasky

anon warn[decaps_gre:pptp_gre.c:351]: Discarding GRE: 7D 91C2 0 40 20 E

a spojeni obcas spadne, nekdy vydrzi 10 hodin (rekord), nekdy pul hodiny a nekdy ani to ne. Hlaska je stale stejna, ale meni se druhe hexa cislo (v tomto pripade 91C2), ktere podle pptp_gre.c (viz. nize) znamena verzi protokolu, ktera by mela podle RFC 2637 byt vzdy 880B! :(

Pokud jsem to spravne pochopil, tak vsech sest sledovanych poli musi mit hodnotu 0, aby byl paket akceptovan. Cilem meho dotazu je prijit na to proc nektere pakety obsahuji blbosti, ktere nejsou zpusobene jejich poskozenim pri prenosu, protoze jedine checksum je spravne (ma nulu). Normalne bych se tim nezabyval, ale vzhledem k tomu, ze spojeni obcas padne podezrivam prave tenhle problem. Zkousel jsem tcpdumpem odchytavat ICMP pakety, ale nevypada to, ze by nejaky router po ceste GRE pakety zahazoval.

Interval mezi jednotlivymi hlaskami je ~3s (ale meni se)

Relevantni kus kodu generujici chybovou hlasku je tenhle:

if (    /* version should be 1 */
            ((ntoh8(header->ver) & 0x7F) != PPTP_GRE_VER) ||
            /* PPTP-GRE protocol for PPTP */
            (ntoh16(header->protocol) != PPTP_GRE_PROTO)||
            /* flag C should be clear   */
            PPTP_GRE_IS_C(ntoh8(header->flags)) ||
            /* flag R should be clear   */
            PPTP_GRE_IS_R(ntoh8(header->flags)) ||
            /* flag K should be set     */
            (!PPTP_GRE_IS_K(ntoh8(header->flags))) ||
            /* routing and recursion ctrl = 0  */
            ((ntoh8(header->flags)&0xF) != 0)) {
        /* if invalid, discard this packet */
        warn("Discarding GRE: %X %X %X %X %X %X",
                ntoh8(header->ver)&0x7F, ntoh16(header->protocol),
                PPTP_GRE_IS_C(ntoh8(header->flags)),
                PPTP_GRE_IS_R(ntoh8(header->flags)),
                PPTP_GRE_IS_K(ntoh8(header->flags)),
                ntoh8(header->flags) & 0xF);
        stats.rx_invalid++;
        return 0;
    }

Takhle vypada konfigurace v /etc/conf.d/net (pouzivam Gentoo), zkousel jsem zakazat CCP ale pak se to vubec nepripojilo, pri vypnuti BSD komprese taky nadaval (ale pripojil se). Podle pozorovani nema nastaveni MTU zadny vliv na zahazovani GRE paketu.

link_ppp1=("pty 'pptp pptp.relakks.com --nolaunchpppd'")
pppd_ppp1=(
        "updetach"
        "lock"
        "noauth"
        "refuse-eap"
        "refuse-chap"
        "refuse-mschap"
        "require-mppe"
        "require-mppe-128"
        "nomppe-40"
        "lcp-echo-interval 3"
        "lcp-echo-failure 10"
        "ipcp-accept-local"
        "ipcp-accept-remote"
        "maxfail 0"
        #"nobsdcomp"
        #"nodeflate"
        #"noccp"
        "persist"
        #"debug"
        #"mru 1440"
        "mtu 1440"
        "disconnect /root/vnstat-disable-ppp1.sh"
}
Diky za pripadne napady/rady ... hraju si s tim (s prestavkama) asi dva mesice a uz proste nevim co skusit :/
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Na otázku zatím nikdo bohužel neodpověděl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.