PPTP server sa likod ng home router: ayusin muna ang 1723 at GRE
Patakbuhin ang PPTP sa likod ng home router: TCP 1723, IP protocol 47, passthrough checkbox at MTU arithmetic, at kung kailan mas mainam na palitan ng L2TP o OpenVPN.
Ang PPTP sa likod ng home router ay nabibigo sa dalawang magkaibang paraan, at ang paghahalo sa kanila ay kumakain ng buong gabi. Isang sira ang butas sa pagpapasa: pinapadaan ng router ang TCP 1723 at itinatapon ang IP protocol 47, kaya nakabitin ang kliyente sa error 619. Ang isa ay problema sa laki: bumabangon ang tunnel, nagpapatunay, at pagkatapos ay tumitigas kapag kailangang dumaan ang pakete ng buong laki. Ang malaman kung alin sa dalawa ang mayroon ka ay ang unang tunay na hakbang; ang natitira ay naghahambing kung ano ang kayang ipahayag ng router mo, hindi kung aling tatak ang mas mabuti.
Dalawang transport, at isa lang ang may port
Nahahati ang PPTP sa dalawang transport: koneksyon ng kontrol sa TCP 1723, at mga PPP frame na nakabalot sa pinalawak na GRE, na siyang IP protocol 47. Walang port number ang GRE, kaya ang tuntuning nakasulat bilang pagpapasa ng port 1723 ay hindi ito masasaklaw, ano man ang itawag ng web interface sa field na iyon. Karaniwang nag-aalok ang home router ng checkbox na tinatawag na passthrough PPTP sa halip na tuntunin ng protocol, at ginagawa ng checkbox na iyon ang dalawang bagay: pinapadaan ang protocol 47 sa firewall at tinuturuan ang NAT na sundan ang daloy ng GRE. Sa Linux router, magkahiwalay na module at magkahiwalay na tuntunin ang mga gawaing iyon, kaya ang kalahating na-configure na passthrough ay nagbubunga pa rin ng gumagana na control channel. Alamin kung aling kalahati ang naroon bago magbago ng kahit ano.
Kailangan din ng firewall ng server mismo na payagan ang protocol 47 mula sa address ng router. Ang host firewall na tumatanggap lamang ng 1723/tcp ay nagpaparami ng error 619 mula sa loob ng LAN, kaya ang sirang pagpapasa at sirang tuntunin ng host ay magkamukhang magkapareho.
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'
Kung wala ang mga module, i-load ang mga ito gamit ang sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre at gawing permanente ang pag-load, dahil ang restart na nakakalimot sa katulong ay ginagawang error 619 muli ang gumaganang tunnel. Ang tuntunin sa pagpapasa ay dapat tumanggap ng protocol 47 patungo lamang sa address ng server, hindi sa buong LAN. Hinihiwalay ng depinisyon sa RFC 2637 ang daanan ng kontrol at ng data, kaya walang nag-iisang screen ng port forwarding ang naglalarawan ng PPTP nang buo.
Checkbox ng passthrough o malinaw na tuntunin ng protocol
Ang checkbox ng passthrough na nagbubukas lamang ng firewall ay mas malapit sa tama kaysa sa ALG na nagsusulat muli ng mga call identifier. Ang kalahati ng firewall ay mahuhulaan, dahil ang protocol 47 ay tinatanggap o itinatapon, at sinasabi ng mga counter kung alin. Ang kalahati ng pagsulat muli ang lugar kung saan nagkakaiba ang mga tagagawa, dahil per tunnel ang mga call identifier ng PPTP at ang NAT na nag-e-edit sa mga ito ay kailangang sundan ang bawat call na hinawakan nito. Kapag isang kliyente ang kumonekta at dalawa ang hindi, ang ALG ang unang pinaghihinalaan.
Ang tuntunin ng destination NAT para sa 1723 ay may problema rin sa pagmamay-ari. Kung ang lumang tuntunin ay nagpapadala pa rin ng 1723 sa host na tumigil sa pagpapatakbo ng server, bumabagsak ang mga pakete sa nakasarang port at tumitigil ang sagot ng sariling serbisyo ng PPTP ng router, na parang pagkabigo ng firewall ngunit sa totoo ay lumang target. Basahin ang tuntunin at ang target nito bago magdagdag ng pangalawa. Sa mga router na sila mismo ang nagtatapos ng PPTP, nakikipag-agawan ang tuntunin ng WAN sa built-in na serbisyo, kaya pumili ng isang may-ari para sa 1723 at protocol 47.
Dalawang kliyente sa likod ng parehong NAT ang kaso na naghihiwalay ng simpleng pagpapasa sa matalino. Ang pagpapasa ng protocol 47 nang hindi nagsusulat muli ng mga call identifier ay karaniwang mas mahusay kaysa sa katulong na sinusubukang ayusin ang mga ito.
Sukatin ang tunnel bago sisihin ang router
Binabawasan ng PPTP ang kapaki-pakinabang na payload, at ang pagbabawas na iyon ay aritmetika, hindi hiwaga. Bawat pakete ng tunnel ay may panlabas na IP header, pinalawak na GRE header, PPP header at, kapag may encryption, MPPE header. Kapag hindi kayang dalhin ng daanan ang nagresultang frame, dumadaan ang maliliit na pakete, natatapos ang pag-login, at humihinto ang session sa unang pagkakataon na ang paglilipat ng file o TLS handshake ay magpadala ng pakete ng buong laki.
Kalkulahin ang bilang sa halip na hulaan. Ang pinalawak na GRE ay nagkakahalaga ng 8 byte, ang PPP ay 4, ang MPPE ay 4, at ang panlabas na IP header ay 20, kaya kumakain ang tunnel ng 36 byte bago ang anumang payload. Sa PPPoE WAN na nagtatapos sa 1492, ang pinakamalaking PPP MTU na kasya ay 1492 na binawasan ng 36, ibig sabihin 1456. Itakda ang mtu at mru sa halagang iyon sa mga opsyon ng PPP at subukan muli gamit ang ping na walang fragmentation.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
Sinusukat ng ping ang daanan, hindi ang tunnel: ang 1464 byte na payload at 28 byte na IP at ICMP header ay eksaktong pumupuno ng 1492 byte na frame. Kung mabigo ang ping na iyon, ibaba ang bilang hanggang makadaan at ibawas ang 36 sa resulta. Ang MTU ng tunnel na itinakda sa itaas ng limitasyon ng daanan ay nagdudulot ng pagtigas nang walang kahit isang log line na nagbabanggit ng laki.
PPTP, L2TP/IPsec o OpenVPN sa parehong router
Kayang dalhin ng parehong router ang alinman sa tatlong karaniwang tunnel, at ang pagkakaiba ay kung ano ang kailangan nitong ipahayag. Ang PPTP ay nangangailangan ng dalawang tuntunin sa dalawang magkaibang layer. Ang L2TP sa ibabaw ng IPsec ay nangangailangan ng UDP 500 at 4500 para sa palitan ng key at, malibang dalhin ito ng NAT-T, protocol 50 para sa payload. Ang OpenVPN ay nangangailangan ng isang UDP port at wala nang katulong.
| 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 |
Ang hanay ng L2TP ay hindi awtomatikong mas palakaibigan kaysa GRE. Ang ESP ay IP protocol 50 at wala rin itong port, kaya ang router na nahihirapan sa protocol 47 ay maaaring mahirapan din sa protocol 50 sa parehong dahilan. Umiiral ang NAT-T para ibalot ang ESP sa loob ng UDP 4500, at kapag sinusuportahan ito ng dalawang dulo ay nagiging hindi kailangan ang tuntunin ng protocol 50. Iyon ay katangian ng mga dulo, hindi ng checkbox ng PPTP ng router. Kumpirmahin kung aling encapsulation ang tunay na napagkasunduan ng kliyente bago magsulat ng tuntunin para sa dalawa.
Ang OpenVPN ang opsyon na may pinakakaunting gumagalaw na bahagi sa gilid ng router. Isang UDP port, isang pagpapasa, walang katulong sa pagsubaybay ng koneksyon at walang pagsulat muli ng call identifier. Ang kapalit ay kliyenteng kailangang i-install sa halip na built-in na dialer, at madalas iyon lang ang dahilan kung bakit nananatili ang PPTP sa usapan.
Ano ang aayusin at ano ang papalitan
Ang pag-aayos ng pagpapasa at MTU ay nagbibigay sa iyo ng gumaganang tunnel, hindi ng dapat itago. Ang MSCHAPv2 authentication ng PPTP ay naaatake na sa loob ng mga taon, at ang gumaganang tunnel ay naglilipat ng mga kredensyal na makukuha offline. Kung kayang patakbuhin ng malayong device ang L2TP/IPsec o OpenVPN, ituring ang pag-aayos na pansamantalang hakbang na may petsa.
Nakasalalay ang desisyon sa sinusuportahan ng malayong dulo at gaano katagal dapat tumagal ang kaayusan. Ang lumang device na PPTP lang ang sinasabi ay nakakakuha ng pag-aayos; lahat ng kayang mag-install ng kliyente ay inililipat.
Bago isara ang ticket, kumpirmahin na nakakayanan ng kliyente ang malaking paglilipat at hindi lang pag-login, at hawak pa rin ng router ang tuntunin ng protocol 47 pagkatapos ng restart. Ang tunnel na nakakadaan ng isang kopya ng file at namamatay pagkatapos ng susunod na firmware update ay hindi kailanman natapos.