PPTP сервер иза кућног рутера: прво поправите 1723 и GRE
Покрените PPTP иза кућног рутера: TCP 1723, IP протокол 47, поље за пропуштање и MTU аритметика, плус када су L2TP или OpenVPN боља замена.
PPTP иза кућног рутера пада на два неповезана начина, а њихово мешање кошта целе вечери. Један квар је празнина у прослеђивању: рутер пропушта TCP 1723 и одбацује IP протокол 47, па клијент виси на грешци 619. Други је проблем величине: тунел се подиже, аутентификује и затим се замрзне када мора да прође пакет пуне величине. Открити који од њих имате је први прави корак; остатак пореди шта ваш рутер може да изрази, а не која је марка боља.
Два транспорта, а само један има порт
PPTP се дели на два транспорта: контролну везу на TCP 1723 и PPP оквире умотане у проширени GRE, што је IP протокол 47. GRE нема број порта, зато правило написано као прослеђивање порта 1723 не може да га покрије, како год веб интерфејс назвао то поље. Кућни рутер обично нуди поље са називом PPTP пропуштање уместо правила протокола, и то поље ради две ствари: пропушта протокол 47 кроз заштитни зид и учи NAT како да прати GRE ток. На Linux рутеру ти послови су одвојени модули и одвојена правила, зато полуконфигурисано пропуштање ипак даје радни контролни канал. Откријте која половина постоји пре него што било шта промените.
Сопствени заштитни зид сервера такође мора да дозволи протокол 47 са адресе рутера. Заштитни зид домаћина који прихвата само 1723/tcp репродукује грешку 619 изнутра LAN-а, због чега покварено прослеђивање и покварено правило домаћина изгледају исто.
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'
Ако модули недостају, учитајте их помоћу sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre и учините учитавање трајним, јер рестарт који заборави помоћника поново претвара радни тунел у грешку 619. Правило прослеђивања треба да прихвата протокол 47 само према адреси сервера, не цео LAN. Дефиниција у RFC 2637 раздваја контролну и податковну путању, зато ниједан екран прослеђивања порта не описује PPTP у потпуности.
Поље за пропуштање или изричито правило протокола
Поље за пропуштање које само отвара заштитни зид ближе је исправном од ALG-а који преписује идентификаторе позива. Половина са заштитним зидом је предвидива, јер се протокол 47 или прихвата или одбацује, а бројачи кажу који. Половина са преписивањем је место где се произвођачи разликују, јер су идентификатори позива у PPTP-у за сваки тунел и NAT који их уређује мора да прати сваки позив који дотакне. Када се један клијент повеже а два не, ALG је први осумњичени.
Правило одредишног NAT-а за 1723 такође има проблем власништва. Ако застарело правило још шаље 1723 ка домаћину који је престао да покреће сервер, пакети падају на затворен порт и сопствена PPTP услуга рутера престаје да одговара, што се чита као квар заштитног зида, али је у ствари застарели циљ. Прочитајте правило и његово одредиште пре него што додате друго. На рутерима који сами завршавају PPTP, WAN правило се такмичи са уграђеном услугом, зато изаберите једног власника за 1723 и протокол 47.
Два клијента иза истог NAT-а су случај који раздваја једноставно прослеђивање од паметног. Прослеђивање протокола 47 без преписивања идентификатора позива обично се понаша боље од помоћника који покушава да их поправи.
Измерите тунел пре него што оптужите рутер
PPTP смањује корисни терет, а то смањење је аритметика, не мистерија. Сваки пакет тунела носи спољни IP заглавље, проширено GRE заглавље, PPP заглавље и, уз шифровање, MPPE заглавље. Када путања не може да пренесе настали оквир, мали пакети пролазе, пријава се завршава, а сесија се зауставља први пут када пренос датотеке или TLS руковање пошаље пакет пуне величине.
Израчунајте број уместо да га погађате. Проширени GRE кошта 8 бајтова, PPP кошта 4, MPPE кошта 4, а спољно IP заглавље кошта 20, зато тунел поједе 36 бајтова пре било ког терета. На PPPoE WAN-у који се завршава на 1492, највећи PPP MTU који стаје је 1492 минус 36, односно 1456. Поставите mtu и mru на ту вредност у PPP опцијама и поново тестирајте пингом без фрагментације.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
Пинг мери путању, не тунел: 1464 бајта терета плус 28 бајтова IP и ICMP заглавља тачно попуњавају оквир од 1492 бајта. Ако тај пинг не успе, смањујте број док не прође и одузмите 36 од резултата. MTU тунела постављен изнад границе путање ствара замрзавање без иједне линије дневника која помиње величину.
PPTP, L2TP/IPsec или OpenVPN на истом рутеру
Исти рутер може да носи било који од три уобичајена тунела, а разлика је у томе шта мора да изрази. PPTP захтева два правила у два различита слоја. L2TP преко IPsec-а захтева UDP 500 и 4500 за размену кључева и, ако га NAT-T не носи, протокол 50 за терет. OpenVPN захтева један UDP порт и никаквог помоћника.
| 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 |
Колона L2TP није аутоматски пријатељскија од GRE-а. ESP је IP протокол 50 и такође нема порт, зато рутер који има тешкоће са протоколом 47 може да има тешкоће са протоколом 50 из истог разлога. NAT-T постоји да умота ESP унутар UDP 4500, и када га оба краја подржавају, правило за протокол 50 постаје непотребно. То је својство крајева, а не PPTP поља на рутеру. Потврдите какву је инкапсулацију клијент заиста договорио пре него што напишете правила за обоје.
OpenVPN је опција са најмање покретних делова на страни рутера. Један UDP порт, једно прослеђивање, никакав помоћник за праћење веза и никакво преписивање идентификатора позива. Замена је клијент који мора да се инсталира уместо уграђеног бирача, и то је често једини разлог зашто PPTP остаје у разговору.
Шта поправити и шта заменити
Поправка прослеђивања и MTU-а даје тунел који ради, а не онај који треба задржати. MSCHAPv2 аутентификација у PPTP-у је годинама нападајна, а радни тунел преноси акредитиве који могу да се поврате ван мреже. Ако удаљени уређај може да покрене L2TP/IPsec или OpenVPN, третирајте поправку као привремену меру са датумом.
Одлука се своди на то шта подржава далеки крај и колико дуго договор треба да траје. Стари уређај који говори само PPTP добија поправку; све на шта може да се инсталира клијент се мигрира.
Пре него што затворите тикет, потврдите да клијент преживљава велики пренос, а не само пријаву, и да рутер и после рестарта држи своје правило за протокол 47. Тунел који прође једно копирање датотеке и умре после следећег ажурирања фирмвера никада није био завршен.