Настройка DNS на сервере
DNS-сервер превращает доменные имена в IP-адреса. Если резолвер, выданный по DHCP, медленный или не отвечает, сервер долго открывает сайты, не ставит пакеты и не качает игровые файлы через SteamCMD. Ошибки Temporary failure in name resolution, Could not resolve host, Не удается преобразовать DNS-адрес сервера в большинстве случаев лечатся сменой DNS.
Какие адреса указывать
Заголовок раздела «Какие адреса указывать»Наши локальные резолверы, рекомендуем их на всех VDS и выделенных серверах:
10.8.8.810.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: через графический интерфейс
Заголовок раздела «Windows Server: через графический интерфейс»- Нажмите Win + R, введите
ncpa.cpl, нажмите ОК.

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

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

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

- ОК, ОК. Настройки IP-адреса и шлюза не трогайте.
Важно: если сервер получает адрес по DHCP, менять галку на «Получить IP-адрес автоматически» не нужно, DNS задаётся отдельно от адреса.
Windows Server: через PowerShell
Заголовок раздела «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-DnsClientCacheResolve-DnsName survivalhost.orgВернуть автоматические настройки от DHCP:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddressesWindows Server: через netsh
Заголовок раздела «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=nonetsh interface ipv4 add dnsservers name="Ethernet" address=10.4.4.4 index=2 validate=noКлюч validate=no отключает проверку резолвера при добавлении, иначе Windows может отказаться принимать адрес.
Проверка и сброс кэша:
netsh interface ipv4 show dnsserversipconfig /flushdnsnslookup survivalhost.orgLinux: определяем, чем управляется resolv.conf
Заголовок раздела «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)
Заголовок раздела «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 statusLinux: systemd-resolved напрямую
Заголовок раздела «Linux: systemd-resolved напрямую»Подходит для Debian 12, Ubuntu, Fedora, если сеть настроена не через netplan:
nano /etc/systemd/resolved.confРаскомментируем и заполняем секцию:
[Resolve]DNS=10.8.8.8 10.4.4.4FallbackDNS=8.8.8.8 1.1.1.1Перезапускаем и проверяем:
systemctl restart systemd-resolvedresolvectl statusresolvectl flush-cachesLinux: NetworkManager (nmcli)
Заголовок раздела «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 yesnmcli con up "System eth0"Проверка:
nmcli dev show eth0 | grep DNSLinux: CentOS 7 и старые RHEL
Заголовок раздела «Linux: CentOS 7 и старые RHEL»nano /etc/sysconfig/network-scripts/ifcfg-eth0Добавляем или правим строки:
DNS1=10.8.8.8DNS2=10.4.4.4PEERDNS=noПерезапускаем сеть:
systemctl restart networkLinux: Debian с /etc/network/interfaces
Заголовок раздела «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 resolvconfLinux: быстрая правка /etc/resolv.conf
Заголовок раздела «Linux: быстрая правка /etc/resolv.conf»Способ на один раз, например чтобы доставить пакеты прямо сейчас. После перезагрузки или переподключения DHCP файл перезапишется:
nano /etc/resolv.confСодержимое:
nameserver 10.8.8.8nameserver 10.4.4.4options timeout:2 attempts:2 rotateЧтобы правка не слетала, файл можно закрыть от изменений:
chattr +i /etc/resolv.confСнять защиту:
chattr -i /etc/resolv.confЧто делать, если resolv.conf перезаписывается
Заголовок раздела «Что делать, если resolv.conf перезаписывается»Сначала выясните, кто им управляет:
ls -l /etc/resolv.confhead -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.confln -s /run/systemd/resolve/resolv.conf /etc/resolv.confВариант 2. Полностью статический файл. Отключаем службу и пишем файл руками:
systemctl disable --now systemd-resolvedrm -f /etc/resolv.confprintf '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 NetworkManagergrep -rl resolv.conf /etc/dhcp/ /etc/NetworkManager/ 2>/dev/nullПроверка результата
Заголовок раздела «Проверка результата»Утилиты dig и nslookup ставятся отдельно:
apt install dnsutils # Debian, Ubuntuyum install bind-utils # CentOS, AlmaLinux, RockyПроверяем, что резолвер отвечает и какой адрес отдаёт:
dig survivalhost.org @10.8.8.8 +shortdig survivalhost.org +shortnslookup survivalhost.orgВ выводе dig без указания сервера строка SERVER: должна показывать ваш новый резолвер. Время ответа смотрите в строке Query time, с наших резолверов оно обычно в пределах пары миллисекунд.
На Windows:
nslookup survivalhost.orgResolve-DnsName survivalhost.orgЕсли резолв не заработал
Заголовок раздела «Если резолв не заработал»- Проверьте доступность резолвера:
ping 10.8.8.8. С наших VDS он должен отвечать. - Проверьте, что порт 53 не закрыт файрволом. При политике
OUTPUT DROPв iptables нужно разрешить исходящий DNS:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPTiptables -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: Взаимодействие с техподдержкой.