Дайте домашньому VPN власні DNS-записи для nas.home.arpa
Опублікуйте одне ім'я з dnsmasq, спрямуйте резолвер через WireGuard, а потім виберіть між передачею DNS усьому клієнту та split-DNS лише для home.arpa.
Коли тунель піднято, останнім кроком зазвичай стає ім'я, яке працює, замість адреси, яку ви вставляєте в закладку. Запис хоста в dnsmasq плюс адреса резолвера, до якої клієнт може дістатися, роблять це двома файлами і без multicast. Рішення, яке справді потребує роздумів, вужче: чи клієнт надсилає весь DNS через домашній резолвер, чи лише імена під home.arpa? Усе нижче передбачає схвалене налаштування WireGuard з клієнтом Linux і лабораторним резолвером, яким домашній адміністратор уже керує.
Три способи дати клієнту резолвер
| Approach | Scope | Cost |
|---|---|---|
DNS = in the wg-quick interface | the client's general DNS while the tunnel is up | every name in the house now depends on the tunnel |
Platform split-DNS for home.arpa | only that suffix | more configuration per client platform |
Manual dig @resolver | one query at a time | fine for testing, useless for applications |
Для ноутбука, який час від часу підключається до тунелю, split-DNS є кращим типовим вибором: він тримає звичайні інтернет-імена на резолвері, якому машина вже довіряє. Для машини, що існує для доступу до домашніх служб, проштовхування резолвера простіше, і ціна охоплення не має значення.
Опублікуйте запис на резолвері, який володіє зоною
Тримайте ролі окремо, перш ніж писати конфігурацію: адреса клієнта VPN, резолвер і служба — це три різні хости з трьома різними завданнями. У цій лабораторії це 10.77.0.2 для клієнта, 192.168.50.53 для dnsmasq і 192.168.50.20 для NAS, а тунель маршрутизує домашню LAN.
listen-address=127.0.0.1,192.168.50.53
bind-interfaces
local=/home.arpa/
host-record=nas.home.arpa,192.168.50.20
Рядок host-record дає адресу, а рядок local= утримує невідомі питання про home.arpa усередині цього резолвера, замість того щоб пересилати їх вище. Спершу прочитайте наявну конфігурацію і узгодьте все, що вже визначає сервер, інтерфейс або той самий локальний домен; нашарування фрагмента на суперечливий дає резолвер, який весело завантажується і відповідає неправильно. Посібник dnsmasq визначає обидві директиви та керування прослуховуванням.
Потім перевірте службу, що працює, а не файл. Перевірка конфігурації плюс перезапуск — це мінімум, а дійсна відповідь — те, що повертає запит.
Маршрутизуйте резолвер, а не лише вебсторінку
AllowedIPs у WireGuard вирішує, які адресати потрапляють у тунель. Якщо адреса резолвера опиняється поза ним, запит виходить звичайним маршрутом і ніколи не досягає dnsmasq, хоча сам NAS доступний. Уключіть адресу резолвера або префікс LAN, який її містить, і перевірте політику пересилання шлюзу на іншому боці.
Дозвольте UDP і TCP на порту 53 з авторизованого діапазону тунелю, зі зворотним шляхом до адреси тунелю клієнта. Не пересилайте порт 53 з WAN, щоб полегшити тестування: відкритий рекурсивний резолвер на домашньому підключенні знаходять протягом годин. Прив'язка до інтерфейсу сама по собі не є політикою доступу.
Перевірте відповідь до застосунку
Спершу запитайте резолвер напряму, потім систему, потім застосунок. Кожен крок ізолює одну ланку в ланцюгу, і різниця між ними — це діагноз.
dig @192.168.50.53 nas.home.arpa. A
dig +tcp @192.168.50.53 nas.home.arpa. A
getent ahostsv4 nas.home.arpa
curl -sS --max-time 5 http://nas.home.arpa/ -o /dev/null -w '%{http_code}\n'
TCP-запит варто запустити, бо усічена відповідь UDP змушує повторити, а політика, що відкидає TCP 53, породжує збої, які виглядають періодичними. Крок getent показує, що насправді робить конфігурація резолвера машини, а це не завжди те, що ви надіслали.
Вирішіть, що відбувається, коли тунель опущено
Якщо загальний DNS клієнта вказує на 192.168.50.53, будь-яке розв'язання імен перестає працювати, коли тунель не піднято. Це прийнятно на машині, яка корисна лише з тунелем, і неприйнятно на ноутбуці, який також користується Wi-Fi у кав'ярні. Split-DNS повністю обходить це питання, бо лише пошуки home.arpa залежать від домашнього резолвера.
Пам'ятайте, що це за ім'я: home.arpa зарезервовано для житлових мереж і не є глобально унікальним, тому інша мережа може законно використовувати те саме ім'я. Це локальна зручність, а не надійний ідентифікатор. Підтримуйте запис актуальним, коли служба переїжджає, і видаляйте політику резолвера, коли лабораторію виводять з експлуатації, замість того щоб залишати ноутбук, який указує на адресу, до якої він може дістатися лише через тунель, якого більше немає.