Name Server - Системные DNS серверы
Name Server - Системные DNS серверы
Данная страница описывает настройку системных DNS серверов (name-server) и списка доменов для поиска (domain-search) в VyOS. Эти параметры определяют, как система VyOS разрешает доменные имена для всех системных операций.
Обзор
Системные DNS серверы в VyOS используются для:
- Разрешения доменных имен для всех системных процессов
- Обновления пакетов через apt/dpkg
- NTP синхронизации (если NTP серверы указаны по имени)
- Загрузки образов контейнеров (Docker/Podman)
- VPN подключений к удаленным endpoint по имени
- Syslog отправки на удаленные серверы по имени
- Monitoring и alerting систем
- API вызовов к внешним сервисам
Важные замечания
Отличие от DNS forwarding:
system name-server- DNS для самой системы VyOSservice dns forwarding- DNS сервер, который VyOS предоставляет клиентам
Приоритет конфигурации:
- Статическая конфигурация
system name-serverимеет приоритет над DNS, полученными через DHCP - Если настроены оба, используются только статические серверы
- DHCP DNS используются только если
system name-serverне настроен
VRF ограничения:
- В текущих версиях VyOS нет способа принудительно направить системный DNS трафик через определенный VRF
- Системные DNS запросы используют default VRF независимо от настроек management VRF
Файл конфигурации:
- Конфигурация DNS записывается в
/etc/resolv.conf - Файл генерируется автоматически при commit, не редактируйте вручную
- Изменения применяются немедленно ко всем системным процессам
Конфигурация DNS серверов
Базовая настройка
IPv4 DNS серверы
# Добавить первый DNS сервер
set system name-server 8.8.8.8
# Добавить второй DNS сервер (резервный)
set system name-server 8.8.4.4
# Применить конфигурацию
commit
saveIPv6 DNS серверы
# Добавить IPv6 DNS сервер
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
commit
saveDual-stack конфигурация
# Смешанная конфигурация IPv4 + IPv6
set system name-server 8.8.8.8
set system name-server 8.8.4.4
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
commit
saveМножественные DNS серверы
VyOS поддерживает настройку нескольких DNS серверов. Порядок имеет значение - серверы опрашиваются последовательно в порядке добавления.
# Первый сервер - основной (используется первым)
set system name-server 192.168.1.53
# Второй сервер - резервный
set system name-server 192.168.1.54
# Третий сервер - fallback
set system name-server 8.8.8.8
commit
saveПоведение резолвера:
- При недоступности первого сервера автоматически используется второй
- При недоступности второго - третий
- Timeout на каждый сервер составляет 5 секунд по умолчанию
- Максимум 3 сервера рекомендуется (ограничение
/etc/resolv.conf)
Удаление DNS серверов
# Удалить конкретный DNS сервер
delete system name-server 8.8.4.4
# Удалить все DNS серверы
delete system name-server
commit
saveDomain Search List
Описание
Domain-search (список доменов для поиска) определяет суффиксы, автоматически добавляемые к неполным доменным именам при резолюции.
Принцип работы:
- При запросе короткого имени (например,
server1) система добавляет суффиксы из списка - Запросы выполняются последовательно:
server1.first-domain.com,server1.second-domain.com, и т.д. - При нахождении первого успешного разрешения поиск прекращается
- Полные доменные имена (с точкой в конце или содержащие точки) не модифицируются
Ограничения RFC:
- Максимум 6 доменов в списке
- Каждый домен: максимум 253 символа
- Допустимые символы: буквы, цифры, дефисы, точки
- Домен не может начинаться или заканчиваться дефисом
Конфигурация
Базовая настройка
# Добавить первый домен для поиска
set system domain-search vyos.io
# Добавить дополнительные домены
set system domain-search vyos.net
set system domain-search vyos.network
commit
saveРезультат в /etc/resolv.conf
# После применения конфигурации:
# nameserver 8.8.8.8
# nameserver 8.8.4.4
# search vyos.io vyos.net vyos.networkПроверка работы
# При настроенном domain-search: example.com
# Запрос короткого имени
vyos@router:~$ ping server1
# Система пробует: server1.example.com
# Запрос с точкой в конце (FQDN) - суффикс не добавляется
vyos@router:~$ ping server1.other-domain.org.
# Система запрашивает: server1.other-domain.org (без изменений)
# Запрос полного имени (содержит точки) - суффикс добавляется
vyos@router:~$ ping server1.local
# Система пробует: server1.local.example.com, затем server1.localУдаление domain-search
# Удалить конкретный домен
delete system domain-search vyos.network
# Удалить все домены
delete system domain-search
commit
saveПриоритет DNS конфигурации
Статическая vs DHCP конфигурация
VyOS поддерживает получение DNS серверов через DHCP на WAN интерфейсах, но статическая конфигурация имеет приоритет.
Поведение:
- Если настроены статические
system name-server- используются только они - Если статические серверы не настроены, используются DNS из DHCP
- Если DHCP не предоставляет DNS и нет статических - система использует встроенный fallback (127.0.0.1 для локального кэша DNS, если включен)
Пример 1: Только статические серверы
# Статическая конфигурация
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# DHCP на WAN интерфейсе (предоставляет DNS, но они игнорируются)
set interfaces ethernet eth0 address dhcp
commit
save
# Результат: используются только 8.8.8.8 и 8.8.4.4Пример 2: Только DHCP серверы
# Нет статической конфигурации name-server
# DHCP на WAN интерфейсе (предоставляет DNS)
set interfaces ethernet eth0 address dhcp
commit
save
# Результат: используются DNS серверы, полученные через DHCPПример 3: Гибридная конфигурация (не работает как ожидается)
# ОШИБКА: Попытка совместить статические и DHCP DNS
set system name-server 8.8.8.8
set interfaces ethernet eth0 address dhcp
# Результат: используется только 8.8.8.8, DHCP DNS игнорируютсяРекомендация:
- Для production систем используйте только статические DNS серверы
- DHCP DNS оставляйте для временных или тестовых конфигураций
- Не смешивайте оба подхода - это приводит к путанице
Переопределение DHCP DNS
Если нужно использовать статические DNS вместо DHCP:
# Отключить получение DNS через DHCP на интерфейсе
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 dhcp-options no-default-route
set interfaces ethernet eth0 dhcp-options reject nameserver
# Настроить статические DNS
set system name-server 8.8.8.8
set system name-server 8.8.4.4
commit
saveПримечание: Опция reject nameserver может быть недоступна в некоторых версиях VyOS. В таком случае просто настройте статические серверы - они будут иметь приоритет.
Облачные провайдеры
Yandex Cloud
Yandex Cloud предоставляет внутренние DNS серверы для резолюции внутренних имен виртуальных машин и сервисов.
Использование внутреннего DNS Yandex Cloud
# Внутренний DNS сервер Yandex Cloud (второй IP из подсети)
# Для подсети 10.128.0.0/24 это будет 10.128.0.2
set system name-server 10.128.0.2
commit
saveПринцип работы:
- Каждая подсеть в Yandex Cloud имеет встроенный DNS сервер на втором IP адресе
- Для подсети
10.128.0.0/24DNS:10.128.0.2 - Для подсети
192.168.1.0/24DNS:192.168.1.2 - Резолвит внутренние FQDN виртуальных машин:
vm-name.auto.internal
Использование публичных DNS Yandex
# Публичные DNS серверы Yandex (77.88.8.8)
set system name-server 77.88.8.8
set system name-server 77.88.8.1
commit
saveХарактеристики Yandex DNS:
- Адреса:
77.88.8.8,77.88.8.1 - Поддержка DNSSEC
- Фильтрация вредоносных сайтов (опционально)
- Низкая латентность для клиентов в России
Гибридная конфигурация Yandex Cloud
# Внутренний DNS для локальных имен + публичный для интернета
set system name-server 10.128.0.2
set system name-server 77.88.8.8
set system name-server 77.88.8.1
# Domain-search для внутренних имен
set system domain-search auto.internal
set system domain-search ru-central1.internal
commit
saveПример полной конфигурации для Yandex Cloud
configure
# Hostname
set system host-name vyos-gateway-ru-central1-a
set system domain-name ru-central1.internal
# DNS конфигурация
# Первый - внутренний DNS Yandex Cloud (резолвит *.auto.internal)
set system name-server 10.128.0.2
# Второй - публичный DNS Yandex (для внешних имен)
set system name-server 77.88.8.8
# Третий - резервный публичный DNS
set system name-server 77.88.8.1
# Domain search для автоматического добавления суффиксов
set system domain-search ru-central1.internal
set system domain-search auto.internal
# NTP серверы (для проверки DNS резолюции)
set service ntp server ntp1.yandex.ru
set service ntp server ntp2.yandex.ru
commit
save
exitПроверка:
# Проверить внутреннюю резолюцию
vyos@vyos-gateway-ru-central1-a:~$ nslookup vm-name.auto.internal
# Должен резолвится через 10.128.0.2
# Проверить внешнюю резолюцию
vyos@vyos-gateway-ru-central1-a:~$ nslookup google.com
# Должен резолвится через 77.88.8.8
# Проверить конфигурацию
vyos@vyos-gateway-ru-central1-a:~$ cat /etc/resolv.conf
# nameserver 10.128.0.2
# nameserver 77.88.8.8
# nameserver 77.88.8.1
# search ru-central1.internal auto.internalVK Cloud (Cloud.ru)
VK Cloud предоставляет внутренние DNS серверы для резолюции виртуальных машин внутри проекта.
Использование внутреннего DNS VK Cloud
# Внутренний DNS сервер VK Cloud (второй IP из подсети)
# Для подсети 10.0.0.0/24 это будет 10.0.0.2
set system name-server 10.0.0.2
commit
saveПринцип работы:
- Аналогично Yandex Cloud, каждая подсеть имеет DNS на втором IP
- Резолвит внутренние FQDN виртуальных машин
- Формат FQDN:
vm-name.mcs.localилиvm-name.cloud.local
Использование публичных DNS VK Cloud
VK Cloud не предоставляет публичные DNS серверы. Рекомендуется использовать:
# Google DNS
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# Или Cloudflare DNS
set system name-server 1.1.1.1
set system name-server 1.0.0.1
# Или Yandex DNS
set system name-server 77.88.8.8
set system name-server 77.88.8.1
commit
saveПример полной конфигурации для VK Cloud
configure
# Hostname
set system host-name vyos-gateway-msk1
set system domain-name msk1.cloud.vk.com
# DNS конфигурация
# Внутренний DNS VK Cloud (резолвит локальные VM)
set system name-server 10.0.0.2
# Публичные DNS для внешних имен
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# Domain search
set system domain-search msk1.cloud.vk.com
set system domain-search mcs.local
# NTP
set service ntp server 0.ru.pool.ntp.org
set service ntp server 1.ru.pool.ntp.org
commit
save
exitAWS (Amazon Web Services)
AWS предоставляет внутренний DNS резолвер для каждого VPC.
Использование Amazon Route 53 Resolver
# Amazon Route 53 Resolver (VPC DNS)
# Всегда доступен на IP: <VPC_CIDR_BASE> + 2
# Для VPC 10.0.0.0/16 это будет 10.0.0.2
set system name-server 10.0.0.2
commit
saveПринцип работы:
- Адрес DNS:
<VPC_CIDR_BASE> + 2 - Резолвит внутренние EC2 имена:
ip-10-0-1-5.ec2.internal - Резолвит Route 53 Private Hosted Zones
- Перенаправляет публичные запросы в интернет
Пример для AWS
configure
# Hostname
set system host-name vyos-gateway-us-east-1a
set system domain-name us-east-1.compute.internal
# DNS конфигурация
set system name-server 10.0.0.2
# Domain search для EC2
set system domain-search us-east-1.compute.internal
set system domain-search ec2.internal
# NTP (AWS Time Sync Service)
set service ntp server 169.254.169.123
commit
save
exitAzure (Microsoft Azure)
Azure предоставляет встроенный DNS для каждого виртуального сетевого окружения.
Использование Azure DNS
# Azure Virtual Network DNS
# Адрес: 168.63.129.16 (специальный Azure metadata IP)
set system name-server 168.63.129.16
commit
saveПринцип работы:
- Адрес:
168.63.129.16(используется для всех VNet) - Резолвит внутренние Azure VM имена
- Поддерживает Azure Private DNS Zones
- Перенаправляет публичные запросы
Пример для Azure
configure
# Hostname
set system host-name vyos-gateway-westeurope
set system domain-name internal.cloudapp.net
# DNS конфигурация
set system name-server 168.63.129.16
# Domain search
set system domain-search internal.cloudapp.net
# NTP (Azure NTP)
set service ntp server time.windows.com
commit
save
exitGoogle Cloud Platform (GCP)
GCP предоставляет внутренний DNS резолвер для каждой VPC сети.
Использование Google Cloud DNS
# Google Cloud DNS (metadata server)
set system name-server 169.254.169.254
# Или использовать внутренний DNS VPC
# Для подсети 10.128.0.0/20 это будет 10.128.0.2
set system name-server 10.128.0.2
commit
saveПринцип работы:
- Metadata DNS:
169.254.169.254 - VPC DNS:
<SUBNET_CIDR_BASE> + 2 - Резолвит внутренние GCP VM имена:
vm-name.c.project-id.internal - Поддерживает Cloud DNS Private Zones
Пример для GCP
configure
# Hostname
set system host-name vyos-gateway-europe-west1-b
set system domain-name c.my-project-id.internal
# DNS конфигурация
set system name-server 169.254.169.254
set system name-server 10.128.0.2
# Domain search
set system domain-search c.my-project-id.internal
# NTP (Google Public NTP)
set service ntp server time.google.com
commit
save
exitПримеры конфигураций
Пример 1: Корпоративная сеть с внутренним DNS
Задача: Настроить VyOS для использования корпоративного DNS с резервными публичными серверами.
configure
# DNS конфигурация
# Основной корпоративный DNS (Active Directory)
set system name-server 192.168.1.10
# Резервный корпоративный DNS
set system name-server 192.168.1.11
# Публичный резервный (на случай отказа корпоративных)
set system name-server 8.8.8.8
# Domain search для корпоративных доменов
set system domain-search corp.example.com
set system domain-search example.com
# Hostname
set system host-name vyos-gateway
set system domain-name corp.example.com
commit
save
exitПроверка:
# Проверить резолюцию корпоративных имен
nslookup dc01
# Должен резолвится как dc01.corp.example.com через 192.168.1.10
# Проверить резолюцию внешних имен
nslookup google.com
# Должен резолвится через корпоративный DNS
# Проверить конфигурацию
cat /etc/resolv.confПример 2: Edge router с публичными DNS
Задача: Настроить пограничный маршрутизатор с надежными публичными DNS.
configure
# DNS конфигурация с несколькими провайдерами
# Google DNS
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# Cloudflare DNS
set system name-server 1.1.1.1
# Hostname
set system host-name vyos-edge-router
set system domain-name edge.local
commit
save
exitПример 3: Multi-site с условной forwarding
Задача: Головной офис с филиалами, каждый филиал имеет свой DNS домен.
configure
# Основной офис (Москва)
set system host-name vyos-hq-moscow
set system domain-name moscow.corp.local
# DNS серверы
# Локальный DNS (резолвит moscow.corp.local)
set system name-server 192.168.1.53
# DNS головного офиса (резолвит corp.local и филиалы)
set system name-server 10.0.0.53
# Публичный резервный
set system name-server 8.8.8.8
# Domain search для всех филиалов
set system domain-search moscow.corp.local
set system domain-search spb.corp.local
set system domain-search ekb.corp.local
set system domain-search corp.local
commit
save
exitФилиал (Санкт-Петербург):
configure
set system host-name vyos-branch-spb
set system domain-name spb.corp.local
# Локальный DNS филиала
set system name-server 192.168.2.53
# DNS головного офиса через VPN
set system name-server 10.0.0.53
# Публичный резервный
set system name-server 8.8.8.8
# Domain search
set system domain-search spb.corp.local
set system domain-search corp.local
commit
save
exitПример 4: DMZ с ограниченным DNS
Задача: DMZ роутер, который должен резолвить только определенные домены.
configure
set system host-name vyos-dmz
set system domain-name dmz.example.com
# DNS сервер с whitelist для DMZ
set system name-server 10.10.10.53
# Резервный публичный (ограниченный firewall правилами)
set system name-server 8.8.8.8
# Domain search только для DMZ
set system domain-search dmz.example.com
commit
save
exitПример 5: IPv6-only сеть
Задача: Настроить DNS для IPv6-only инфраструктуры.
configure
set system host-name vyos-ipv6-router
set system domain-name ipv6.example.com
# Google DNS (IPv6)
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
# Cloudflare DNS (IPv6)
set system name-server 2606:4700:4700::1111
set system name-server 2606:4700:4700::1001
# Domain search
set system domain-search ipv6.example.com
commit
save
exitПример 6: Dual-stack с приоритетом IPv6
Задача: Dual-stack сеть с предпочтением IPv6 для DNS.
configure
set system host-name vyos-dualstack
set system domain-name dualstack.example.com
# IPv6 DNS серверы (приоритет - указаны первыми)
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
# IPv4 DNS серверы (fallback)
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# Domain search
set system domain-search dualstack.example.com
commit
save
exitКоманды проверки и мониторинга
Проверка конфигурации DNS
# Показать настроенные DNS серверы
show configuration system name-server
# Показать domain-search
show configuration system domain-search
# Показать всю системную конфигурацию
show configuration systemПроверка /etc/resolv.conf
# Просмотр актуального содержимого resolv.conf
cat /etc/resolv.conf
# Пример вывода:
# nameserver 8.8.8.8
# nameserver 8.8.4.4
# search vyos.io vyos.netТестирование DNS резолюции
Базовые команды
# DNS lookup с nslookup
nslookup google.com
# Вывод:
# Server: 8.8.8.8
# Address: 8.8.8.8#53
#
# Non-authoritative answer:
# Name: google.com
# Address: 142.250.185.46# DNS lookup с dig
dig google.com
# Детальная информация
dig google.com +short
# Проверка конкретного DNS сервера
dig @8.8.8.8 google.com# DNS lookup с host
host google.com
# Reverse DNS lookup
host 8.8.8.8Проверка domain-search
# При настроенном domain-search: example.com
# Запрос короткого имени (должен добавиться суффикс)
dig server1
# Вывод покажет: server1.example.com
# Проверка с verbose
dig +search server1Трассировка DNS запросов
# Полная трассировка DNS резолюции
dig +trace google.com
# Вывод:
# . 86400 IN NS a.root-servers.net.
# ...
# google.com. 172800 IN NS ns1.google.com.
# ...
# google.com. 300 IN A 142.250.185.46Проверка DNSSEC
# Проверить DNSSEC подписи
dig google.com +dnssec
# Проверить валидность DNSSEC
dig google.com +dnssec +multilineМониторинг производительности DNS
# Измерить время резолюции
time nslookup google.com
# Вывод:
# real 0m0.045s
# user 0m0.012s
# sys 0m0.008s# Статистика DNS запросов с dig
dig google.com +stats
# Вывод включает:
# ;; Query time: 45 msec
# ;; SERVER: 8.8.8.8#53(8.8.8.8)
# ;; WHEN: Wed Jan 15 10:30:45 MSK 2025
# ;; MSG SIZE rcvd: 55Проверка доступности DNS серверов
# Ping DNS сервера
ping -c 4 8.8.8.8
# Проверить UDP порт 53
nc -vuz 8.8.8.8 53
# Или с nmap
nmap -sU -p 53 8.8.8.8Проверка DNS для определенного домена
# Запрос всех DNS записей
dig example.com ANY
# Запрос конкретных типов записей
dig example.com A # IPv4 адрес
dig example.com AAAA # IPv6 адрес
dig example.com MX # Mail exchange
dig example.com NS # Name servers
dig example.com TXT # Text records
dig example.com SOA # Start of authorityПроверка reverse DNS
# Reverse lookup (PTR запись)
dig -x 8.8.8.8
# Или с host
host 8.8.8.8
# Или с nslookup
nslookup 8.8.8.8Логирование DNS запросов
# Включить debug логирование DNS (временно)
sudo tcpdump -i any port 53 -vv
# Логировать DNS запросы в файл
sudo tcpdump -i any port 53 -w /tmp/dns-traffic.pcap
# Анализ сохраненного файла
sudo tcpdump -r /tmp/dns-traffic.pcap -vvПроверка DNS кэша
# VyOS не имеет встроенного DNS кэша на уровне системы
# Но если включен dns forwarding, можно проверить его кэш
# Показать статистику dns forwarding (если настроен)
show dns forwarding statistics
# Очистить кэш dns forwarding (если настроен)
reset dns forwarding cacheУстранение неполадок (Troubleshooting)
Проблема 1: DNS не резолвит имена
Симптомы:
- Команды
nslookup,dig,hostвозвращают ошибки - Система не может обновить пакеты через
apt update - NTP не синхронизируется (если NTP серверы указаны по имени)
Диагностика:
# Проверить конфигурацию DNS
show configuration system name-server
# Проверить /etc/resolv.conf
cat /etc/resolv.conf
# Проверить доступность DNS серверов
ping 8.8.8.8
# Проверить UDP порт 53
nc -vuz 8.8.8.8 53
# Проверить DNS резолюцию
nslookup google.comРешение:
# Если DNS серверы не настроены - настроить
configure
set system name-server 8.8.8.8
set system name-server 8.8.4.4
commit
save
exit
# Проверить firewall правила (DNS должен быть разрешен)
show firewall
# Добавить правило, если DNS блокируется
configure
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 protocol udp
set firewall name WAN_LOCAL rule 100 destination port 53
commit
save
exit
# Проверить результат
nslookup google.comПроблема 2: Медленная DNS резолюция
Симптомы:
- Команды DNS занимают несколько секунд
- Веб-браузинг медленный
- SSH подключения долго устанавливаются
Диагностика:
# Измерить время резолюции
time nslookup google.com
# Проверить RTT к DNS серверам
ping -c 10 8.8.8.8
# Проверить статистику dig
dig google.com +stats
# Трассировка до DNS сервера
traceroute 8.8.8.8Решение:
# Использовать более быстрые или близкие DNS серверы
configure
# Удалить медленные серверы
delete system name-server 8.8.8.8
# Добавить быстрые локальные серверы
set system name-server 192.168.1.53 # Локальный DNS
set system name-server 77.88.8.8 # Yandex DNS (для России)
commit
save
exit
# Проверить улучшение
time nslookup google.comПроблема 3: Domain-search не работает
Симптомы:
- Короткие имена не резолвятся
- Необходимо указывать полные FQDN
Диагностика:
# Проверить конфигурацию domain-search
show configuration system domain-search
# Проверить /etc/resolv.conf
cat /etc/resolv.conf | grep search
# Тестовый запрос
dig +search server1Решение:
# Настроить domain-search
configure
set system domain-search example.com
commit
save
exit
# Проверить /etc/resolv.conf
cat /etc/resolv.conf
# Должна быть строка: search example.com
# Тестовый запрос
dig server1
# Должен резолвится как server1.example.comПроблема 4: DNS резолвит только IPv6 или только IPv4
Симптомы:
- Dual-stack имена резолвятся только в один тип адресов
- Нет A или AAAA записей
Диагностика:
# Проверить IPv4 резолюцию
dig google.com A
# Проверить IPv6 резолюцию
dig google.com AAAA
# Проверить оба
dig google.com A AAAAРешение:
# Убедиться, что используются DNS серверы, поддерживающие оба протокола
configure
# Для dual-stack использовать современные DNS
set system name-server 8.8.8.8
set system name-server 2001:4860:4860::8888
commit
save
exit
# Проверить оба типа записей
dig google.com A
dig google.com AAAAПроблема 5: Конфликт статических и DHCP DNS
Симптомы:
- DNS серверы меняются после перезагрузки
- /etc/resolv.conf содержит неожиданные серверы
Диагностика:
# Проверить статическую конфигурацию
show configuration system name-server
# Проверить DHCP конфигурацию на интерфейсах
show configuration interfaces ethernet
# Проверить /etc/resolv.conf
cat /etc/resolv.confРешение:
# Вариант 1: Использовать только статические DNS
configure
set system name-server 8.8.8.8
set system name-server 8.8.4.4
commit
save
exit
# Вариант 2: Использовать только DHCP DNS
configure
delete system name-server
commit
save
exit
# Вариант 3: Отключить DHCP DNS на интерфейсе (если поддерживается)
configure
set interfaces ethernet eth0 dhcp-options no-default-route
commit
save
exitПроблема 6: DNS не резолвит внутренние cloud имена
Симптомы:
- Внешние имена резолвятся, внутренние (*.auto.internal, *.ec2.internal) - нет
- Используются публичные DNS вместо облачных
Диагностика:
# Проверить конфигурацию DNS
show configuration system name-server
# Попытаться резолвить внутреннее имя
nslookup vm-name.auto.internal
# Проверить, какой DNS сервер используется
dig vm-name.auto.internalРешение (Yandex Cloud):
configure
# Добавить внутренний DNS Yandex Cloud первым
set system name-server 10.128.0.2
# Затем публичные
set system name-server 77.88.8.8
# Domain-search для внутренних имен
set system domain-search auto.internal
set system domain-search ru-central1.internal
commit
save
exit
# Проверить
nslookup vm-name.auto.internalРешение (AWS):
configure
# Использовать VPC DNS
set system name-server 10.0.0.2
# Domain-search для EC2
set system domain-search us-east-1.compute.internal
set system domain-search ec2.internal
commit
save
exit
# Проверить
nslookup ip-10-0-1-5.ec2.internalПроблема 7: VRF routing для DNS не работает
Симптомы:
- Management VRF настроен, но DNS трафик идет через default VRF
- DNS недоступен в изолированном VRF
Объяснение:
В текущих версиях VyOS нет способа направить системный DNS трафик через определенный VRF. Это известное ограничение.
Workaround:
# Вариант 1: Использовать DNS сервер доступный из default VRF
configure
set system name-server 8.8.8.8 # Публичный DNS через default route
commit
save
exit
# Вариант 2: Настроить static route для DNS сервера
configure
set protocols static route 192.168.1.53/32 next-hop 10.0.0.1
commit
save
exit
# Вариант 3: Использовать DNS forwarding с source-address
# (позволяет указать source IP для запросов)
configure
set service dns forwarding listen-address 127.0.0.1
set service dns forwarding name-server 192.168.1.53
set service dns forwarding source-address 10.0.0.10
commit
save
exit
# Изменить system name-server на localhost
configure
set system name-server 127.0.0.1
commit
save
exitПроблема 8: DNSSEC валидация не работает
Симптомы:
- DNSSEC-подписанные домены не резолвятся
- Ошибки валидации DNSSEC
Диагностика:
# Проверить DNSSEC валидацию
dig google.com +dnssec
# Проверить, поддерживает ли DNS сервер DNSSEC
dig @8.8.8.8 . DNSKEYРешение:
# Использовать DNS серверы с поддержкой DNSSEC
configure
# Google DNS (поддерживает DNSSEC)
set system name-server 8.8.8.8
# Cloudflare DNS (поддерживает DNSSEC)
set system name-server 1.1.1.1
# Yandex DNS (поддерживает DNSSEC)
set system name-server 77.88.8.8
commit
save
exit
# Проверить DNSSEC
dig google.com +dnssecЛучшие практики (Best Practices)
1. Выбор DNS серверов
Используйте минимум 2 DNS сервера:
# Хорошо: 2-3 сервера
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# Плохо: только один сервер
set system name-server 8.8.8.8Выбирайте близкие по RTT серверы:
# Проверить RTT
ping -c 10 8.8.8.8
ping -c 10 77.88.8.8
ping -c 10 1.1.1.1
# Использовать сервер с наименьшим RTT
# Для России обычно:
set system name-server 77.88.8.8 # Yandex, ~5-10ms
set system name-server 8.8.8.8 # Google, ~20-30msКомбинируйте разных провайдеров:
# Диверсификация провайдеров DNS
set system name-server 77.88.8.8 # Yandex
set system name-server 8.8.8.8 # Google
set system name-server 1.1.1.1 # Cloudflare2. Облачные инфраструктуры
Всегда используйте внутренний облачный DNS первым:
# Yandex Cloud
set system name-server 10.128.0.2 # Внутренний DNS
set system name-server 77.88.8.8 # Публичный резервный
# AWS
set system name-server 10.0.0.2 # VPC DNS
set system name-server 8.8.8.8 # Публичный резервный
# Azure
set system name-server 168.63.129.16 # Azure DNS
set system name-server 8.8.8.8 # Публичный резервныйНастраивайте domain-search для внутренних имен:
# Yandex Cloud
set system domain-search auto.internal
set system domain-search ru-central1.internal
# AWS
set system domain-search us-east-1.compute.internal
set system domain-search ec2.internal3. Корпоративные сети
Приоритизируйте внутренние DNS:
# Корпоративный DNS первый (резолвит internal.corp.com)
set system name-server 192.168.1.10
# Резервный корпоративный
set system name-server 192.168.1.11
# Публичный только как last resort
set system name-server 8.8.8.8Используйте domain-search для удобства:
set system domain-search corp.example.com
set system domain-search example.com
# Позволяет использовать:
# ping dc01 -> dc01.corp.example.com
# ping exchange -> exchange.corp.example.com4. Безопасность
Используйте только доверенные DNS серверы:
# Хорошо: известные публичные DNS
set system name-server 8.8.8.8 # Google
set system name-server 1.1.1.1 # Cloudflare
set system name-server 77.88.8.8 # Yandex
# Плохо: случайные неизвестные DNS
set system name-server 123.45.67.89Рассмотрите DNS over TLS/HTTPS для конфиденциальности:
Примечание: VyOS не поддерживает DoT/DoH напрямую через system name-server, но можно настроить через dns forwarding или внешний DNS proxy.
# Вариант с dns forwarding (требует дополнительных шагов)
set service dns forwarding listen-address 127.0.0.1
set service dns forwarding name-server 1.1.1.1
# Дополнительная настройка DoH требует ручной конфигурации
set system name-server 127.0.0.1Мониторьте DNS трафик:
# Периодически проверяйте DNS запросы
sudo tcpdump -i any port 53 -c 100
# Ищите подозрительные запросы5. Производительность
Минимизируйте latency:
# Проверить RTT к различным DNS серверам
ping -c 10 8.8.8.8
ping -c 10 77.88.8.8
ping -c 10 1.1.1.1
# Использовать самые быстрыеОграничьте количество domain-search записей:
# Хорошо: 1-3 домена
set system domain-search corp.local
set system domain-search local
# Плохо: слишком много доменов (замедляет резолюцию)
set system domain-search domain1.com
set system domain-search domain2.com
set system domain-search domain3.com
set system domain-search domain4.com
set system domain-search domain5.com
set system domain-search domain6.comИспользуйте локальный DNS кэш:
# Настроить dns forwarding как локальный кэш
set service dns forwarding listen-address 127.0.0.1
set service dns forwarding cache-size 10000
set service dns forwarding name-server 8.8.8.8
set service dns forwarding name-server 8.8.4.4
# Изменить system name-server на localhost
set system name-server 127.0.0.1
commit
save6. Резервирование
Избыточность DNS серверов:
# Минимум 2, рекомендуется 3
set system name-server 192.168.1.10
set system name-server 192.168.1.11
set system name-server 8.8.8.8Географическая избыточность:
# DNS серверы в разных дата-центрах
set system name-server 10.0.1.53 # DC1
set system name-server 10.1.1.53 # DC2
set system name-server 8.8.8.8 # Публичный резервный7. Мониторинг и алертинг
Регулярно проверяйте DNS:
# Скрипт мониторинга DNS
sudo tee /config/scripts/dns-monitor.sh > /dev/null <<'EOF'
#!/bin/bash
# Мониторинг DNS резолюции
DNS_SERVERS="8.8.8.8 8.8.4.4"
TEST_DOMAIN="google.com"
TIMEOUT=5
for server in $DNS_SERVERS; do
response=$(dig @$server $TEST_DOMAIN +time=$TIMEOUT +tries=1 +short 2>&1)
if [ $? -eq 0 ] && [ -n "$response" ]; then
echo "DNS $server: OK"
logger -t dns-monitor "DNS $server: OK"
else
echo "DNS $server: FAILED"
logger -t dns-monitor "ERROR: DNS $server FAILED"
# Отправить алерт
fi
done
EOF
chmod +x /config/scripts/dns-monitor.sh
# Запланировать проверку каждые 5 минут
set system task-scheduler task dns-monitor interval '*/5 * * * *'
set system task-scheduler task dns-monitor executable path '/config/scripts/dns-monitor.sh'
commit
saveАлертинг на потерю DNS:
# Интеграция с системой мониторинга
# Например, отправка в syslog для анализа SIEM
set system syslog host 10.0.0.100 facility local7 level warning8. Документирование
Документируйте выбор DNS серверов:
# Добавьте комментарии в конфигурацию
configure
set system name-server 192.168.1.10
set system name-server 192.168.1.11
set system name-server 8.8.8.8
commit comment "DNS: 192.168.1.10/11 - корпоративные AD DNS, 8.8.8.8 - резервный"
saveХраните историю изменений:
# Просмотр истории изменений DNS
show system commit
# Сравнение конфигураций
show system commit diff 109. IPv6 Ready
Поддерживайте dual-stack:
# IPv4 + IPv6 DNS серверы
set system name-server 8.8.8.8
set system name-server 8.8.4.4
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
commit
save10. Testing и Validation
Тестируйте DNS после изменений:
# После изменения конфигурации DNS всегда тестируйте
nslookup google.com
nslookup internal-server.corp.local
ping -c 4 ntp.pool.org
# Проверить время резолюции
time nslookup google.com
# Проверить domain-search
dig +search server1Интеграция с другими сервисами VyOS
NTP
DNS используется для резолюции NTP серверов, указанных по имени:
configure
# DNS для резолюции NTP серверов
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# NTP серверы по имени (требуют DNS резолюции)
set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org
commit
save
exit
# Проверить, что NTP серверы резолвятся
nslookup 0.pool.ntp.org
show ntpSyslog
DNS используется для резолюции удаленных syslog серверов:
configure
# DNS конфигурация
set system name-server 8.8.8.8
# Syslog сервер по имени
set system syslog host syslog.corp.local facility all level info
set system syslog host syslog.corp.local protocol tcp
set system syslog host syslog.corp.local port 514
commit
save
exit
# Проверить резолюцию syslog сервера
nslookup syslog.corp.localDNS Forwarding
System name-server может использоваться вместе с dns forwarding:
configure
# System DNS (для самой VyOS системы)
set system name-server 8.8.8.8
set system name-server 8.8.4.4
# DNS Forwarding (для клиентов LAN)
set service dns forwarding listen-address 192.168.1.1
set service dns forwarding name-server 8.8.8.8
set service dns forwarding name-server 8.8.4.4
commit
save
exitРазница:
system name-server- используется самой системой VyOSservice dns forwarding name-server- upstream серверы для клиентов
VPN
DNS используется для резолюции удаленных VPN endpoint:
configure
# DNS конфигурация
set system name-server 8.8.8.8
# IPsec VPN с peer по имени
set vpn ipsec site-to-site peer vpn-gateway.example.com
set vpn ipsec site-to-site peer vpn-gateway.example.com authentication mode pre-shared-secret
set vpn ipsec site-to-site peer vpn-gateway.example.com authentication pre-shared-secret secret123
commit
save
exit
# Проверить резолюцию VPN peer
nslookup vpn-gateway.example.comContainers
DNS используется для загрузки container images:
configure
# DNS конфигурация
set system name-server 8.8.8.8
# Container с image из registry по имени
set container name nginx image docker.io/nginx:latest
commit
save
exit
# Проверить резолюцию registry
nslookup docker.ioСкрипты автоматизации
Скрипт проверки DNS здоровья
sudo tee /config/scripts/dns-health-check.sh > /dev/null <<'EOF'
#!/bin/bash
# DNS Health Check Script
# Параметры
TEST_DOMAINS="google.com cloudflare.com yandex.ru"
DNS_SERVERS=$(grep ^nameserver /etc/resolv.conf | awk '{print $2}')
TIMEOUT=5
echo "=== DNS Health Check ==="
echo "Date: $(date)"
echo ""
# Проверка каждого DNS сервера
for dns in $DNS_SERVERS; do
echo "Testing DNS server: $dns"
# Проверка доступности DNS сервера
if ping -c 1 -W 1 $dns > /dev/null 2>&1; then
echo " [OK] DNS server is reachable"
else
echo " [FAIL] DNS server is unreachable"
continue
fi
# Проверка резолюции тестовых доменов
for domain in $TEST_DOMAINS; do
start=$(date +%s%N)
result=$(dig @$dns $domain +time=$TIMEOUT +tries=1 +short 2>&1)
end=$(date +%s%N)
if [ $? -eq 0 ] && [ -n "$result" ]; then
duration=$(( ($end - $start) / 1000000 ))
echo " [OK] $domain resolved in ${duration}ms"
else
echo " [FAIL] $domain resolution failed"
fi
done
echo ""
done
echo "=== DNS Health Check Complete ==="
EOF
chmod +x /config/scripts/dns-health-check.sh
# Запустить проверку
/config/scripts/dns-health-check.shСкрипт автоматического выбора лучшего DNS
sudo tee /config/scripts/dns-benchmark.sh > /dev/null <<'EOF'
#!/bin/bash
# DNS Benchmark Script
DNS_CANDIDATES="8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1 77.88.8.8 77.88.8.1"
TEST_DOMAIN="google.com"
TEST_COUNT=10
echo "=== DNS Benchmark ==="
declare -A dns_times
for dns in $DNS_CANDIDATES; do
echo -n "Testing $dns ... "
total=0
success=0
for i in $(seq 1 $TEST_COUNT); do
start=$(date +%s%N)
dig @$dns $TEST_DOMAIN +time=2 +tries=1 +short > /dev/null 2>&1
if [ $? -eq 0 ]; then
end=$(date +%s%N)
duration=$(( ($end - $start) / 1000000 ))
total=$(( $total + $duration ))
success=$(( $success + 1 ))
fi
done
if [ $success -gt 0 ]; then
avg=$(( $total / $success ))
dns_times[$dns]=$avg
echo "Average: ${avg}ms (${success}/${TEST_COUNT} success)"
else
echo "FAILED"
fi
done
echo ""
echo "=== Recommended DNS Servers ==="
# Сортировать по времени
for dns in "${!dns_times[@]}"; do
echo "${dns_times[$dns]} $dns"
done | sort -n | head -3 | while read time dns; do
echo "set system name-server $dns # ${time}ms"
done
EOF
chmod +x /config/scripts/dns-benchmark.sh
# Запустить benchmark
/config/scripts/dns-benchmark.shСкрипт экспорта DNS конфигурации
sudo tee /config/scripts/export-dns-config.sh > /dev/null <<'EOF'
#!/bin/vbash
# Export DNS Configuration to JSON
source /opt/vyatta/etc/functions/script-template
OUTPUT_FILE="/config/dns-config-export.json"
echo "{" > "$OUTPUT_FILE"
echo " \"timestamp\": \"$(date -Iseconds)\"," >> "$OUTPUT_FILE"
echo " \"hostname\": \"$(hostname)\"," >> "$OUTPUT_FILE"
echo " \"name_servers\": [" >> "$OUTPUT_FILE"
# Получить DNS серверы
NAMESERVERS=$(grep ^nameserver /etc/resolv.conf | awk '{print $2}')
FIRST=1
for ns in $NAMESERVERS; do
if [ $FIRST -eq 1 ]; then
FIRST=0
else
echo "," >> "$OUTPUT_FILE"
fi
echo -n " \"$ns\"" >> "$OUTPUT_FILE"
done
echo "" >> "$OUTPUT_FILE"
echo " ]," >> "$OUTPUT_FILE"
echo " \"domain_search\": [" >> "$OUTPUT_FILE"
# Получить domain-search
SEARCH=$(grep ^search /etc/resolv.conf | sed 's/search //')
FIRST=1
for domain in $SEARCH; do
if [ $FIRST -eq 1 ]; then
FIRST=0
else
echo "," >> "$OUTPUT_FILE"
fi
echo -n " \"$domain\"" >> "$OUTPUT_FILE"
done
echo "" >> "$OUTPUT_FILE"
echo " ]" >> "$OUTPUT_FILE"
echo "}" >> "$OUTPUT_FILE"
echo "DNS configuration exported to $OUTPUT_FILE"
cat "$OUTPUT_FILE"
EOF
chmod +x /config/scripts/export-dns-config.sh
# Запустить экспорт
/config/scripts/export-dns-config.shСвязанные документы
- System Configuration - Общая конфигурация системы
- Host Name - Настройка имени хоста и статических записей
- DNS Forwarding - DNS сервер для клиентов
- NTP - Настройка времени и NTP
- Syslog - Настройка системного логирования
- VPN - VPN конфигурация
- Containers - Управление контейнерами
Дополнительные ресурсы
- RFC 1034 - Domain Names - Concepts and Facilities
- RFC 1035 - Domain Names - Implementation and Specification
- RFC 1123 - Requirements for Internet Hosts
- VyOS Documentation - Name Server
- Yandex Cloud DNS
- AWS VPC DNS
- Azure DNS
- Google Cloud DNS
- Public DNS Comparison
Заключение
Правильная настройка системных DNS серверов (name-server) и списка доменов для поиска (domain-search) в VyOS критически важна для корректной работы всех системных компонентов. DNS используется для обновления пакетов, синхронизации времени через NTP, отправки логов на удаленные серверы, установки VPN соединений и множества других операций.
Ключевые моменты:
- Избыточность: Всегда настраивайте минимум 2-3 DNS сервера для отказоустойчивости
- Производительность: Выбирайте DNS серверы с низким RTT для вашего региона
- Облачная интеграция: Используйте внутренние облачные DNS серверы для резолюции внутренних имен
- Безопасность: Используйте только доверенные DNS серверы
- Мониторинг: Регулярно проверяйте работоспособность DNS
- Документирование: Документируйте выбор DNS серверов и изменения конфигурации
Следуйте рекомендациям из раздела “Лучшие практики” для обеспечения надежной и производительной DNS инфраструктуры в вашей сети VyOS.