Перейти к основному контенту

Настройка DNS-серверов в Linux


intro-Setting-DNS-servers-Linux-planetahost.png

Подробности урока

Уровень сложностиСредний
Права 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. После внесения изменений рекомендуется проверить, что новые настройки применились и система корректно разрешает доменные имена.