Туннель арқылы әдепкі маршрут қосыңыз, сонда туннельдің өз пакеттері де соған ереді. Содан кейін кестеде өзін-өзі жеңетін ереже болады. Серверге шифрланған қосылым өзі орнатуға тырысқан қосылымның ішімен жүруге тырысады.

Бұл ілмекті екі механизм болдырмайды. Біреуі маршруттау кестесінде көрінеді, екіншісі қолданбаның ішінде тұрады.

Ішкі және сыртқы трафик — әртүрлі шешімдер

Қолданба пакеті виртуалды интерфейске кіріп, инкапсуляцияланады. Нәтижесі — сервердің жария мекенжайына адрестелген жаңа пакет. Бұл пакетке физикалық желіде маршрут керек, өйткені оның ешбір бөлігі туннельге кіре алмайды.

Екеуі де маршруттау шешімдері, ал тек біріншісі туннельге тиесілі. Клиент серверді де қамтитын әдепкі маршрут орнатқанда, сыртқы пакет те ұсталады.

Симптомдар бірден және толық. Қол алысу аяқталады да, содан кейін ештеңе ақпайды, немесе маршрут орнатылған сәтте байланыс үзіледі. Екі жағдайда да keepalive енді шыға алмайды.

Бірінші нұсқа: соңғы нүкте үшін хост маршруты

Тікелей тәсіл сервер мекенжайы үшін бастапқы шлюз арқылы маршрут қосады. Ол бір жолды алады. Кестені оқыған кез келген адам оны көреді. Оны өзгеріс жазбасында түсіндіру де оңай.

Оның әлсіздігі астыңғы жол өзгергенде көрінеді. Сақталған маршрут ескі желіден шлюз мен интерфейсті атайды. Wi-Fi ауысқаннан кейін ол шлюз болмауы мүмкін, ал маршрут артта қалады, дұрыс көрінеді және ештеңе істемейді.

# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7

# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0

# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7

Хост атауы мұны қиындатады. Егер соңғы нүкте бірнеше мекенжайға шешілетін атау болса, ерекшелік нақты пайдаланылатын мекенжайды қамтуы керек. Кейінгі сұрау маршрут ешқашан қамтымаған нәрсені қайтаруы мүмкін.

Екінші нұсқа: сокетті қорғау

Басқа тәсіл маршруттау кестесіне ешқашан тимейді. Клиент туннельді тасымалдайтын сокетті белгілейді немесе қорғайды, сондықтан операциялық жүйе саясат бойынша сол сокеттің трафигін туннельден тыс жібереді. Android бұл механизмді VPN қолданбаларына тікелей ұсынады. Десктоп клиенттері баламаларын брандмауэр белгілерімен немесе құрылғыға байлау шақыруларымен жүзеге асырады.

Артықшылығы — ерекшелік сақталған шлюзге емес, қосылымға ереді. Желі өзгерісі астыңғы жолды қайта жазады, ал қорғалған сокет онымен бірге жылжиды, өйткені ол ешқашан мекенжайға бекітілмеген. Маршрут кестесі таза қалады.

Бағасы — көрінушілік. Маршруттау кестесінде ерекшелікті ештеңе көрсетпейді, сондықтан хост маршрутын іздеген рецензент ештеңе таппайды және дизайн қауіпсіз емес деп қорытынды жасауы мүмкін. Қорғаныс клиент кодында және сол код орнататын саясат ережелерінде өмір сүреді.

Екеуінің арасында таңдау

Клиент қолдаса, сокет деңгейіндегі механизмді таңдаңыз, өйткені ол бекітілген маршрутты бұзатын желі өзгерістеріне төтеп береді. Ерекшелік басқа құралдарға көрінуі керек болса немесе клиент жақсырақ нәрсе ұсынбаса, хост маршрутын таңдаңыз.

Ешбір механизм сервер мекенжайының мүлдем қолжетімді болу қажеттігін жоймайды. Жеке шлюздің жария тыңдау мекенжайы бар және дәл сол мекенжай туннельден тыс қалуы керек. Оның артындағы ішкі желілер туннель пайда болғаннан кейін ғана қолжетімді болады.

Қайсысын таңдасаңыз да, оны туннельге ие компоненттің қасында ұстаңыз. Қолмен қосылған адасқан хост маршруты келесі желіге дейін жұмыс істейді, содан кейін ертеңгі жұмбақ үзіліске айналады.

Қатысты мақалалар