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

Прасунутая опцыя — гэта не запыт

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

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

Праверце, што інтэрфейс сапраўды ўтрымлівае

У Linux сістэмным рэзалверам можа быць звычайны файл, NetworkManager або systemd-resolved, і тое, хто з іх валодае ім, вызначае, дзе асядзе прасунуты сервер. Працэс OpenVPN з каманднага радка сам не абнаўляе сістэмны рэзалвер, таму дакументаваная інтэграцыя — гэта скрыпт up/down або мэнэджар злучэнняў, які ўжо ўмее прымяняць налады. Запуск абодвух — эфектыўны спосаб стварыць гонку.

resolvectl status
cat /etc/resolv.conf

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

Прасочыце адзін запыт за межы машыны

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

sudo tcpdump -ni tun0 port 53
sudo tcpdump -ni any port 53

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

Файрвол, які прымае толькі свой DNS

Камерцыйныя кліенты часам усталёўваюць уласныя ланцугі фільтрацыі. Адзін дакументаваны ўзор дазваляе DNS да ўласнага рэзалвера кліента і адкідвае ўвесь астатні трафік UDP на порт 53, які спрабуе пакінуць не-loopback інтэрфейс, уключаючы трафік, які карыстальнік наўмысна накіраваў у іншае месца. Запыты дэмана знікаюць без следу, што чытаецца як збой рэзалвера, а не як фільтр.

sudo iptables -S OUTPUT
sudo iptables -S | grep -i -E 'dns|53'

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

sudo iptables -I OUTPUT 1 -p udp --dport 53 -d 172.20.8.1 -j ACCEPT

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

Чаму старонка ўцечкі даказвае менш, чым здаецца

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

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

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