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 без фрагментација.

ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd

Ping ја мери патеката, а не тунелот: 1464 бајти товар плус 28 бајти IP и ICMP глави точно исполнуваат кадар од 1492 бајти. Ако тој ping не успее, намалувајте го бројот додека не помине и одземете 36 од резултатот. MTU на тунелот поставен над границата на патеката го создава замрзнувањето без ниту еден ред во дневникот што ја споменува големината.

PPTP, L2TP/IPsec или OpenVPN на истиот рутер

Истиот рутер може да носи кој било од трите вообичаени тунели, а разликата е во тоа што мора да го изрази. PPTP бара две правила во два различни слоја. L2TP врз IPsec бара UDP 500 и 4500 за размена на клучеви и, освен ако NAT-T не го носи, протокол 50 за товарот. OpenVPN бара една UDP порта и воопшто никаков помагач.

TunnelWhat the router must allowPractical note
PPTPTCP 1723 and IP protocol 47Two transports, two rules
L2TP/IPsecUDP 500, UDP 4500, protocol 50 without NAT-TESP has no port either
OpenVPNUDP 1194 or a chosen TCP portSingle 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. Тунел што минува една копија на датотека и умира по следното ажурирање на фирмверот никогаш не бил завршен.

Поврзани статии