Для корректного разрешения в системе доменных имен, необходимо прописать в ней адреса DNS-серверов. В различных ОС это делается по-разному. Ниже приведены примеры с указанием публичных серверов ALFIS.
Этот способ подойдет для 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
Способ подойдет для систем, где для конфигурирования основного системного резолвера используется файл /etc/resolv.conf
(Slackware, Debian и др.).
В файл /etc/resolv.conf
нужно прописать следующее:
nameserver 302:db60::53 nameserver 300:6223::53 nameserver 302:7991::53 nameserver 300:170::53
Выборка DNS осуществляется с верхнего в списке.
На случай отключения пира Yggdrasil, можно добавить аварийный CloudFlare и переключаться на него по тайм-ауту 5 секунд:
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, следует обратить внимание на файл /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
необходимый сервер должен быть расположен в начале списка.
Щёлкаем ПКМ по иконке «Сеть» в системном трее, выбираем «Центр управления сетями и общим доступом». В открывшемся окне нажимаем «Изменение параметров адаптера», щёлкаем ПКМ на адаптере 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?
В некоторых случаях, когда меняется IP-адрес, к которому привязано доменное имя (например, если в ALFIS перемайнили домен на новый адрес), система продолжает выдавать старый IP-адрес. Это связано с кешированием данных DNS в вашей системе. В таких случаях нужно просто очистить кэш DNS.
Linux c systemd-resolved:
sudo systemd-resolve --flush-caches
Windows:
ipconfig /flushdns
Так же, может потребоваться очистить кэш браузера, которым вы пользуетесь.
Обсуждение
Set-DnsClientServerAddress -InterfaceAlias "Yggdrasil" -ServerAddresses ("302:7991::53", "302:db60::53", "300:6223::53", "324:71e:281a:9ed3::53")
ipconfig /flushdns
2. Имеет ли значение приоритет слева направо в директиве DNS=
3. Правильно ли указать для альтернативного порта на ipv6 формат DNS=[IP]:PORT? Так понимаю, что по умолчанию коннект всегда идет на 53
4. netstat -tulpn | grep LISTEN у меня показывает две локальные службы на 53 порту (systemd-resolv и alfis), не пойму, какой из них отдается приоритет в системе
Люди делают обычно один системный резолвер, а alfis настраивают, как upstream для оного…
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, может причина в этом..
где-то динамически цепляет в начале /etc/resolv.conf
nameserver 192.168.0.1
/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 работает нормально после ребута.