Хтосьці паведамляе, што VPN "блакуе UDP", і гэтая фраза хавае дзве цалкам розныя заявы. Адна датычыцца транспарту, які бачыць сетка доступу, другая — пакетаў праграмы пасля іх расшыфроўкі ўнутры тунеля. Зашыфраваны тунель можна фільтраваць звонку без любога ключа, а ўнутраная праграма UDP можа збаіць па прычынах, якія не маюць нічога агульнага з фільтраваннем. Вызначце, якую заяву вы правяраеце, перш чым збіраць доказы.

Два загалоўкі, адно слова

У разгортванні IPsec з NAT-traversal знешні пакет — гэта UDP, адрасаваны паміж двума канцавымі пунктамі VPN, звычайна на порце 4500. Унутры зашыфраваная карысная нагрузка нясе ўсё, што перасылае тунель, і гэта само можа быць TCP або UDP. Такім чынам, слова UDP з'яўляецца двойчы з рознымі значэннямі і рознай бачнасцю.

Прамежкавая сетка бачыць знешні загаловак і нічога з унутранага. Яна можа дазволіць, фармаваць або адкінуць знешні паток, і для гэтага ёй не трэба нічога расшыфроўваць. Гэтая асіметрыя — уся прычына блытаніны паміж дзвюма заявамі: адно і тое ж слова апісвае тое, што фільтруе сетка, і тое, што дасылае праграма. Запісвайце ўзровень побач са словам кожны раз, калі фіксуеце выснову, і блытаніна пераважна знікае.

Унутраны загаловак робіцца бачным толькі на прымаючым канцавым пункце, пасля расшыфроўкі. З гэтага моманту пакет перасылаецца як любы іншы, з улікам маршрутаў, палітыкі і ўласнага фільтравання канцавога пункта. Гэта асобныя рашэнні, якія прымаюць розныя прылады.

Што сетка ўсё яшчэ можа бачыць

Шыфраванне хавае карысную нагрузку і ўнутраны загаловак транспарту, а не сам факт існавання патоку. Адрасы канцавых пунктаў, парты, памеры пакетаў і час застаюцца бачнымі, і гэтага дастаткова, каб эўрыстычна класіфікаваць трафік або заблакаваць канкрэтнае прызначэнне.

sudo tcpdump -ni eth0 'udp port 4500'
sudo tcpdump -ni tun0 'udp port 5201'

Першы захоп паказвае знешні паток на фізічным інтэрфейсе, а другі — унутраны паток на інтэрфейсе тунеля. Запуск абодвух адначасова адказвае на пытанне напрамкі: калі знешні паток існуе, а ўнутраны не, праграма нічога не адправіла ў тунель. Калі існуюць абодва, а нічога не вяртаецца, праблема за межамі тунеля — у пункце прызначэння або на зваротным шляху.

RFC 3948 вызначае знешнюю інкапсуляцыю UDP, а спецыфікацыя ESP вызначае абаронены макет унутры яе. Ні адзін дакумент не абяцае, што сетка доступу прапусціць знешні паток, і менавіта таму тэст дасяжнасці на знешнім картэжы варта правесці раней за любую тэорыю пра ўнутраны. Заблакаваны знешні картэж дае тунель, які ніколі не ўтвараецца, а не тунель, які ўтвараецца і потым губляе адну праграму.

Чаму адна праграма UDP збаіць унутры працоўнага тунеля

Тунель, які нясе вэб-праграму, але не нясе праграму UDP, мае некалькі праўдападобных тлумачэнняў, і фільтраванне ўнутранага пратаколу правайдарам не першае з іх. Найчасцейшая прычына — пакрыццё: дзве праграмы не трапляюць у адзін і той жа тунель, бо маршрут да прызначэння UDP адсутнічае або правілы split-tunnel кліента выключаюць яго.

Другая — канцавы пункт. Сервер VPN, які дазваляе спіс пратаколаў, міжсеткавы экран прызначэння або служба, якая ніколі не слухае чаканы порт, — усе яны дадуць тайм-аўт, які выглядае гэтак жа, як сеткавая блакіроўка.

Трэцяя — памер пакета. Праграмы UDP часта дасылаюць большыя датаграмы, чым вэб-запыт, а інкапсуляцыя памяньшае даступны MTU, таму пасля паспяховага рукапоціску можа настаць цішыня на першай поўнапамернай нагрузцы. Гэты ўзор лёгка прачытаць як блакіроўку, бо малыя пакеты праходзяць, а вялікія знікаюць. Хуткая праверка MTU вырашае гэта менш чым за хвіліну, і адказам звычайна бывае драбнейшая нагрузка або выпраўлены MSS, а не сеткавы фільтр.

ping -M do -s 1400 -c 2 10.60.0.20
iperf3 -u -c 10.60.0.20 -p 5201 -b 1M -t 5

Першая каманда правярае, ці выжывае вялікі пакет на шляху з адключанай фрагментацыяй, што хутка выкрывае праблему MTU. Другая дасылае малы абмежаваны паток UDP і паведамляе пра страты і джытар. Паток, які пачынаецца і потым спыняецца, указвае на памер, а не на блакіроўку.

Паведамляйце ўзровень, а не пратакол

Запішыце выснову ў адной з трох формаў: знешняя дастаўка не ўдалася, унутраная перасылка не ўдалася або праграма не ўдалася. Кожная мае іншага ўладальніка, і змешванне іх дасылае заяўку не той камандзе.

Змена лакальнага порта не можа стварыць адпаведны слухач на далёкім канцы, таму кліенцкі абыход, які выглядае дапаможным, звычайна сведчыць пра тое, што першапачатковае прызначэнне было няправільным. Гэтак жа прапанаваны альтэрнатыўны профіль даказвае нешта пра дасяжнасць і нічога пра тое, ці правільна наладжана праграма.

Трымайце выснову асобна ад назірання. Аналіз трафіку можа падказаць, што ўяўляе сабой паток, не расшыфроўваючы яго, і гэта карысная выснова, але гэта не тая ж заява, што чытанне ўнутранага загалоўка. Укажыце, што менавіта вы маеце.

Падобныя артыкулы