Публічні DNS у домашній мережі потрібні не для магії, а для трьох речей: стабільнішого резолвінгу, зрозумілішої поведінки мережі і, в окремих випадках, обходу слабкого DNS від провайдера. Тут розберемо, коли заміна DNS справді має сенс, як її зробити на Linux або роутері, як перевірити затримку і де цей підхід уже не вирішує проблему.
DNS – це шар, який перетворює доменні імена на IP-адреси. Якщо він працює повільно або криво, відкриття сайтів починає «підвисати» ще до встановлення з’єднання. При цьому сам канал може бути нормальним. У homelab це особливо помітно, коли частина сервісів іде назовні, частина – у локальний домен, а провайдерський резолвер поводиться нестабільно.
Коли публічні DNS справді доречні
Найтиповіший сценарій – DNS від провайдера відповідає повільно або періодично відвалюється. Другий – хочеться винести резолвінг з інфраструктури провайдера в окремий сервіс. Третій – на роутері або окремому Linux-хості треба явно задати резолвери для всієї мережі.
Але тут є межа. Заміна DNS не прискорить повільний аплінк, не зменшить RTT до віддаленого сервера і не замінить VPN. Якщо блокування йде на рівні маршрутизації, SNI чи DPI, самі публічні DNS проблему не закриють.
Які публічні DNS є в практичному списку
Для домашнього використання зазвичай дивляться на кілька відомих варіантів.
- Google Public DNS – 8.8.8.8 і 8.8.4.4. Офіційний сайт: Google Public DNS.
- OpenDNS – 208.67.222.222 і 208.67.220.220. Офіційний сайт: OpenDNS.
- DNS.WATCH – 82.200.69.80 і 84.200.70.40. Офіційний сайт: DNS.WATCH.
- Comodo Secure DNS – 8.26.56.26 і 8.20.247.20. Офіційний сайт: Comodo Secure DNS.
- OpenNIC – мережа альтернативних резолверів, де вузол обирають зі списку. Офіційний сайт: OpenNIC.
Ще часто згадують Norton ConnectSafe та Level3 DNS. Але для практичного вибору важливий не сам бренд, а те, чи сервіс зараз доступний, стабільний і чи влаштовує вас його політика. Якщо потрібен передбачуваний результат, не варто брати список навмання. Краще перевірити 2-3 варіанти зі своєї точки.
За якими критеріями вибирати публічні DNS
Затримка резолвінгу
Чим менший час відповіді, тим менше затримка на етапі DNS lookup. Це не завжди дає драматичний приріст, але на повсякденній роботі різниця між «живим» і «ватним» резолвером відчувається.
Стабільність
Один швидкий тест мало що дає. Буває, що резолвер вдень відповідає добре, а ввечері сипле timeouts. Для домашньої мережі стабільність важливіша за рекордний мінімум у мілісекундах.
Фільтрація і політика
OpenDNS і Comodo historically асоціюються з додатковими механізмами захисту. Це може бути корисно, якщо хочеться базової фільтрації на рівні DNS. Але в homelab така логіка іноді заважає. Особливо коли є нестандартні домени, self-hosted сервіси або власна split-DNS схема.
Керованість
Якщо мережа маленька, достатньо прописати DNS на роутері. Якщо є окремі VLAN, локальна зона, контейнерні сервіси або внутрішні записи, зовнішні публічні DNS краще ставити не напряму клієнтам, а через свій локальний forwarder.
Як налаштувати публічні DNS у Linux
Найпростіший механізм – файл /etc/resolv.conf. У ньому адреси задаються директивою nameserver.
nameserver 8.8.8.8 nameserver 8.8.4.4
Проблема в тому, що цей файл часто перегенеровується NetworkManager, systemd-resolved або DHCP-клієнтом. Тому ручна правка може зникнути після перезавантаження або перепідняття інтерфейсу.
Якщо система керується NetworkManager, DNS краще задавати в параметрах конкретного підключення. На десктопі – через GUI. На сервері – через nmcli або інший штатний механізм дистрибутива. Суть одна: задаєте статичний список резолверів у профілі підключення, а не правите тимчасовий файл.
Якщо DNS треба задати для всієї домашньої мережі, логічніше робити це на роутері. Тоді клієнти отримають нові адреси через DHCP, і не доведеться лазити по кожному хосту окремо.
Покрокове налаштування публічні DNS у домашній мережі
- Виберіть 2-3 кандидати. Не один.
- Перевірте затримку резолвінгу з вашого Linux-хоста.
- Порівняйте не лише швидкість, а й стабільність кількох запитів підряд.
- Пропишіть обраний DNS у профілі мережевого підключення або на роутері.
- Перепідніміть інтерфейс або оновіть DHCP-лізинг.
- Переконайтеся, що система реально використовує нові резолвери.
- Залиште другий DNS як резервний, але не міксуйте випадкові сервіси без причини.
Останній пункт важливий. Якщо primary і secondary мають різну політику фільтрації або різну якість кешу, поведінка мережі буде плаваючою. Це особливо неприємно при діагностиці.
Як перевірити публічні DNS на Linux
Базовий спосіб – nslookup із заміром часу. Це простий практичний тест, який показує, скільки займає відповідь конкретного резолвера.
time nslookup www.google.com 208.67.222.222
Сенс команди простий: домен для перевірки й адреса DNS-сервера, який тестується. У відповіді цікавить не лише сам lookup, а й загальний час виконання. Прогнати таку перевірку варто для кількох серверів і по кілька разів.
Що дивитися:
- чи немає timeout;
- чи не стрибає час відповіді занадто сильно;
- чи немає дивних редиректів або підміни відповідей;
- чи збігається результат на повторних запитах.
Де зазвичай ламається
Ручна правка /etc/resolv.conf
Це класична пастка. Файл змінюється, все працює, після reboot – знову старий DNS. Причина майже завжди в тому, що конфіг генерується автоматично.
Змішування локального і зовнішнього DNS
Якщо у вас є внутрішні імена, локальні зони або reverse lookup для своєї мережі, пряме перемикання клієнтів на публічні DNS часто ламає локальне ім’я-резолвінг. У такій архітектурі правильніше підняти локальний DNS-forwarder і вже він буде ходити в зовнішні резолвери.
Надія на обхід будь-яких блокувань
Іноді зміна DNS справді прибирає просте блокування на рівні провайдерського резолвера. Але це не універсальний інструмент. Якщо обмеження працює глибше, результату не буде.
Оцінка по одному тесту
Разовий швидкий lookup ще нічого не доводить. Тестуйте в різний час і бажано з тих вузлів, де це реально важливо: workstation, сервер, роутер, окремий VLAN-шлюз.
Коли вже краще не публічні DNS, а інший підхід
Якщо у вас є self-hosted сервіси, локальні домени, DNS-overrides для контейнерів, split-horizon DNS або Pi-hole-подібна схема, пряме використання публічних DNS клієнтами – тупиковий варіант. У такому випадку краще мати локальний рекурсор або forwarder, а зовнішні публічні DNS використовувати як upstream.
Так простіше контролювати кеш, локальні записи і діагностику. До того ж не доведеться пояснювати, чому частина імен відкривається тільки з одних хостів, а з інших – ні.
Що вибрати на практиці
Якщо потрібен просто передбачуваний зовнішній резолвер, почати можна з Google Public DNS або OpenDNS. Якщо важлива мінімалістична модель без зайвих нашарувань, можна перевірити DNS.WATCH. Якщо цікавить альтернативна мережа вузлів, дивіться OpenNIC, але там треба уважніше обирати конкретний сервер.
Для домашньої мережі нормальний підхід такий: спершу перевірити затримку, потім стабільність, і лише після цього міняти DNS на роутері або в Linux-профілі. Без цього «найкращий DNS» перетворюється на випадковий DNS.