Сіз WireGuard-ты көтердіңіз, туннель трафикті өткізеді, ал ішкі атау әлі шешілмейді. Келесі қадам әдетте WireGuard конфигурациясында DNS параметрін іздеу, кейбір басқа 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 шешіле бастайды, бұл сізге ыңғайлы, ал қалғандарға таңсық. Тильданы тырнақшаның ішінде ұстаңыз, өйткені тырнақшасыз ол үй каталогыңызға нұсқауды күтіп тұрған shell кеңейтуі.

Өзгерісті интерфейсті иеленетін менеджер арқылы қолданыңыз, содан кейін қосылымды қайта қосыңыз. Сол интерфейс үшін екінші wg-quick данасын іске қоспаңыз; екі ие маршруттар үшін таласады және олардың бірі ең нашар сәтте жеңеді.

Атаудан бұрын жолды тексеріңіз

Атауды клиенттен сұрап, жауапты және оны жасаған серверді растаңыз:

resolvectl query portal.corp.example

Егер бұл 10.60.0.20 қайтарса, DNS шарты орындалды. Егер уақыт бітсе, алдымен 10.90.0.1-ге дейінгі маршрутты, содан кейін брандмауэр ережесін, содан кейін сервердегі allow-query тексеріңіз. Бұл конфигурацияда атауларды шешу сәтсіздіктері әдетте қолжетімділік немесе ACL, аймақ файлы емес. Клиенттен сыртқа қарай жұмыс істеңіз, өйткені сервер сұрау неге келмегенін айта алмайды.

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

Әлі автоматты емес нәрселер

Өз резолвер логикасы бар қолданбалар жүйелік резолверді мүлдем елемейді, және nmcli қанша болса да оны өзгертпейді. DNSSEC-ті тексеретін орналастырулар жеке аймақ үшін сенім тірегінің нақты дизайнын қажет етеді; жауап — тексеруді өшіру туралы жалпы нұсқау емес. Пайдаланушыларыңыз іске қосатын клиенттік бағдарламамен сынаңыз, кездейсоқ жүйелік резолверді қолданатын құралмен емес. Осы екеуінің айырмашылығы — бүкіл қате есебі.

Флоттар бұл клиент саясатын өздерінің қамтамасыз ету жүйесі арқылы автоматтандыра алады, бірақ саясат иесі бар бөлек нысан болып қалады. BIND 9 анықтамасы жоғарыда қолданылған тыңдау және сұрау бақылауларын қамтиды және орнатылған нұсқаңыз үшін мінез-құлықты растаудың дұрыс орны.

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

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