Настройка DNS-серверов в Linux
| Уровень сложности | Средний |
| Права root | Требуются |
| Требования | Терминал Linux, VNC/IPMI |
| Категория | Сеть |
| Совместимость с ОС | Debian, Ubuntu, RHEL |
| Примерное время чтения | 30 мин |
Введение
DNS-серверы отвечают за преобразование доменных имён (например, example.com) в IP-адреса. Если DNS работает неправильно, сайты могут не открываться, а некоторые сервисы будут недоступны.
В этом руководстве разберём, как изменить DNS-серверы на серверах с операционными системами Linux. Если у вас сервер с Windows, используйте отдельную инструкцию для этой ОС.
В качестве примера будут использоваться публичные DNS-серверы от Google:
8.8.8.8
8.8.4.4
Вы можете использовать любые другие DNS-серверы. Например, популярная альтернатива - DNS от Cloudflare:
1.1.1.1
1.0.0.1
Если на сервере используется IPv6, можно дополнительно настроить DNS-серверы и для этого протокола. Это необязательно, но рекомендуется, если IPv6 активно используется.
Пример DNS для IPv6 от Google:
2001:4860:4860::8888
2001:4860:4860::8844
Инструкция
Проверка текущих DNS-серверов
Перед изменением настроек полезно посмотреть, какие DNS-серверы используются сейчас.
Подключитесь к серверу через SSH или через веб-консоль панели управления и выполните команду, соответствующую вашей операционной системе.
Ubuntu 18.04
systemd-resolve --status | grep 'DNS Servers' -A2
Ubuntu 20.04+, Debian 12+
resolvectl status
Debian 11
cat /etc/resolv.conf
CentOS Stream/ 9AlmaLinux / Rocky Linux / RHEL
nmcli device show ens3
В выводе команды будут указаны активные DNS-серверы, которые система использует для разрешения доменных имён.
Изменение DNS-серверов
Метод настройки зависит от версии операционной системы и используемого сетевого менеджера.
Ubuntu 18.04 (через Netplan)
В Ubuntu 18.04 сетевые параметры управляются через систему Netplan.
Перейдите в каталог с конфигурацией сети:
cd /etc/netplan
Откройте файл конфигурации (обычно он называется примерно так):
nano 01-netcfg.yaml
Пример базового содержимого файла:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
Добавьте блок с DNS-серверами:
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
Если используется IPv6, можно указать DNS и для него:
addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
При необходимости также включите получение IPv6-адреса:
dhcp6: yes
Итоговая конфигурация может выглядеть так:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
dhcp6: yes
nameservers:
addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
Важно соблюдать структуру YAML - каждый уровень должен иметь правильные отступы (используйте пробелы, а не Tab).
После сохранения файла примените настройки:
netplan try
Система предложит подтвердить изменения. Если соединение не пропадёт, нажмите Enter.
Если конфигурация окажется ошибочной и сеть перестанет работать, через несколько минут система автоматически вернётся к предыдущим настройкам.
Проверить новые DNS можно командой:
systemd-resolve --status | grep 'DNS Servers' -A2
Ubuntu 20.04+ и Debian 12+
В новых версиях систем DNS управляется сервисом systemd-resolved.
Откройте файл конфигурации:
nano /etc/systemd/resolved.conf
Найдите раздел [Resolve] и укажите нужные DNS-серверы:
[Resolve]
DNS=8.8.8.8
FallbackDNS=8.8.4.4
Если требуется поддержка IPv6:
[Resolve]
DNS=8.8.8.8 2001:4860:4860::8888
FallbackDNS=8.8.4.4 2001:4860:4860::8844
После изменения конфигурации перезапустите службу:
systemctl restart systemd-resolved
Проверьте статус сервиса:
systemctl status systemd-resolved
Убедиться, что новые DNS применились, можно командой:
resolvectl status
Debian 11
В Debian 11 DNS-серверы можно задать через конфигурацию DHCP-клиента.
Откройте файл:
nano /etc/dhcp/dhclient.conf
В конец файла добавьте строку:
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
Если используется IPv6, добавьте соответствующие адреса:
supersede domain-name-servers 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844;
Сохраните изменения и обновите сетевые параметры:
dhclient
Проверить результат можно так:
cat /etc/resolv.conf
CentOS / CentOSAlmaLinux Stream/ Rocky Linux / RHEL
В системах семейства CentOS управление сетью обычно выполняется через NetworkManager.
Сначала посмотрите список сетевых интерфейсов:
ip a
Определите интерфейс, через который сервер подключён к сети (например ens3).
Посмотреть текущие DNS-серверы:
nmcli con show ens3 | grep dns
Задать новые DNS-серверы:
nmcli connection modify ens3 ipv4.dns "8.8.8.8,8.8.4.4"
Если используется IPv6:
nmcli connection modify ens3 ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844"
Чтобы отключить получение DNS от DHCP и использовать только указанные серверы:
nmcli connection modify ens3 ipv4.ignore-auto-dns yes
После этого перезапустите сетевое соединение:
nmcli connection down ens3
nmcli connection up ens3
Проверить результат можно командой:
nmcli con show ens3 | grep dns
В выводе должны появиться указанные вами DNS-серверы.
Проверка работы DNS
После изменения настроек рекомендуется убедиться, что DNS работает корректно.
Например:
ping google.com
или
dig google.com
Если доменное имя успешно преобразуется в IP-адрес, значит DNS настроен правильно.
Иногда файл /etc/resolv.conf может автоматически перезаписываться системой или DHCP-клиентом. В таких случаях необходимо изменить настройки сетевого менеджера (Netplan, systemd-resolved или NetworkManager), а не редактировать этот файл напрямую.
Заключение
Теперь вы знаете, как изменить DNS-серверы в разных дистрибутивах Linux. После внесения изменений рекомендуется проверить, что новые настройки применились и система корректно разрешает доменные имена.
