Настройка DNS

Настройка DNS
<< SurvivalHost Wiki
| К концу статьи
DNS-сервер превращает доменные имена в IP-адреса. Если резолвер, выданный по DHCP, медленный или не отвечает, сервер долго открывает сайты, не ставит пакеты и не качает игровые файлы через SteamCMD. Ошибки Temporary failure in name resolution, Could not resolve host, Не удается преобразовать DNS-адрес сервера в большинстве случаев лечатся сменой DNS.
Какие адреса указывать
Наши локальные резолверы, рекомендуем их на всех VDS и выделенных серверах:
10.8.8.8 10.4.4.4
Они стоят внутри нашей сети, отвечают быстрее публичных и не зависят от внешних каналов. Работают только с наших серверов: на домашнем компьютере или на машине другого хостинга эти адреса недоступны.
Публичные резолверы, если нужен внешний вариант:
- Google:
8.8.8.8и8.8.4.4 - Cloudflare:
1.1.1.1и1.0.0.1 - Quad9:
9.9.9.9и149.112.112.112
Первый адрес основной, второй запасной. Прописывайте оба, иначе при недоступности первого резолв встанет.
Windows Server: через графический интерфейс
1. Нажмите Win + R, введите ncpa.cpl, нажмите ОК.

2. Дважды кликните по сетевому адаптеру, в окне «Состояние» нажмите Свойства. Того же результата даёт правый клик по адаптеру и Свойства.

3. Выделите IP версии 4 (TCP/IPv4), нажмите Свойства.

4. Отметьте Использовать следующие адреса DNS-серверов. В поле «Предпочитаемый DNS-сервер» впишите 10.8.8.8, в «Альтернативный DNS-сервер» впишите 10.4.4.4.

5. ОК, ОК. Настройки IP-адреса и шлюза не трогайте.
Важно: если сервер получает адрес по DHCP, менять галку на «Получить IP-адрес автоматически» не нужно, DNS задаётся отдельно от адреса.
Windows Server: через PowerShell
Запустите PowerShell от имени администратора. Сначала посмотрите список адаптеров и точное имя нужного:
Get-NetAdapter
В колонке Name будет имя, обычно Ethernet или Ethernet0. Подставьте его в команду:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 10.8.8.8,10.4.4.4
Проверка того, что применилось:
Get-DnsClientServerAddress -InterfaceAlias "Ethernet" -AddressFamily IPv4
Сбросить кэш и проверить резолв:
Clear-DnsClientCache Resolve-DnsName survivalhost.org
Вернуть автоматические настройки от DHCP:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses
Windows Server: через netsh
Вариант для тех, кому привычнее cmd. Список интерфейсов:
netsh interface show interface
Задать основной и запасной DNS:
netsh interface ipv4 set dnsservers name="Ethernet" source=static address=10.8.8.8 register=none validate=no netsh interface ipv4 add dnsservers name="Ethernet" address=10.4.4.4 index=2 validate=no
Ключ validate=no отключает проверку резолвера при добавлении, иначе Windows может отказаться принимать адрес.
Проверка и сброс кэша:
netsh interface ipv4 show dnsservers ipconfig /flushdns nslookup survivalhost.org
Linux: определяем, чем управляется resolv.conf
Прежде чем править, посмотрите, кто владеет файлом:
ls -l /etc/resolv.conf
- Симлинк на
/run/systemd/resolve/stub-resolv.conf: работает systemd-resolved. - Обычный файл, а в
/etc/netplan/лежат yaml-файлы: Ubuntu с netplan. - Активен NetworkManager (
systemctl is-active NetworkManager): правим через nmcli. - CentOS 7 и старые RHEL: файлы
/etc/sysconfig/network-scripts/ifcfg-*.
Ниже все рабочие варианты. Достаточно того, который соответствует вашей системе.
Linux: Ubuntu 18.04 и новее (netplan)
Смотрим имя файла конфигурации и имя интерфейса:
ls /etc/netplan/ ip -br a
Открываем конфиг:
nano /etc/netplan/00-installer-config.yaml
Приводим к виду (отступы только пробелами, табы netplan не принимает):
network:
version: 2
ethernets:
ens3:
dhcp4: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses: [10.8.8.8, 10.4.4.4]
Если адрес статический, блок dhcp4-overrides не нужен:
network:
version: 2
ethernets:
ens3:
addresses: [203.0.113.10/24]
routes:
- to: default
via: 203.0.113.1
nameservers:
addresses: [10.8.8.8, 10.4.4.4]
Применяем. Сначала с автооткатом через 120 секунд, чтобы не потерять доступ:
netplan try
Если связь не пропала, подтверждаем по Enter. Либо сразу:
netplan apply
Проверяем:
resolvectl status
Linux: systemd-resolved напрямую
Подходит для Debian 12, Ubuntu, Fedora, если сеть настроена не через netplan:
nano /etc/systemd/resolved.conf
Раскомментируем и заполняем секцию:
[Resolve] DNS=10.8.8.8 10.4.4.4 FallbackDNS=8.8.8.8 1.1.1.1
Перезапускаем и проверяем:
systemctl restart systemd-resolved resolvectl status resolvectl flush-caches
Linux: NetworkManager (nmcli)
AlmaLinux, Rocky, CentOS 8 и новее, часть сборок Debian. Смотрим имя соединения:
nmcli con show
Прописываем DNS и запрещаем перезапись адресов от DHCP:
nmcli con mod "System eth0" ipv4.dns "10.8.8.8 10.4.4.4" nmcli con mod "System eth0" ipv4.ignore-auto-dns yes nmcli con up "System eth0"
Проверка:
nmcli dev show eth0 | grep DNS
Linux: CentOS 7 и старые RHEL
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Добавляем или правим строки:
DNS1=10.8.8.8 DNS2=10.4.4.4 PEERDNS=no
Перезапускаем сеть:
systemctl restart network
Linux: Debian с /etc/network/interfaces
nano /etc/network/interfaces
В блок нужного интерфейса добавляем строку:
dns-nameservers 10.8.8.8 10.4.4.4
Применяем:
systemctl restart networking
Строка сработает, если установлен пакет resolvconf:
apt install resolvconf
Linux: быстрая правка /etc/resolv.conf
Способ на один раз, например чтобы доставить пакеты прямо сейчас. После перезагрузки или переподключения DHCP файл перезапишется:
nano /etc/resolv.conf
Содержимое:
nameserver 10.8.8.8 nameserver 10.4.4.4 options timeout:2 attempts:2 rotate
Чтобы правка не слетала, файл можно закрыть от изменений:
chattr +i /etc/resolv.conf
Снять защиту:
chattr -i /etc/resolv.conf
Внимание! Флаг +i запрещает изменение файла даже системным службам. Это костыль, а не решение: правильнее настроить DNS штатным способом из разделов выше или отключить генератор файла, как описано в следующем разделе.
Что делать, если resolv.conf перезаписывается
Сначала выясните, кто им управляет:
ls -l /etc/resolv.conf head -3 /etc/resolv.conf
Если это симлинк на /run/systemd/resolve/stub-resolv.conf, то nano /etc/resolv.conf правит не симлинк, а файл в каталоге /run. Этот каталог лежит в оперативной памяти и очищается при перезагрузке, а systemd-resolved пересоздаёт файл при каждом своём рестарте. Поэтому ручная правка живёт до первой перезагрузки.
Удалить файл и создать новый можно, это рабочий способ, но только вместе с отключением того, кто его генерирует. Иначе dhclient, NetworkManager или systemd-resolved вернут свою версию при первом же обновлении аренды DHCP или рестарте сети.
Вариант 1. Оставить systemd-resolved, но отдать системе реальные адреса вместо заглушки 127.0.0.53. Сами адреса при этом берутся из /etc/systemd/resolved.conf, см. раздел выше:
rm /etc/resolv.conf ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Вариант 2. Полностью статический файл. Отключаем службу и пишем файл руками:
systemctl disable --now systemd-resolved rm -f /etc/resolv.conf printf 'nameserver 10.8.8.8\nnameserver 10.4.4.4\n' > /etc/resolv.conf
После этого запретите DHCP-клиенту подсовывать свои адреса, иначе файл перезапишется при обновлении аренды: use-dns: false в netplan, PEERDNS=no в ifcfg, ipv4.ignore-auto-dns yes в nmcli.
Посмотреть, кто ещё может писать в файл:
systemctl is-active systemd-resolved NetworkManager grep -rl resolv.conf /etc/dhcp/ /etc/NetworkManager/ 2>/dev/null
Проверка результата
Утилиты dig и nslookup ставятся отдельно:
apt install dnsutils # Debian, Ubuntu yum install bind-utils # CentOS, AlmaLinux, Rocky
Проверяем, что резолвер отвечает и какой адрес отдаёт:
dig survivalhost.org @10.8.8.8 +short dig survivalhost.org +short nslookup survivalhost.org
В выводе dig без указания сервера строка SERVER: должна показывать ваш новый резолвер. Время ответа смотрите в строке Query time, с наших резолверов оно обычно в пределах пары миллисекунд.
На Windows:
nslookup survivalhost.org Resolve-DnsName survivalhost.org
Если резолв не заработал
- Проверьте доступность резолвера:
ping 10.8.8.8. С наших VDS он должен отвечать. - Проверьте, что порт 53 не закрыт файрволом. При политике
OUTPUT DROPв iptables нужно разрешить исходящий DNS:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
- Убедитесь, что после правки конфига файл
/etc/resolv.confдействительно изменился:cat /etc/resolv.conf. - Если адреса возвращаются к старым после перезагрузки, значит их перезаписывает DHCP-клиент. Отключите приём DNS от DHCP:
use-dns: falseв netplan,PEERDNS=noв ifcfg,ipv4.ignore-auto-dns yesв nmcli. - Адреса 10.8.8.8 и 10.4.4.4 не отвечают с домашнего компьютера и с серверов другого хостинга, это нормально. Там указывайте публичные резолверы.
Если после всех шагов резолв не поднялся, напишите в техподдержку и приложите вывод cat /etc/resolv.conf и dig survivalhost.org @10.8.8.8: Взаимодействие с техподдержкой.
Настройка DNS
<< SurvivalHost Wiki
| К началу статьи