PPTP sadalītais tunelis nedarbojas: vispirms salabojiet GRE ceļu
PPTP sadalītais tunelis neizdodas divu dažādu iemeslu dēļ: GRE ir bloķēts vai trūkst iekšējā maršruta. Vispirms pārbaudiet transportu, pēc tam politiku.
Vērojiet, kā PPTP savienojums ceļas, un ir viegli noticēt, ka grūtā daļa jau ir padarīta: klients autentificējas, parādās ppp0 adapteris vai WAN Miniport, un statusa logs kļūst zaļš. Pēc tam pirmā pieprasījums uz iekšējo resursdatoru beidzas ar taimautu, un profilu vaino. Praksē ir jāsakārto divi neatkarīgi slāņi: ārējais transports, kas pārvadā TCP 1723 un GRE, un iekšējā politika, kas nosaka, kuri galamērķi izmanto PPP saskarni. Zaļš statuss pierāda tikai to, ka pirmais slānis ir vienojies; par otro tas neko nepasaka.
Sekojiet klientam no profila līdz vadības ligzdai
Atveriet klienta žurnālu un atrodiet vietu, kur tas sazinās ar serveri. PPTP vispirms atver TCP savienojumu uz 1723 portu un šajā kanālā vienojas par tuneļa parametriem. Ja šis solis neizdodas, nekam vēlākam nav nozīmes, un kļūda parasti nosauc servera adresi vai taimautu.
Pirms aiztiekat jebkuru maršrutu, apstipriniet vadības savienojumu tīklā. Klientā vai spoguļportā uztveriet TCP 1723 vienam savienojuma mēģinājumam:
sudo tcpdump -ni any 'tcp port 1723' -c 20
Pabeigta roku spiediens un izveidota sesija nozīmē, ka ārējais vadības kanāls darbojas. SYN, kas nekad nesaņem SYN-ACK, norāda uz ugunsmūri, nepareizu servera adresi vai pakalpojumu sniedzēju, kas filtrē portu. Roku spiedienam sekojoša tūlītēja atiestatīšana bieži nozīmē, ka serveris noraidīja akreditācijas datus vai tuneļa tipu.
GRE ir otrs protokols, nevis ports
PPTP pārvadā PPP kravu paplašinātajā GRE, IP 47 protokolā, kuram nav porta numura, ko maršrutētājs varētu izsekot. Tāpēc noteikums, kas atļauj TCP 1723, joprojām var atstāt tuneli bez datu ceļa. Stāvokļa NAT ierīcēm ir jāsaprot zvana ID GRE iekšienē, lai kartētu atbildes, un daudzas to nedara. PPTP specifikācija tur vadības kanālu un GRE kravu kā atsevišķas daļas, un arī jūsu testa plānam tā jādara.
Vērojiet 47 protokolu tajā pašā ierakstā, pēc tam salīdziniet, kas iziet, ar to, kas atgriežas:
sudo tcpdump -ni any 'proto gre' -c 20
Paketes, kas iziet bez atbildēm, kamēr TCP 1723 paliek vesels, ir klasiskā bloķēta GRE pazīme. PPTP caurlaide mājas maršrutētājā ir tieši šīs programmaparatūras funkcija, tāpēc strādājošs viesnīcas tīkls neko nepierāda par nākamo. Ja maršrutētājs nepiedāvā caurlaidi un jūs to nevarat mainīt, problēma ir protokola izvēle, nevis maršrutu tabula.
Pierādiet, ka tunelis pārvieto vienu paketi
Kad GRE sāk plūst, PPP sarunas piešķir adresi klienta saskarnei. Lasiet piešķīrumu, nevis pieņemiet to:
ip -4 addr show ppp0
Pingējiet pārējā dalībnieka adresi, kas parādīta kā punkts-punktam saites galamērķis. Atbilde šajā posmā pierāda, ka iekapsulētais ceļš darbojas no viena gala līdz otram un ka serveris atbild tuneļa iekšienē. Ja pārējais dalībnieks atbild, bet iekšējie resursdatori ne, ārējais transports ir kārtībā, un kļūme ir pārcēlusies uz iekšu.
Dariet to pirms jebkura sadalītā maršruta pievienošanas. Maršruta maiņa, kas veikta bojāta transporta laikā, rada otru mainīgo un paslēpj pirmo.
Uzrakstiet sadalīto politiku, ieskaitot DNS
Sadalītā maršrutēšana ir lēmumu saraksts, nevis izvēles rūtiņa. Katram privātajam prefiksam, kam jāšķērso tunelis, vajag maršrutu caur PPP saskarni, un katram prefiksam, kam jāpaliek lokālam, tajā nav jābūt. Maršruts uz lietotnes apakštīklu bez atbilstoša maršruta uz tā privāto risinātāju ir izplatīts veids, kā radīt pārtraukumu, kas izskatās kā salūzusi lietotne.
Pārbaudiet lēmumu, ko kodols pieņem vienai adresei katrā kategorijā:
ip route get 10.20.5.10
ip route get 203.0.113.25
Pirmajam jānosauc ppp0, otrajam parastā vārteja. Ja abi nosauc vienu un to pašu saskarni, politika nemaz nav sadalīta. Pievienojiet paša DNS servera adresi tuneļa sarakstam, citādi iekšējo resursdatoru nosaukumu atrisināšana iziet caur vietējo risinātāju un neatgriež neko lietderīgu.
Atkārtojama pārbaude piecos soļos
Izpildiet slāņus pēc kārtas un apstājieties pie pirmā, kas neizdodas: vadības kanāls, GRE redzamība, PPP pārējā dalībnieka atbilde, sadalīts maršruts vienai iekšējai adresei un lietotnes pieprasījums pa tuneli. Katram solim ir sava komanda, tāpēc kļūme ir attiecināma, nevis noslēpumaina.
Kompakta versija Linux klientam izskatās šādi:
sudo tcpdump -ni any 'tcp port 1723 or proto gre' -c 40
ip -4 addr show ppp0
ping -c 3 192.0.2.1
ip route get 10.20.5.10
Windows vidē darbojas tā pati secība ar route print un klientā parādīto adaptera statusu. PPTP ir novecojis protokols, un, ja serveris piedāvā SSTP vai IKEv2, pārcelšanās parasti ir labāks laika izlietojums nekā ceļa regulēšana, kas ir atkarīgs no 47 protokola pārejas katrā lēcienā. Pārbaudiet nomaiņas sertifikātu un autentifikācijas līgumu, nevis kopējiet veco profilu jaunā izlaidumā.