WireGuard не испраќа DNS: сервирање приватна BIND зона
Ракувањето носи клучеви и дозволени IP, никогаш резолвер. Еве готова приватна зона BIND 9 плус клиентска политика по врска што ја прави да се реши.
Го подигнавте 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 ги покрива контролите за слушање и прашања употребени погоре, и тоа е вистинското место за потврдување на однесувањето за вашата инсталирана верзија.
Следен чекор: додајте го зголемувањето на серискиот број на зоната и командите за проверка во вашата процедура за промени, за да не може уредување на запис да стигне во продукција непроверено.