Gymterview
junior

Как настроить DNS в Linux?

DNS (Domain Name System) — система, преобразующая доменные имена в IP-адреса. Корректная настройка DNS критически важна для работы микросервисов, которые обращаются друг к другу по именам.

/etc/resolv.conf

Классический способ указания DNS-серверов:

Пример
# /etc/resolv.conf
nameserver 10.0.0.1          # корпоративный DNS
nameserver 10.0.0.2          # резервный DNS
search mybank.local dev.mybank.local
options timeout:2 attempts:3
  • nameserver — адрес DNS-сервера (максимум 3)
  • search — домены для автодополнения (запрос app-server будет преобразован в app-server.mybank.local)
  • options — параметры: таймаут и число попыток

systemd-resolved

Конфигурация systemd-resolved

В современных дистрибутивах /etc/resolv.conf часто является симлинком на systemd-resolved:

# Проверить статус
resolvectl status

# Настройка через /etc/systemd/resolved.conf
[Resolve]
DNS=10.0.0.1 10.0.0.2
FallbackDNS=8.8.8.8
Domains=mybank.local
DNSSEC=allow-downgrade
DNSOverTLS=opportunistic

# Применить
sudo systemctl restart systemd-resolved

Локальный DNS через /etc/hosts

Файл /etc/hosts позволяет задать соответствие имён и адресов локально, без обращения к DNS:

Пример
# /etc/hosts
127.0.0.1       localhost
192.168.1.10    app-server.mybank.local app-server
192.168.1.11    db-master.mybank.local db-master
192.168.1.12    db-replica.mybank.local db-replica
192.168.1.20    kafka-01.mybank.local kafka-01

Порядок разрешения имён определяется в /etc/nsswitch.conf:

Пример
# /etc/nsswitch.conf
hosts: files dns
# Сначала /etc/hosts (files), потом DNS-сервер (dns)

Диагностика DNS

Пример
# Запрос A-записи
dig app-server.mybank.local

# Краткий вывод
dig +short app-server.mybank.local

# Запрос конкретного типа записи
dig MX mybank.local

# Использование конкретного DNS-сервера
dig @10.0.0.1 app-server.mybank.local

Для Java-приложений DNS-кеширование управляется через JVM-параметры networkaddress.cache.ttl и networkaddress.cache.negative.ttl в файле java.security. По умолчанию JVM может кешировать DNS-записи навечно, что создаёт проблемы при изменении адресов.

На собеседовании: интервьюер ожидает знание порядка разрешения имён (hosts -> DNS) и понимание того, как JVM кеширует DNS. Частая ошибка — не знать про вечное DNS-кеширование в JVM и его влияние на failover.