Системалык науанын белгисинен эки бузулуу бирдей көрүнөт: туннелге кирген трафик жана анын айланасынан унчукпай өткөн трафик. Клиент эки учурда тең Connected көрсөтөт, анткени Connected туннелдин интерфейси бар экенин жана клиент каалаган маршруттарды орнотконун гана билдирет. Бир колдонмонун бир пакети ошол маршруттарды колдондубу, бул өзүнчө суроо жана ага стектин башка жеринде жооп берилет. Төрт өлчөө анын көбүн чечет — маршрутту издөө, биринчи секирик, физикалык адаптерде кармоо жана сырттан байкоо — ал эми сервердин өз сессия көрүнүшү калганын жабат.

Пакет жүрө турган маршруттан баштаңыз

Маршруттоо таблицасы — чечимдин өзү, ошондуктан баарын окуп божомолдоонун ордуна андан бир багыт тууралуу сураңыз. Linuxта ip route get өзөк тандаган интерфейсти жана булак дарегин атайт:

ip route get 203.0.113.10
ip route get 10.20.5.7

Windowsта Find-NetRoute -RemoteIPAddress 203.0.113.10 route print -4-төн пайдалуураак, себеби ошондой: ал жеңген маршрутты билдирет, бардык маршруттарды эмес. Ошентсе да таблицаны анын 0.0.0.0 сабы үчүн бир жолу окуңуз. Ал жерде /1 түгөйү болсо, толук туннелдин клиенти демейки маршрутту кайра жазган: OpenVPNдин redirect-gateway def1 параметри туннел аркылуу 0.0.0.0/1 жана 128.0.0.0/1 орнотот, бул физикалык демейки маршрутту жок кылбастан эң узун префикс дал келүү боюнча бар болгон 0.0.0.0/0-ды жеңет. Ошондуктан эки демейки маршрут катар жашай алат, ал эми баары баары бир туннелге кирет.

Эки детал таблицаны жалганчыга айландырат. Биринчиден, демейки маршруттардын санына эмес, дал келген префикске караңыз, анткени жеңүүчүнү интерфейс метрикасы же /1 түгөйү аныктайт. Экинчиден, мурунтан бар болгон байланыш өзү түзүлгөн жолду сактайт; туннел көтөрүлгөндөн кийин ачык сессия кайра коюлганга чейин эски маршрутту колдоно алат, ошондуктан кайра туташуу маршруттоо көйгөйүн чечкендей көрүнөт. Иштеп жаткан клиент — ps ax | grep openvpn — процесстин башталганын гана далилдейт.

Бир ички жана бир ачык атты көзөмөлдөңүз

Маршрутту издөө ниетти көрсөтөт; жол жеткирүүнү көрсөтөт. Туташкан абалда сөзсүз ички болушу керек болгон атты жана болбошу керек атты көзөмөлдөп, биринчи секирикти салыштырыңыз:

traceroute intranet.corp.example
traceroute 1.1.1.1

Экөө үчүн бирдей биринчи секирик ички ат туннелге эч качан кирбегенин жана бузулуу анын үстүндө экенин билдирет, адатта бул ачык дарекке чечилген ат же эч качан орнотулбаган маршрут. Ички трафик 10.8.0.1 аркылуу чыгып, ачык трафик 192.168.1.1 аркылуу чыкса, бөлүнгөн туннель өзүнө конфигурацияланган ишти так аткарат. VPN дарбазасына жетип, анан убакыт ашууларын гана кайтарган из адатта кайтуу жолунун же сервердин брандмауэринин көйгөйү, жок болуп турган багыттоо маршруту эмес.

Сүзүлгөн ICMP бул текшерүүнү жалганчыга айландырат: эки изде тең жылдызчалар өлүк туннелге окшошот жана адатта бул брандмауэр. Мүмкүн болгон жерде TCP портун текшериңиз — Linuxта traceroute -T -p 443 — жана из кайсы чечүүчү жооп бергенин айтпай турганын эстеңиз: ат жергиликтүү чечилип, баары бир туннел аркылуу жеткиликтүү болушу мүмкүн.

Туннелде эмес, физикалык адаптерде кармаңыз

Физикалык байланыш — тармак чын эле эмнени көрөрүн көрсөткөн жалгыз жер. Туннел көтөрүлгөндө кеңсеге багытталган сессия VPN серверине багытталган шифрленген жүк катары көрүнүшү керек, 10.20.5.7-га туташуу катары эмес:

sudo tcpdump -ni eth0 udp port 53
sudo tcpdump -ni eth0 host 10.20.0.5

Биринчи чыпка жергиликтүү чыккан ат чечүүнү кармайт, бул эң кеңири тараган жана эң тынч агым — барак баары бир жүктөлөт, чечүүчү сурамды гана көрдү. Экинчиси туннелдин ичинде гана болушу керек болгон ички дарекке карай жөнөкөй трафикти кармайт. Windowsта pktmon ушундай эле ишти драйверсиз аткарат: pktmon filter add -p 53, анан pktmon start --capture --pkt-size 128, анан pktmon stop жана pktmon format pktmon.etl -o capture.txt. Бул флагдар Windows курулуштарынын ортосунда бир аз айырмаланат, ошондуктан синтаксиске ишенерден мурун pktmon filter add /? текшериңиз.

Агымдарды табуу үчүн физикалык интерфейсти кармаңыз; туннелде кармоо сиз аларды ошол жерде деп эсептеген пакеттерди камтыйт, ал эми серверде булагы дарбаза болгон окулбаган тышкы пакеттерди камтыйт. Кайсы интерфейстеги байт эсептегичтер пакеттерди сүрөттөйт, программаларды эмес; трафикти процесске байланыштыруу үчүн сокеттерди процесстерге картага байланыштырган монитор керек.

Сырткы кызматтан сураңыз, анан ар бир колдонмо үчүн кайра сураңыз

Чыгууну далилдеген жалгыз текшерүү — сырттан келген жооп: өзү көргөн булак дарегин кайтарган кызмат. Аны интерфейсти тандоого боло турган кабыктан иштетиңиз жана эки жолу иштетиңиз:

sudo curl --interface tun0 https://example.net/ip
sudo curl --interface eth0 https://example.net/ip

Ар башка жооптор сизге эки жолдун далилин жана белгилүү бир колдонмону текшерүү жолун берет: аны байланыштырыңыз же бир маршрутту камтыган тармактык ат мейкиндигинде иштетиңиз да, алыскы тарап кайсы даректи жазарын көрүңүз. Окшош жооптор кызыктуу бузулуу: же байланыштыруу таасир эткен жок, же хост менен алыскы тараптын ортосундагы бир нерсе жетээрден мурун булак дарегин кайра жазат. Windowsта curl --interface адаптердин атын эмес, дарегин каалайт.

VPN дарегин билдирген браузер браузерди далилдейт. Почта клиенти, пакет менеджери, камдык көчүрмө агенти же экинчи браузер профили ар бири башка жол тандашы мүмкүн, өзгөчө прокси жөндөөсү же бөлүнгөн туннелдин маршруту алардын бирин жапканда. Даректин өзгөрүшү өз алдынча агымдын далили эмес: жүк теңдеткич көргөн чыгууга жараша башкача жооп бериши мүмкүн, ошондуктан баракты эмес, жазылган булак дарегин салыштырыңыз.

Түгөйдү ырастоо үчүн сервердин көрүнүшүн колдонуңуз

Сервер башка суроого жооп берет: түгөй туташканбы, канча ташыды жана сессия кайра башталдыбы. Серверде түгөй активдүү, ал эми клиенттин эсептегичтери дээрлик кыймылдабаса, бул колдонмонун трафиги туннелге кирбей жатканын билдирет, клиент таблицасы эмне десе да. Ал эми эч нерсе иштебейт деген колдонуучу үчүн көп маалымат ташыган түгөй — башка иликтөө.

Бул жерде эки капкан бар. Маскаланган туннель ар бир агымды дарбазадан келгендей көрсөтөт, ошондуктан журналдар жана ар бир клиент боюнча эсеп бир дарекке чогулат. Ал эми клиент жергиликтүү хост катары каралат, ошондуктан бирөөнүн VPN аркылуу файл көчүрүп жатканы тууралуу суроого сервердеги файл бөлүшүү трафиги же сервердеги хост аудити жооп берет — туннелди байкоо акыркы чекиттерди жана көлөмдү берет, файл аттарын эмес.

Дизайн чечимин агымдан ажыратыңыз

Туннелден сырткары баары агым эмес. Байланыш-жергиликтүү жана берүү трафиги дизайн боюнча жергиликтүү калат, multicast аркылуу табылган принтер LANда жарыялоону улантат, ал эми DHCP жергиликтүү чыгышы керек. Белгилүү бир интерфейске байланган колдонмо маршруттоо таблицасын атайылап айланып өтөт, муну брандмауэр эрежеси, ат мейкиндиги же саясат маршруту гана өзгөртөт.

IPv6 тизмеде өзүнүн сабына татыктуу. Тек IPv4 ташыган туннель кош стектүү хостко экинчи колдонууга боло турган жол калтырат, ал эми кош стектүү багыт ошону артык көрөт — DNSти кошкондо, эгер чечүүчү IPv6 аркылуу жеткиликтүү болсо. IPv4 жыйынтыгын толук деп эсептеерден мурун адаптерде IPv6ны өчүрүңүз же туннель аны ташырын ырастаңыз.

Текшерүүлөр дал келбесе, дал келбестик адатта бузулууну атайт:

What you seeWhat it meansNext step
The route picks tun0 but the capture shows cleartext to 10.20.5.7Something bypassed the table: a bound app, a policy route or a session older than the tunnelReset the flow, check the app bind, check the ip rule list
The route picks eth0 for an internal nameThe name resolves to a public address, or the route was never installedCompare the resolved address with the routes the server pushes
The capture shows DNS to the LAN resolverResolver leak: data is tunneled, lookups are notPoint the resolver inside, or push it from the server
All four checks agree and one app still failsPath selection is fine; suspect MTU, a per-app proxy or the far endTest the same destination from a known-good client

Иштеген тартип: маршруттоо таблицасын туташуудан мурун жана кийин сактаңыз, бир ички жана бир ачык атты көзөмөлдөңүз, физикалык адаптерде DNS кармаңыз, белгилүү бир колдонмо үчүн кабыктан чыгуу дарегин кайтарыңыз, анан көлөм үчүн серверди окуңуз. Биринчи төртөө дал келсе, туннель сиз ойлогон нерсени ташып жатат жана калган көйгөй анын үстүндө. Экөө дал келбесе, дал келбеген түгөй — бузулуу, белги эмес.

Тектеш макалалар