Servidor PPTP darrere d'un router domèstic: primer arregla el 1723 i el GRE
Executa PPTP darrere d'un router domèstic: TCP 1723, protocol IP 47, la casella de pas i l'aritmètica de l'MTU, i quan L2TP o OpenVPN és el millor intercanvi.
PPTP darrere d'un router domèstic falla de dues maneres no relacionades, i barrejar-les fa perdre una tarda sencera. Una fallada és un buit de reenviament: el router deixa passar TCP 1723 i descarta el protocol IP 47, així que el client es penja a l'error 619. L'altra és un problema de mida: el túnel s'aixeca, s'autentica i després es bloqueja quan ha de travessar un paquet de mida completa. Esbrinar quina de les dues tens és el primer pas real; la resta compara què pot expressar el teu router, no quina marca és millor.
Dos transports, i només un té port
PPTP es divideix en dos transports: una connexió de control a TCP 1723 i trames PPP embolcallades en GRE millorat, que és el protocol IP 47. El GRE no té número de port, així que una regla escrita com a reenviament del port 1723 no el pot cobrir per molt que la interfície web anomeni el camp. Un router de consum sol oferir una casella anomenada pas PPTP en lloc d'una regla de protocol, i aquesta casella fa dues feines: permet el protocol 47 a través del tallafoc i ensenya al NAT com seguir el flux GRE. En un router Linux aquestes feines són mòduls separats i regles separades, i per això un pas mig configurat encara produeix un canal de control operatiu. Esbrina quina meitat hi és abans de canviar res.
El tallafoc del propi servidor també ha de permetre el protocol 47 des de l'adreça del router. Un tallafoc de l'amfitrió que només accepta 1723/tcp reprodueix l'error 619 des de dins de la LAN, cosa que fa que un reenviament trencat i una regla d'amfitrió trencada semblin idèntics.
sudo iptables -S FORWARD | grep -i gre
sudo nft list ruleset | grep -i gre
lsmod | grep -E 'nf_conntrack_proto_gre|nf_nat_proto_gre'
Si falten els mòduls, carrega'ls amb sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre i fes que la càrrega sigui permanent, perquè un reinici que oblida l'ajudant converteix un túnel operatiu en l'error 619 una altra vegada. La regla de reenviament només ha d'acceptar el protocol 47 cap a l'adreça del servidor, no tota la LAN. La definició de RFC 2637 separa els camins de control i de dades, i per això cap pantalla de reenviament de port descriu PPTP del tot.
Casella de pas o una regla de protocol explícita
Una casella de pas que només obre el tallafoc és més a prop del correcte que un ALG que reescriu identificadors de trucada. La meitat del tallafoc és previsible, ja que o s'accepta el protocol 47 o es descarta, i els comptadors diuen quin dels dos. La meitat de la reescriptura és on els fabricants difereixen, perquè els identificadors de trucada de PPTP són per túnel i un NAT que els edita ha de seguir cada trucada que toca. Quan un client connecta i dos no, l'ALG és el primer sospitós.
Una regla de NAT de destinació per al 1723 també té un problema de propietat. Si una regla antiga encara envia el 1723 a un amfitrió que va deixar de córrer el servidor, els paquets cauen en un port tancat i el servei PPTP propi del router deixa de respondre, cosa que es llegeix com una fallada del tallafoc però en realitat és un objectiu antic. Llegeix la regla i la seva destinació abans d'afegir-ne una segona. En routers que acaben PPTP ells mateixos, la regla WAN competeix amb el servei integrat, així que tria un sol propietari per al 1723 i el protocol 47.
Dos clients darrere del mateix NAT són el cas que separa un reenviament simple d'un d'enginyós. Reenviar el protocol 47 sense reescriure els identificadors de trucada sol comportar-se millor que un ajudant que intenta arreglar-los.
Mesura el túnel abans de culpar el router
PPTP redueix la càrrega útil, i aquesta reducció és aritmètica, no misteri. Cada paquet del túnel porta una capçalera IP exterior, una capçalera GRE millorada, una capçalera PPP i, amb xifratge, una capçalera MPPE. Quan el camí no pot portar la trama resultant, els paquets petits passen, l'inici de sessió es completa i la sessió s'atura el primer cop que una transferència de fitxers o un handshake TLS envia un paquet de mida completa.
Calcula el número en lloc d'endevinar-lo. El GRE millorat costa 8 bytes, el PPP costa 4, l'MPPE costa 4 i la capçalera IP exterior costa 20, així que el túnel es menja 36 bytes abans de qualsevol càrrega. En una WAN PPPoE que acaba a 1492, el PPP MTU més gran que hi cap és 1492 menys 36, és a dir 1456. Fixa mtu i mru en aquest valor a les opcions PPP i torna a provar amb un ping sense fragmentació.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
El ping mesura el camí, no el túnel: 1464 bytes de càrrega més 28 bytes de capçaleres IP i ICMP omplen exactament una trama de 1492 bytes. Si aquest ping falla, baixa el número fins que passi i resta 36 del resultat. Un MTU de túnel fixat per sobre del límit del camí produeix el bloqueig sense cap línia de registre que esmenti la mida.
PPTP, L2TP/IPsec o OpenVPN al mateix router
El mateix router pot portar qualsevol dels tres túnels habituals, i la diferència és què ha d'expressar. PPTP necessita dues regles en dues capes diferents. L2TP sobre IPsec necessita UDP 500 i 4500 per a l'intercanvi de claus i, tret que NAT-T el porti, el protocol 50 per a la càrrega. OpenVPN necessita un sol port UDP i cap ajudant.
| Tunnel | What the router must allow | Practical note |
|---|---|---|
| PPTP | TCP 1723 and IP protocol 47 | Two transports, two rules |
| L2TP/IPsec | UDP 500, UDP 4500, protocol 50 without NAT-T | ESP has no port either |
| OpenVPN | UDP 1194 or a chosen TCP port | Single rule, no helper |
La columna de L2TP no és automàticament més amable que la de GRE. L'ESP és el protocol IP 50 i tampoc no té port, així que un router que té problemes amb el protocol 47 pot tenir-los amb el protocol 50 pel mateix motiu. El NAT-T existeix per embolcallar l'ESP dins d'UDP 4500, i quan els dos extrems el suporten la regla del protocol 50 es torna innecessària. Això és una propietat dels extrems, no de la casella PPTP del router. Confirma quina encapsulació ha negociat realment el client abans d'escriure regles per a tots dos.
OpenVPN és l'opció amb menys peces mòbils a la banda del router. Un port UDP, un reenviament, cap ajudant de seguiment de connexions i cap reescriptura d'identificadors de trucada. L'intercanvi és un client que s'ha d'instal·lar en lloc d'un marcador integrat, i sovint és l'única raó per la qual PPTP es queda a la conversa.
Què reparar i què substituir
Arreglar el reenviament i l'MTU et dona un túnel que funciona, no un que hagis de conservar. L'autenticació MSCHAPv2 de PPTP és atacable des de fa anys, i un túnel operatiu mou credencials que es poden recuperar fora de línia. Si el dispositiu remot pot córrer L2TP/IPsec o OpenVPN, tracta la reparació com una mesura temporal amb data.
La decisió es redueix a què suporta l'extrem llunyà i quant ha de durar l'arranjament. Un aparell antic que només parla PPTP rep la reparació; tot el que pot instal·lar un client es migra.
Abans de tancar el tiquet, confirma que el client sobreviu a una transferència gran i no només a un inici de sessió, i que el router encara manté la seva regla del protocol 47 després d'un reinici. Un túnel que passa una còpia de fitxer i mor després de la següent actualització de firmware mai no va estar acabat.