PPTP serveris aiz mājas maršrutētāja: vispirms salabojiet 1723 un GRE
Palaidiet PPTP aiz mājas maršrutētāja: TCP 1723, IP protokols 47, caurlaides izvēles rūtiņa un MTU aritmētika, kā arī kad L2TP vai OpenVPN ir labāks darījums.
PPTP aiz mājas maršrutētāja sabrūk divos nesaistītos veidos, un to sajaukšana izmaksā veselu vakaru. Viens defekts ir pāradresācijas robs: maršrutētājs laiž cauri TCP 1723 un nomet IP protokolu 47, tāpēc klients karājas pie kļūdas 619. Otrs ir izmēra problēma: tunelis paceļas, autentificējas un pēc tam iesalst, kad jāpāriet pilna izmēra paketei. Noskaidrot, kurš no tiem ir jums, ir pirmais īstais solis; pārējais salīdzina, ko jūsu maršrutētājs spēj izteikt, nevis kura marka ir labāka.
Divi transporti, un tikai vienam ir ports
PPTP sadalās divos transportos: vadības savienojums uz TCP 1723 un PPP kadri, kas ietīti paplašinātajā GRE, tas ir, IP protokolā 47. GRE nav porta numura, tāpēc noteikums, kas rakstīts kā 1723 porta pāradresācija, to nevar aptvert, lai kā tīmekļa saskarne nosauktu šo lauku. Sadzīves maršrutētājs parasti piedāvā izvēles rūtiņu ar nosaukumu PPTP caurlaide, nevis protokola noteikumu, un šī rūtiņa dara divus darbus: tā laiž protokolu 47 caur ugunsmūri un māca NAT sekot GRE plūsmai. Linux maršrutētājā šie darbi ir atsevišķi moduļi un atsevišķi noteikumi, tāpēc puslīdz konfigurēta caurlaide joprojām dod strādājošu vadības kanālu. Noskaidrojiet, kura puse ir, pirms kaut ko maināt.
Arī paša servera ugunsmūrim jāatļauj protokols 47 no maršrutētāja adreses. Resursdatora ugunsmūris, kas pieņem tikai 1723/tcp, atveido 619 kļūdu no LAN iekšpuses, tāpēc salauzta pāradresācija un salauzts resursdatora noteikums izskatās vienādi.
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'
Ja moduļu nav, ielādējiet tos ar sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre un padariet ielādi pastāvīgu, jo restartēšana, kas aizmirst palīgu, atkal pārvērš strādājošu tuneli 619 kļūdā. Pāradresācijas noteikumam jāpieņem protokols 47 tikai pret servera adresi, nevis visu LAN. RFC 2637 definīcija atdala vadības un datu ceļu, tāpēc neviens viens porta pāradresācijas ekrāns neapraksta PPTP pilnībā.
Caurlaides rūtiņa vai skaidrs protokola noteikums
Caurlaides rūtiņa, kas tikai atver ugunsmūri, ir tuvāk pareizajam nekā ALG, kas pārraksta izsaukuma identifikatorus. Ugunsmūra puse ir paredzama, jo protokols 47 tiek vai nu pieņemts, vai nomests, un skaitītāji parāda, kurš. Pārrakstīšanas puse ir vieta, kur ražotāji atšķiras, jo PPTP izsaukuma identifikatori ir katram tunelim, un NAT, kas tos rediģē, ir jāseko katram aizskartajam izsaukumam. Kad viens klients pievienojas, bet divi ne, ALG ir pirmais aizdomās turamais.
Galamērķa NAT noteikumam 1723 arī ir īpašnieka problēma. Ja vecs noteikums joprojām sūta 1723 uz resursdatoru, kas pārtrauca darbināt serveri, paketes nonāk slēgtā portā, un paša maršrutētāja PPTP pakalpojums pārstāj atbildēt, kas izskatās kā ugunsmūra bojājums, bet patiesībā ir novecojis mērķis. Izlasiet noteikumu un tā galamērķi, pirms pievienojat otru. Maršrutētājos, kas paši pabeidz PPTP, WAN noteikums konkurē ar iebūvēto pakalpojumu, tāpēc 1723 un 47 protokolam izvēlieties vienu īpašnieku.
Divi klienti aiz viena NAT ir gadījums, kas atšķir vienkāršu pāradresāciju no gudras. Protokola 47 pāradresācija, nepārrakstot izsaukuma identifikatorus, parasti uzvedas labāk nekā palīgs, kas cenšas tos salabot.
Izmēriet tuneli, pirms vainojat maršrutētāju
PPTP samazina izmantojamo kravu, un šis samazinājums ir aritmētika, nevis noslēpums. Katra tuneļa pakete nes ārējo IP galveni, paplašināto GRE galveni, PPP galveni un ar šifrēšanu MPPE galveni. Kad ceļš nevar pārnest iegūto kadru, mazas paketes iziet, pieteikšanās pabeidzas, un sesija apstājas pirmajā reizē, kad faila pārsūtīšana vai TLS rokasspiediens nosūta pilna izmēra paketi.
Aprēķiniet skaitli, nevis miniet. Paplašinātais GRE maksā 8 baitus, PPP — 4, MPPE — 4, bet ārējā IP galvene — 20, tāpēc tunelis apēd 36 baitus pirms jebkuras kravas. PPPoE WAN, kas beidzas pie 1492, lielākais ietilpstošais PPP MTU ir 1492 mīnus 36, tas ir 1456. Iestatiet mtu un mru uz šo vērtību PPP opcijās un pārbaudiet vēlreiz ar ping bez fragmentācijas.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
Ping mēra ceļu, nevis tuneli: 1464 baiti kravas plus 28 baiti IP un ICMP galveņu precīzi aizpilda 1492 baitu kadru. Ja šis ping neizdodas, samaziniet skaitli, līdz tas iziet, un atņemiet 36 no rezultāta. Virs ceļa robežas iestatīts tuneļa MTU rada iesalšanu bez nevienas žurnāla rindas, kas pieminētu izmēru.
PPTP, L2TP/IPsec vai OpenVPN vienā maršrutētājā
Tas pats maršrutētājs var nest jebkuru no trim parastajiem tuneļiem, un atšķirība ir tajā, kas tam jāizsaka. PPTP vajag divus noteikumus divos dažādos slāņos. L2TP virs IPsec vajag UDP 500 un 4500 atslēgu apmaiņai un, ja NAT-T to nenes, protokolu 50 kravai. OpenVPN vajag vienu UDP portu un nemaz palīgu.
| 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 kolonna nav automātiski draudzīgāka par GRE. ESP ir IP protokols 50, un arī tam nav porta, tāpēc maršrutētājs, kam grūti ar protokolu 47, var saskarties ar grūtībām arī ar protokolu 50 tā paša iemesla dēļ. NAT-T pastāv, lai ietītu ESP UDP 4500 iekšpusē, un, kad abi gali to atbalsta, protokola 50 noteikums kļūst lieks. Tā ir galu īpašība, nevis maršrutētāja PPTP rūtiņas. Pirms rakstāt noteikumus abiem, apstipriniet, kādu iekapsulējumu klients faktiski vienojās.
OpenVPN ir variants ar vismazāk kustīgām daļām maršrutētāja pusē. Viens UDP ports, viena pāradresācija, nekāds savienojumu izsekošanas palīgs un nekāda izsaukuma identifikatoru pārrakstīšana. Pretī ir klients, kas jāinstalē, nevis iebūvēts zvanītājs, un bieži tas ir vienīgais iemesls, kāpēc PPTP paliek sarunā.
Ko labot un ko aizstāt
Pāradresācijas un MTU salabošana dod strādājošu tuneli, nevis tādu, kas jāsaglabā. PPTP MSCHAPv2 autentifikācija jau gadiem ir uzlaužama, un strādājošs tunelis pārvieto akreditācijas datus, ko var atgūt bezsaistē. Ja attālā ierīce spēj darbināt L2TP/IPsec vai OpenVPN, uzskatiet labošanu par termiņu noteiktu pagaidu pasākumu.
Lēmums ir atkarīgs no tā, ko atbalsta tālais gals un cik ilgi vienošanās jāiztur. Vecā ierīce, kas runā tikai PPTP, saņem labošanu; viss, kur var instalēt klientu, tiek migrēts.
Pirms biļetes aizvēršanas pārliecinieties, ka klients iztur lielu pārsūtīšanu, ne tikai pieteikšanos, un ka maršrutētājs pēc restarta joprojām ievēro protokola 47 noteikumu. Tunelis, kas iztur vienu faila kopiju un nomirst pēc nākamā programmaparatūras atjauninājuma, nekad nav bijis pabeigts.