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

Тунель і рэзалвер — розныя дамовы

WireGuard наўмысна малы. Ён рухае пакеты для адрасоў, якія вы пазначылі, і аўтэнтыфікуе партнёраў; усё вышэй за гэты пласт — ваша праектаванне. OpenVPN можа перадаць dhcp-option DNS, бо яго канал кіравання пераносіць канфігурацыю, і гэтая розніца збівае тых, хто пераходзіць паміж імі.

Такім чынам, працоўны тунель нічога не кажа пра развязанне імёнаў. Кліент можа мець бездакорны маршрут да 10.90.0.1 і ўсё адно адпраўляць запыты да публічнага рэзалвера; таму сімптом выглядае як “VPN зламаў DNS”, хоць DNS ніколі не быў накіраваны на VPN.

Абслугоўвайце зону, не робячыся рэкурсіўным рэзалверам

Бок сервера — невялікая аўтарытэтная зона, а не агульны рэзалвер. У гэтым прыкладзе шлюз 10.90.0.1, кліенты 10.90.0.0/24, а праграма, якая вам патрэбна, адказвае на 10.60.0.20.

Далучыце гэтыя налады да існуючага блока options, а не стварайце другі:

options {
    listen-on { 127.0.0.1; 10.90.0.1; };
    listen-on-v6 { none; };
    allow-query { 127.0.0.1; 10.90.0.0/24; };
    allow-transfer { none; };
    recursion no;
};

Затым абвясціце зону і яе файл:

zone "corp.example" {
    type primary;
    file "/etc/bind/db.corp.example";
};
$TTL 300
@ IN SOA ns.corp.example. hostmaster.corp.example. ( 1 3600 600 604800 300 )
@      IN NS ns.corp.example.
ns     IN A  10.90.0.1
portal IN A  10.60.0.20

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

named-checkconf
named-checkzone corp.example /etc/bind/db.corp.example

Адкрыйце UDP і TCP 53 толькі на інтэрфейсе VPN. Публікацыя прыватнага аўтарытэта на публічным інтэрфейсе запрашае і запыты, і пералічэнне, а allow-transfer мусіць заставацца зачыненым, пакуль другасны сапраўды не мае патрэбы.

Накіруйце кліент на яго, для кожнага злучэння

Меркавана NetworkManager валодае злучэннем, а systemd-resolved з'яўляецца рэзалверам. Спачатку прачытайце існуючую палітыку, асабліва любы каранёвы дамен маршрутызацыі, бо запіс ~. перасягне тое, што вы збіраецеся дадаць.

nmcli connection modify wg-office +ipv4.dns 10.90.0.1
nmcli connection modify wg-office +ipv4.dns-search '~corp.example'

Тыльда — галоўны сімвал. Яна пазначае дамен як толькі-маршрут: імёны пад corp.example ідуць да DNS-сервера гэтага злучэння, і дамен не дадаецца як суфікс пошуку кароткага імені. Без яе ўвод portal пачынае развязваць portal.corp.example, што зручна для вас і нечакана для ўсіх іншых. Трымайце тыльду ўнутры лапак, бо без лапак яна — раскрыццё абалонкі, якое чакае, каб паказаць на вашу хатнюю дырэкторыю.

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

Праверце шлях раней за імя

Запытайце імя з кліента і пацвердзіце і адказ, і сервер, які яго выдаў:

resolvectl query portal.corp.example

Калі гэта вяртае 10.60.0.20, дамова DNS выкананая. Калі адбываецца тайм-аўт, спачатку праверце маршрут да 10.90.0.1, потым правіла брандмаўэра, потым allow-query на серверы. Збоі развязання імёнаў у гэтай канфігурацыі амаль заўсёды дасягальнасць або ACL, а не файл зоны. Працуйце ад кліента вонкі, бо сервер не можа сказаць вам, чаму запыт не прыйшоў.

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

Што ўсё яшчэ не аўтаматычна

Праграмы з уласнай логікай рэзалвера цалкам ігнаруюць сістэмны рэзалвер, і ніякая колькасць nmcli гэтага не зменіць. Разгортванні, якія правяраюць DNSSEC, патрабуюць яснага праекта давярэчага якара для прыватнай зоны; адказ не ў тым, каб агульнай інструкцыяй адключыць праверку. Тэстуйце тым жа кліенцкім праграмным забеспячэннем, якое выкарыстоўваюць вашыя карыстальнікі, а не інструментам, які выпадкова ўжывае сістэмны рэзалвер. Розніца паміж гэтымі двума і ёсць увесь зварот аб памылцы.

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

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

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