Подигли сте 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, што је згодно за вас и изненађење за све остале. Држите тилду унутар наводника, јер без наводника она је shell експанзија која чека да покаже на ваш кућни директоријум.

Примените измену преко менаџера који поседује интерфејс, па поново повежите везу. Не покрећите другу инстанцу wg-quick за исти интерфејс; два власника ће се свађати око рута и један од њих ће победити у најгорем тренутку.

Проверите пут пре имена

Упитајте име са клијента и потврдите и одговор и сервер који га је дао:

resolvectl query portal.corp.example

Ако ово врати 10.60.0.20, DNS уговор је испуњен. Ако време истекне, прво проверите руту до 10.90.0.1, затим правило заштитног зида, затим allow-query на серверу. Неуспеси решавања имена у овом склопу су готово увек доступност или ACL, а не зона-датотека. Радите од клијента ка споља, јер сервер не може да вам каже зашто упит никада није стигао.

Запамтите да апликацији и даље треба сопствена рута и сопствена дозвола за услугу. Решено име које показује на недоступну адресу је други квар у истој одећи.

Шта још увек није аутоматско

Апликације са сопственом резолвер логиком потпуно игноришу системски резолвер, и никаква количина nmcli то не мења. Поставке које валидирају DNSSEC траже експлицитан дизајн сидра поверења за приватну зону; одговор није општа инструкција да се валидација искључи. Тестирајте истим клијентским софтвером који користе ваши корисници, а не алатом која случајно користи системски резолвер. Разлика између тих двеју је цео извештај о грешци.

Флоте могу аутоматизовати ову клијентску политику кроз свој систем за провизионисање, али политика остаје одвојен објекат са власником. Упутство за BIND 9 покрива контроле слушања и упита коришћене горе и право је место да потврдите понашање за своју инсталирану верзију.

Следећи корак: додајте повећање серијског броја зоне и контролне команде у своју процедуру промена, да измена записа не може доћи у продукцију непроверена.

Повезани чланци