L2TP ouni IPsec op Linux: xl2tpd, pppd an NAT
Reines L2TP ass PPP am Kloertext: xl2tpd, pppd-Optiounen an chap-secrets astellen, MTU 1460 wielen, UDP 1701 vun Enn zu Enn erlaben an duerno NAT fir de Clientzougang derbäisetzen.
Reines L2TP ass PPP an engem Couvert, an näischt anescht. Et dréit Är Frames; et verschlësselt se net an et beweise net, wien um aneren Enn sëtzt, dofir schléckt bal all Déploiement IPsec drënner. Éierlech Grënn fir déi nackt Versioun ze bedreiwen gëtt et nach: eng Labobänk, e Migratiounsschrëtt oder eng Verbindung, déi schonn an engem anere geschützte Wee läit.
Wann Dir trotzdem weidergitt, schreift dëse Virbehalt an d'Designnotiz an loosst en do. Wat duerno kënnt, ass de Betribswee, deen ech op Hosten aus der Debian- an der RHEL-Famill benotzen: wéi eng Fichier fir wat zoustänneg ass, d'MTU, déi de klassesche Stopp verhënnert, an d'Weiderleetungsregelen, déi den Tunnel sënnvoll maachen.
Dräi Fichiere deele sech d'Aarbecht
xl2tpd beend d'Steierverbindung an iwwergëtt all Sëtzung un en PPP-Daemon, dofir ass d'Konfiguratioun op zwee Programmer verdeelt, déi ni déi aner hir Fichieren liesen. De Lauschterer läit an /etc/xl2tpd/xl2tpd.conf, bannen engem [lns default]-Abschnitt, deen den Adresspool mam ip range, d'Serverenn mam local ip an d'Iwwergab un PPP mam pppoptfile nennt. Schalt require authentication = yes an, loosst length bit an flow bit aktiv an wielt en Pool, deen nach näischt anescht um Host benotzt.
D'PPP-Politik gehéiert an déi Fichier, déi déi Optioun nennt, normalerweis /etc/ppp/options.xl2tpd: auth, Oflehnunge fir pap, chap an mschap, require-mschap-v2, eng MTU an MRU vun 1460 an eng DNS-Adress, déi de Client no dem Opbau vun der Verbindung erreeche kann. D'Zougangsdaten sinn nach eng drëtt Fichier, /etc/ppp/chap-secrets, wou dat zweet Feld mam Numm vum LNS-Abschnitt muss iwwereneestëmmen an dat véiert Feld eng bestëmmte Adress aus dem Pool ka festleeën.
Firwat sech den Tunnel verbënnt an dann hänkt
En Ethernet-Frame vun 1500 Byte passt net an e Wee, dee schonn Byte fir seng eege Header ausgëtt. Den äusseren IPv4-Header kascht 20, UDP kascht 8 an den L2TP-Header ongeféier 12, wat 1460 fir PPP an seng Notzlaascht léisst. Genau déi kleng Zuel am PPP unzekënnegen ass et, wat grouss Paketen dovun ofhält, fragmentéiert ze ginn oder iergendwou an der Mëtt stëll verluer ze goen.
D'Symptom ass en Tunnel, dee gesond ausgesäit, bis richtegen Trafic kënnt: Pings a Steiermeldunge ginn duerch, eng Dateikopie hänkt, näischt am Log erkläert et. Senkt MTU an MRU zesummen op béiden Enner. Nëmmen de Client upassen verwandelt en haarde Stopp meeschtens an en ënnerbrach en, wat méi schwéier ze diagnostizéieren ass.
Een Port dréit zwee Gespréicher
UDP 1701 läit ënner béiden Hälften vum Protokoll, an déi eenzeg Tatsaach brécht méi Firewallregelen wéi all aneren Deel vum Opbau. Als éischt kommen eng Ufro fir den Ufank vun der Steierverbindung an hir Äntwert; d'Sëtzungsufro an d'Bestätegung, déi duerno kommen, etabléieren näischt méi wéi d'Identifikatorepaar. Duerno iwwerhëlt PPP: Linksteier, dann Authentifizéierung, dann IP-Steierprotokoll fir d'Adressen ze einigen. All Etapp huet hir eege Vokabulär am Log, an keng vun hinnen mellt sech als L2TP-Feeler.
Eng Opnam genee an dëser Reiefolleg ze liesen, seet Iech, wéi eng Etapp gescheitert ass, an eng PPP-Authentifizéierungsfeeler gëtt net duerch d'Änneren vun xl2tpd reparéiert. Dee gemeinsame Port erkläert nach eng heefeg Feeler: eng Regel, déi nëmmen déi éischt Pakete vun engem Flux erlaabt, léisst d'Sëtzung entstoen an blockéiert dann d'Iwwerdroung. Erlaabt 1701 fir de ganze Gespréich, an déi zwou Richtungen.
Den Tunnel nëtzlech maachen: Weiderleetung an NAT
Eng Sëtzung erreecht vu sech aus nëmmen de Server. Den Internetzougang vun de Cliente brauch Weiderleetung, eng NAT-Regel fir de Pool um Upstream an en DNS, deen de Client no dem Opbau wierklech froe kann. De Pool muss och baussent dem LAN-Beräich bleiwen, soss ginn Äntwerten, déi un d'Cliente geriicht sinn, lokal geliwwert, amplaz zréck an den Tunnel gedréckt ze ginn.
Um Server aktivéiert d'Weiderleetung mam sysctl -w net.ipv4.ip_forward=1, iwwersetzt de Pool mam iptables -t nat -A POSTROUTING -s 10.44.0.0/24 -o eth0 -j MASQUERADE, an akzeptéiert dann den erausgehenden Tunneltrafic mat enger FORWARD-Regel fir -i ppp0 -o eth0 an den zréckkommenden Trafic mat der Spigelregel plus -m state --state RELATED,ESTABLISHED. Maacht dës Regelen iwwer Neistarts stabil, well e Server, dee sech ouni si zréckmellt, genee wéi eng futti L2TP-Konfiguratioun ausgesäit.
Dem Server seng eege LAN z'erreechen ass eng aner Aufgab: setzt eng Zréckroute fir de Pool um LAN-Router derbäi oder Proxy-ARP um Server. D'Cliente hannert NAT verstoppen, wann eppes aus der LAN se direkt muss adresséieren, plangt just eng zweet Debugsëtzung fir méi spéit an.
Wat den nackte Stack net mécht, a wéi een et iwwerpréift
Keen Deel vun dësem Stack verschlësselt d'PPP-Frames, an näischt dran authentifizéiert dat wäit Enn als dee Server, deen Dir wierklech gewielt hutt. MS-CHAPv2 schützt den Austausch vun den Zougangsdaten zwar virun engem Lauschterer, deen nëmmen nogesäit, awer en Ugräifer am Wee kann nach ëmmer an d'Sëtzung agrÄifen. Den native Windows-Client bitt L2TP nëmmen a Kombinatioun mat IPsec, also rechent mat Linux, Router-Firmware an Drëttanbieter-Cliente als Är Géigespiller. Behandelt déi nackt Konfiguratioun als diagnostesch Tëschestuf, ni als Plaz fir opzehalen.
Iwwerpréift an enger fester Reiefolleg: start xl2tpd -D am Virdergrond, kuckt de Journal fir d'PPP-Etapp un, liest déi zougewisen Adress aus ip addr op béiden Enner, a fänkt dann UDP 1701 of, fir ze bestätegen, datt Daten fléissen nodeems d'Sëtzung steet. Waen all véier iwwereneestëmmen an den Trafic ging duerch net, läit de Feeler am Routing, am NAT oder an der MTU an net am L2TP selwer.