PPTP холболт босч байгааг хараад хэцүү хэсэг нь дууссан гэж итгэхэд амархан: клиент баталгаажуулалт хийж, ppp0 адаптер эсвэл WAN Miniport гарч ирэхэд статус цонх ногоон болно. Дараа нь дотоод хост руу хийсэн эхний хүсэлт хугацаа хэтэрч, профайл буруутгагдана. Бодит байдал дээр хоёр бие даасан давхаргыг цэвэрлэх шаардлагатай: TCP 1723 болон GRE зөөвөрлөх гадаад тээвэр, мөн аль очих газрууд PPP интерфейсийг ашиглахыг шийдэх дотоод бодлого. Ногоон статус нь эхний давхарга тохиролцсоныг л баталж, хоёр дахь давхаргын талаар юу ч хэлэхгүй.

Клиентийг профайлаас удирдлагын сокет хүртэл дагаарай

Клиентийн логыг нээж, түүний сервертэй холбогдох цэгийг ол. PPTP эхлээд 1723 порт руу TCP холболт нээж, тэр сувгаар туннелийн параметрүүдийг тохиролцдог. Энэ алхам бүтэлгүйтвэл дараагийн юу ч чухал биш, алдаа нь ихэвчлэн серверийн хаяг эсвэл хугацаа хэтэрснийг заана.

Ямар ч маршрутад хүрэхээс өмнө удирдлагын холболтыг сүлжээн дээр баталгаажуул. Клиент эсвэл толин порт дээр нэг холболтын оролдлогын TCP 1723-ыг барьж ав:

sudo tcpdump -ni any 'tcp port 1723' -c 20

Дууссан гар барилт болон тогтоосон сесс нь гадаад удирдлагын суваг ажиллаж байгааг илтгэнэ. Хэзээ ч SYN-ACK авахгүй SYN нь галт хана, буруу серверийн хаяг, эсвэл портыг шүүдэг нийлүүлэгч рүү заана. Гар барилтын дараа шууд дахин тохируулалт ирвэл сервер итгэмжлэл эсвэл туннелийн төрлийг татгалзсан байна.

GRE бол хоёр дахь протокол, порт биш

PPTP нь PPP ачааг өргөтгөсөн GRE, IP 47 протоколын дотор зөөдөг бөгөөд маршрутизатор хянаж болох портын дугаар байхгүй. Тиймээс TCP 1723-ыг зөвшөөрсөн дүрэм ч туннелийг өгөгдлийн замгүй үлдээж болно. Төлөвтэй NAT төхөөрөмжүүд хариултыг буцааж буулгахын тулд GRE доторх дуудлагын ID-г ойлгох шаардлагатай бөгөөд олонх нь үүнийг хийдэггүй. PPTP-ийн тодорхойлолт удирдлагын суваг болон GRE ачааг тусдаа хэсгүүд гэж үздэг бөгөөд таны туршилтын төлөвлөгөө ч мөн адил байх ёстой.

Мөн адил барилт дотор 47 протоколыг ажиглаад, гарч байгаа болон буцаж ирж байгааг харьцуул:

sudo tcpdump -ni any 'proto gre' -c 20

TCP 1723 эрүүл байхад хариултгүй гарч байгаа пакетууд нь хаагдсан GRE-ийн сонгодог шинж тэмдэг. Хэрэглэгчийн маршрутизатор дээрх PPTP-ийн нэвтрүүлэлт нь тухайн firmware-ийн онцлог тул ажиллаж байгаа зочид буудлын сүлжээ дараагийнхын талаар юу ч батлахгүй. Хэрэв маршрутизатор нэвтрүүлэлт санал болгохгүй бөгөөд та өөрчилж чадахгүй бол асуудал нь маршрутын хүснэгт биш, протоколын сонголт.

Туннель нэг пакет зөөж байгааг батал

GRE урсаж эхлэхэд PPP-ийн хэлэлцээр клиентийн интерфейст хаяг олгоно. Таамаглахын оронд олголтыг унш:

ip -4 addr show ppp0

Цэгээс цэг рүү холболтын очих газар гэж харуулсан хамтрагчийн хаяг руу пинг илгээ. Энэ үеийн хариулт нь боожсэн зам эхнээс эцэс хүртэл ажиллаж, сервер туннелийн дотор хариулж байгааг батална. Хэрэв хамтрагч хариулж, дотоод хост хариулахгүй бол гадаад тээвэр хэвийн, гэмтэл дотогш шилжсэн.

Үүнийг ямар ч хуваасан маршрут нэмэхээс өмнө хий. Тээвэр эвдэрсэн үед хийсэн маршрутын өөрчлөлт хоёр дахь хувьсагчийг үүсгэж, эхнийхийг нуудаг.

Хуваасан бодлогыг бич, DNS-ийг оруулаад

Хуваасан маршрутлалт бол шийдвэрүүдийн жагсаалт, чагтлах хайрцаг биш. Туннелээр гарах ёстой хувийн префикс бүр PPP интерфейсээр дамжих маршрут шаарддаг бол орон нутгийн үлдэх ёстой префикс түүнд байх ёсгүй. Аппликейшны дэд сүлжээнд түүний хувийн шийдэгч рүү тохирох маршрутгүйгээр маршрут хийх нь эвдэрсэн апп шиг харагдах тасалдал үүсгэх нийтлэг арга.

Ангилал бүрийн нэг хаягийн хувьд цөм гаргах шийдвэрийг шалга:

ip route get 10.20.5.10
ip route get 203.0.113.25

Эхнийх нь ppp0, хоёр дахь нь ердийн гарцыг нэрлэх ёстой. Хоёулаа ижил интерфейсийг нэрлэвэл бодлого огт хуваагдаагүй. DNS серверийн өөрийн хаягийг туннелийн жагсаалтад нэм, эс бөгөөс дотоод хостод зориулсан нэрийн шийдэлт орон нутгийн шийдэгчээр гарч, хэрэгтэй юу ч буцаахгүй.

Таван алхамт давтагдах шалгалт

Давхаргуудыг дарааллаар нь ажиллуулж, эхний бүтэлгүйтсэн дээр зогс: удирдлагын суваг, GRE-ийн харагдац, PPP хамтрагчийн хариулт, нэг дотоод хаягийн хуваасан маршрут, туннелээр дамжуулсан аппликейшны хүсэлт. Алхам бүр өөрийн командтай тул гэмтлийг хамааруулж болно, нууцлаг биш.

Linux клиентэд зориулсан товч хувилбар иймэрхүү харагдана:

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 дээр мөн адил дараалал route print болон клиент дээр харуулсан адаптерын төлөвтэй хамт хэрэгжинэ. PPTP нь хуучирсан протокол бөгөөд сервер SSTP эсвэл IKEv2 санал болговол алхам бүрт 47 протокол нэвтрэхээс хамааралтай замыг тохируулахаас шилжих нь ихэвчлэн цагийг илүү сайн ашиглах явдал. Хуучин профайлыг шинэ хувилбарт хуулахын оронд орлуулагчийн гэрчилгээ болон нэвтрүүлэлтийн гэрээг шалга.

Холбоотой нийтлэлүүд