В инструкции рассказываем, как изменить настройки 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. Примеры IPv6 DNS от 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 9
nmcli device show ens3
В выводе будут указаны текущие DNS-серверы. Для серверов Timeweb Cloud, размещенных в Санкт-Петербурге, по умолчанию используются:
nameserver 92.53.116.13 nameserver 92.53.116.104
Изменение DNS-серверов
Ubuntu 18.04
Чтобы изменить DNS-серверы, выполните следующее:
Перейдите в директорию /etc/netplan:
cd /etc/netplan
Откройте файл конфигурации службы для редактирования. Файл, как правило, называется 01-netcfg.yaml; в Ubuntu 20.04 — 00-installer-config.yaml.
nano 01-netcfg.yaml
На серверах Timeweb Cloud его содержимое будет следующим:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
Добавьте в конец файла блок:
nameservers: addresses: [8.8.8.8, 8.8.4.4]
При необходимости вы можете добавить DNS для IPv6:
addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
и включить dhcp6:
dhcp6: yes
У вас должно получиться следующее:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
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]
Обязательно соблюдайте иерархичность структуры; каждый новый уровень директив должен начинаться с двух пробелов (не отступов Tab).
Сохраните изменения в файле (Ctrl +X, затем Y и Enter).
Примените новую конфигурацию командой:
netplan try
Программа запросит у вас подтверждение — нажмите Enter, чтобы применить новые настройки.
На этом этапе, если в конфигурации сети были допущены какие-то ошибки, подключение по SSH будет разорвано. Конфигурация автоматически вернется к исходным настройкам через 2 минуты, и вы сможете снова подключиться к серверу.
Проверьте, что DNS-серверы обновились, с помощью команд:
systemd-resolve --status | grep 'DNS Servers' -A2
Ubuntu 20.04 и выше, Debian 12 и выше
Для изменения DNS-серверов в Debian 12, Ubuntu 20.04 и более новых версиях, выполните следующее:
Откройте файл настроек systemd-resolved в текстовом редакторе:
sudo nano /etc/systemd/resolved.conf
Раскомментируйте секцию [Resolve] и укажите в ней желаемые DNS-серверы. Например:
[Resolve] DNS=8.8.8.8 FallbackDNS=8.8.4.4
Сохраните изменения (Ctrl + X, затем Y и Enter).
Чтобы указать DNS для IPv6, добавьте их в тот же файл вместе с IPv4:
[Resolve] DNS=8.8.8.8 2001:4860:4860::8888 FallbackDNS=8.8.4.4 2001:4860:4860::8844
Перезапустите службу systemd-resolved:
systemctl restart systemd-resolved
Убедитесь, что служба запущена и работает корректно:
systemctl status systemd-resolved
Проверьте, что новые DNS-серверы применились:
resolvectl status
Debian 11
Чтобы изменить DNS-серверы:
Откройте файл конфигурации dhclient в текстовом редакторе:
nano /etc/dhcp/dhclient.conf
В самый конец файла добавьте строку:
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
Чтобы указать DNS для IPv6, добавьте их в тот же файл вместе с IPv4:
supersede domain-name-servers 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844;
Сохраните изменения в файле (Ctrl +X, затем Y и Enter).
Запросите сетевые настройки командой:
dhclient
Проверьте, что DNS обновились:
cat /etc/resolv.conf
В выводе должны отобразиться указанные вами серверы.
CentOS 9
Чтобы изменить DNS-серверы, выполните следующее:
Выполните команду ниже, чтобы просмотреть сетевые адаптеры в системе:
ip a
В выводе отобразятся три адаптера: lo, ens3 и ens8:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether ce:46:76:13:67:4a brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 83.222.10.200/24 brd 83.222.10.255 scope global dynamic noprefixroute ens3 valid_lft 86369sec preferred_lft 86369sec inet6 2a03:6f01:1:2::c374/128 scope global dynamic noprefixroute valid_lft 2591972sec preferred_lft 604772sec inet6 fe80::cc46:76ff:fe13:674a/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:b1:4e:8d brd ff:ff:ff:ff:ff:ff altname enp0s8 inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute ens8 valid_lft forever preferred_lft forever inet6 fe80::5652:ff:feb1:4e8d/64 scope link valid_lft forever preferred_lft forever
Нам нужно настроить адаптер ens3.
Проверьте текущие настройки DNS для интерфейса:
nmcli con show ens3 | grep dns
Задайте новые DNS-серверы:
sudo nmcli connection modify ens3 ipv4.dns "8.8.8.8,8.8.4.4"
Если в системе используется IPv6, можно указать DNS и для него:
sudo nmcli connection modify ens3 ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844"
Чтобы использовать только эти серверы и игнорировать получаемые от DHCP, можно добавить опцию:
sudo nmcli connection modify ens3 ipv4.ignore-auto-dns yes
Отключите соединение:
sudo nmcli connection down ens3
Включите соединение снова:
sudo nmcli connection up ens3
Убедитесь, что изменения применились:
nmcli con show ens3 | grep dns
Вы увидите такую строку:
ipv4.dns: 8.8.8.8,8.8.4.4
И если настраивали IPv6:
ipv6.dns: 2001:4860:4860::8888,2001:4860:4860::8844