Настройка DNS в различных операционных системах

Для корректного разрешения в системе доменных имен, необходимо прописать в ней адреса DNS-серверов. В различных ОС это делается по-разному. Ниже приведены примеры с указанием публичных серверов ALFIS.

Системы c systemd-resolved

Этот способ подойдет для Ubuntu 15.10+, Mint 18.0+ и других дистрибутивов на базе Debian версии 8 и выше, а так же, дистрибутивов, в которых systemd установлен по-умолчанию (RHEL 7+, CentOS 7+, Fedora 15+ и др.).

В файл /etc/systemd/resolved.conf нужно прописать следующее:

[Resolve]
DNS=302:db60::53 300:6223::53 302:7991::53 300:170::53
Domains=~.

здесь перечислены адреса DNS-серверов через пробел, без указания номеров портов.

в отдельных случаях можно отключить директиву

DNSStubListener=no

Далее нужно выполнить перезапуск службы systemd-resolved:

sudo systemctl restart systemd-resolved

Системы без systemd

Способ подойдет для систем, где для конфигурирования основного системного резолвера используется файл /etc/resolv.conf (Slackware, Debian и др.).

В файл /etc/resolv.conf нужно прописать следующее:

/etc/resolv.conf
nameserver 302:db60::53  
nameserver 300:6223::53 
nameserver 302:7991::53
nameserver 300:170::53

Выборка DNS осуществляется с верхнего в списке.
На случай отключения пира Yggdrasil, можно добавить аварийный CloudFlare и переключаться на него по тайм-ауту 5 секунд:

/etc/resolv.conf
nameserver 301:5eb5:f061:678e::53
nameserver 1.1.1.1
options timeout:5

Дополнительные опции resolv.conf описаны в документации.

Примечание: в некоторых случаях может потребоваться отключить для NetworkManager управление резолвером (если NetworkManager присутствует в системе):
В файле /etc/NetworkManager/NetworkManager.conf, в секции [main] добавляется строка:

dns=none

После этого внесенные изменения в /etc/resolv.conf не будут перезаписываться при перезагрузке (перезапуске NetworkManager).

dhcp/resolvconf

Если в системе используется динамическая конфигурация dhcp/resolvconf, следует обратить внимание на файл /etc/dhcp/dhclient.conf и закомментировать строки:

# domain-name, domain-name-servers, domain-search, host-name,
# dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,

Затем, добавить соответствующие nameserver в /etc/resolvconf/resolv.conf.d/base и перезагрузить настройки:

resolvconf -u

Проверить результат можно командой dig, в результирующем файле /etc/resolv.conf необходимый сервер должен быть расположен в начале списка.

Windows

Щёлкаем ПКМ по иконке «Сеть» в системном трее, выбираем «Центр управления сетями и общим доступом». В открывшемся окне нажимаем «Изменение параметров адаптера», щёлкаем ПКМ на адаптере Yggdrasil, выбираем «Свойства», в открывшемся окне выделяем «Протокол Интернета версии 6», нажимаем кнопку «Свойства», в поле «Предпочитаемый DNS-сервер» прописываем: 302:db60::53, в поле «Альтернативный DNS-сервер» прописываем 300:6223::53, нажимаем ОК во всех окнах, где есть эта кнопка.

Так же, в Windows настроить DNS можно из командной строки:

netsh interface ip set dns name="Имя подключения" static 302:db60::53
netsh interface ip set dns name="Имя подключения" 300:6223::53 index=2

Можно использовать такой VB-скрипт:

Set oShell = CreateObject("Shell.Application")
oShell.ShellExecute "netsh.exe", "interface ip set dns name=""Подключение по локальной сети"" static 302:db60::53", "", "runas", 0
oShell.ShellExecute "netsh.exe", "interface ip add dns name=""Подключение по локальной сети"" 300:6223::53 index=2", "", "runas", 0

'возврат к значениям, устанавливаемым DHCP
'oShell.ShellExecute "netsh.exe", "interface ip set dnsservers name=""Подключение по локальной сети"" source=dhcp", "", "runas", 0

Пример PowerShell-скрипта:

Set-DnsClientServerAddress -InterfaceAlias "Yggdrasil" -ServerAddresses ("302:7991::53", "302:db60::53", "300:6223::53", "324:71e:281a:9ed3::53")

Если Yggdrasil запускается, как системная служба, и вы хотите прописать DNS на адаптер Yggdrasil, то с помощью планировщика Windows можно создать задание, из которого будет запускаться нужный скрипт при активации нужного сетевого подключения. Пример можно посмотреть здесь: How to launch a command on network connection/disconnection?

Очистка кэша DNS

В некоторых случаях, когда меняется IP-адрес, к которому привязано доменное имя (например, если в ALFIS перемайнили домен на новый адрес), система продолжает выдавать старый IP-адрес. Это связано с кешированием данных DNS в вашей системе. В таких случаях нужно просто очистить кэш DNS.

Linux c systemd-resolved:

sudo systemd-resolve --flush-caches

Windows:

ipconfig /flushdns

Так же, может потребоваться очистить кэш браузера, которым вы пользуетесь.

Подробнее об этом можно почитать здесь или здесь.

Обсуждение

Antiokh, 2022/06/09 16:53
Powershell:

Set-DnsClientServerAddress -InterfaceAlias "Yggdrasil" -ServerAddresses ("302:7991::53", "302:db60::53", "300:6223::53", "324:71e:281a:9ed3::53")
ipconfig /flushdns

d4708, 2023/11/29 01:58
1. Что означает маска Domains=~.
2. Имеет ли значение приоритет слева направо в директиве DNS=
3. Правильно ли указать для альтернативного порта на ipv6 формат DNS=[IP]:PORT? Так понимаю, что по умолчанию коннект всегда идет на 53
4. netstat -tulpn | grep LISTEN у меня показывает две локальные службы на 53 порту (systemd-resolv и alfis), не пойму, какой из них отдается приоритет в системе

newbie, 2023/12/19 00:39
Про это в man resolved.conf написано.

Люди делают обычно один системный резолвер, а alfis настраивают, как upstream для оного…

d4708, 2023/11/29 18:01, 2023/11/29 18:03
Обнаружил у себя два systemd-resolv

netstat -tulpn | grep LISTEN

tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 1459/systemd-resolv
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN 1459/systemd-resolv

как такое может быть?

убунта обновлялась через dist-upgrade, может причина в этом..

d4708, 2023/12/30 21:41
решил прикрутить алфис в качестве резольвера на debian 12

где-то динамически цепляет в начале /etc/resolv.conf
nameserver 192.168.0.1

d4708, 2023/12/30 21:48
угрохал пару часов на поиски решения, в итоге закомментил строки в
/etc/dhcp/dhclient.conf

# domain-name, domain-name-servers, domain-search, host-name,
# dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,

сам резольвер alfis прописан здесь
/etc/resolvconf/resolv.conf.d/base

теперь цепляет только его и команда dig работает нормально после ребута.

Только авторизованные участники могут оставлять комментарии.
yggdrasil/dns/dns_sys_configure.txt · Последнее изменение: 2024/04/06 05:23 — d4708
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki