Chyby zápisu GRE na pptpd nie sú problémom hesla
Protokol 47 nie je port 47. Čítajte dve správy pptpd ako dva rôzne defekty, povoľte GRE tam, kde hostiteľ preposiela, a ponechajte MPPE namiesto vypnutia.
Chyba zápisu GRE v protokole, a prvý inštinkt je resetovať používateľské heslo. Ten inštinkt je takmer vždy nesprávny. Tieto správy opisujú dátovú cestu, nie kontrolu prihlasovacích údajov: klient sa mohol úspešne autentifikovať a potom uviaznuť vo fáze, keď sa registruje v sieti. Dve rôzne správy ukazujú na dva rôzne defekty a ani jeden sa nevyrieši novým heslom.
Dve správy, dva rôzne defekty
Chyba čítania znamená, že pakety GRE nikdy nedorazia k démonovi alebo sa na vstupe zahodia. Riadiaca spojka môže vyzerať úplne zdravo, zatiaľ čo dátovou cestou nič neprechádza. Autentifikácia je jediná vec, ktorá preukázateľne fungovala.
Chyba zápisu zvyčajne znamená, že relácia si dohodla niečo, čo jadro alebo klient nemôžu použiť. Riadiaci kanál sa dokončil a voľby dohodnuté počas tejto výmeny nezodpovedajú tomu, čo koncové body naozaj dokážu. Je to nesúlad konfigurácie, nie udalosť autentifikácie.
Prečítajte si, ktorá z tých dvoch sa objavuje, skôr než čokoľvek zmeníte. Vedú vás do rôznych vrstiev a ich liečenie ako jedného príznaku je dôvod, prečo sa ten istý server záplatuje dvakrát z nesúvisiacich príčin. Riadok v protokole je jediná bezplatná diagnostika, ktorú dostanete.
Protokol 47 nie je port 47
PPTP používa TCP 1723 na nadviazanie hovoru a GRE na prenos užitočného zaťaženia. GRE je IP protokol 47, nie číslo portu, takže pravidlo firewallu, ktoré otvorí port 47, nič užitočné nepovolí.
Smerovač na ceste potrebuje funkciu PPTP passthrough alebo výslovné povolenie GRE. Bez toho sa TCP handshake dokončí a tunel nikdy neprenesie paket, čo vytvára presne vyššie uvedenú chybu čítania. Pravidlá pre port 47 vo firewalle sú najčastejšie premárnené popoludnie v tomto protokole.
Sledujte oba smery súčasne na serveri, namiesto hádania, ktorá strana zahadzuje prevádzku: tcpdump -ni any port 1723 or proto gre.
Ak 1723 ukazuje nadviazanie hovoru a GRE zostáva ticho, blokovanie je nad hostiteľom. Ak GRE dorazí a démon stále zlyháva, problém je lokálny a voľby sú ďalším miestom na pohľad.
Povoľte GRE tam, kde hostiteľ skutočne preposiela
Vloženie forward pravidla pre GRE je rozumný test na hostiteľovi, ktorý preposiela tunelovú prevádzku, a nie je to politika. Testovacie pravidlo, ktoré prijíma všetko jedného protokolu, je diagnostika, nie dizajn. Ponechajte ho dosť dlho, aby ste sa niečo naučili, a potom ho nahraďte obmedzeným pravidlom.
Pridajte input pravidlo pre pakety adresované samotnému serveru, pretože forward reťazec ich nevidí. Potom sledujte počítadlá pravidla pred pokusom o pripojenie a po ňom, čo vám povie, či pakety vôbec prichádzajú.
Uložte pravidlo natrvalo cez firewallovú službu distribúcie, namiesto aby ste ho znova spúšťali po každom reštarte. Na hostiteľovi s nftables zosúlaďte ip protocol gre v input aj forward reťazci.
Overte, že je načítaný aj modul ppp_generic, a skontrolujte, či sledovanie spojení nezahadzuje spätný smer. Oboje vytvára zlyhania, ktoré vyzerajú ako problém firewallu a nie sú. Chýbajúci modul jadra vyzerá presne ako zablokovaný protokol, kým to nepreveríte.
Prispôsobte voľby klientovi, ktorého skutočne máte
Oprava z druhej správy je v /etc/ppp/pptpd-options, kde recept odmieta PAP, CHAP a MSCHAP, zakomentuje príslušné riadky require a zachováva stavový MPPE. Ten recept bol napísaný pre jednu zmes klientov a slepé kopírovanie rozbíja bežný prípad. Čítajte riadky odmietnutia ako tvrdenie o tom, akých klientov autor mal, nie ako odporúčanie.
Klient Windows zvyčajne potrebuje MS-CHAPv2 s MPPE-128. Zachovajte tieto požiadavky a odstráňte iba tie voľby, ktoré klient naozaj nemôže vyjednať.
# keep encryption; drop only what this client cannot negotiate
refuse-pap
refuse-chap
refuse-mschap
mppe-stateful
require-mschap-v2
require-mppe-128Vypnutie šifrovania, aby spojenie uspelo, je degradácia, nie oprava. Vyskúšajte taký variant na laboratórnom spoji a potom obnovte šifrovanie, kým sa služba nestretne so skutočnými klientmi. Spojenie, ktoré funguje nezabezpečene, je horšie než to, ktoré zlyhá čestne.
Prečítajte si číslo chyby klienta
Číselný kód klienta zúži fázu rýchlejšie ako protokol servera. Prečítajte si ho skôr, než budete čítať čokoľvek iné. 691 znamená, že prihlasovacie údaje boli odmietnuté, 721 znamená, že server nikdy neodpovedal, a 619 znamená, že spojenie spadlo. Dve minúty s číslom ušetria hodinu s konfiguráciou.
Porovnajte tento kód s protokolom servera, skôr než čokoľvek upravíte, a po každej zmene znova otestujte tým istým klientom. Inak sa druhá chyba skryje za prvou a oprava vyzerá neúčinne.
Keď sa prihlásenie podarí a prevádzka sa nehýbe, GRE zostáva podozrivý. To je okamih vrátiť sa k zachyteniu, nie k úložisku prihlasovacích údajov.