У меня есть работа сервера DNS 172.18.0.2
и я хочу использовать его в качестве своего сервера DNS. Я вошел в администратора сети и настроил мое соединение:
Работы сервера:
$ host test 172.18.0.2
Using domain server:
Name: 172.18.0.2
Address: 172.18.0.2#53
Aliases:
test has address 93.184.216.34
но Ubuntu не использует его:
$ host test
Host test not found: 2(SERVFAIL)
Как я могу получить ожидаемое поведение?
Версия 19.04 Ubuntu.
systemd-resolve --status
вывод:
Link 2 (enp0s31f6)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 172.18.0.2
DNS Servers: 172.18.0.2
DNS Domain: ~.
dig host
вывод:
; <<>> DiG 9.11.5-P1-1ubuntu2.6-Ubuntu <<>> host
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 39546
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;host. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: dim. déc. 15 21:08:57 CET 2019
;; MSG SIZE rcvd: 33
Самый верный способ заставить все сотрудничать с Вашим пользовательским DNS будет состоять в том, чтобы использовать Ваш собственный TLD, такой как .local или подобный, и создание что область поиска в Вашем/etc/resolv.conf. Тот путь при поиске 'хоста', он будет автоматически знать для поиска .local домена. DNS был разработан на основе доменов.
, Если бы Вы действительно не хотите использовать TLD, возможно, запись в /etc/hosts
удовлетворила бы Вашему варианту использования. Это отобразило бы 'хост' непосредственно ресурса, который Вы предназначаете.
Вот один метод для того, чтобы вручную указать серверы имен, если Вы в настоящее время получаете получение забавного бизнеса из-за systemd тупикового сопоставителя (похоже, что это могло иметь место на вырыть вывод Вы, если, и у меня были проблемы в прошлом с ним. Создайте резервную копию всех конфигураций прежде, чем внести любые изменения и знать, что это принимает неизмененный/etc/nsswitch.conf):
ниже команды укажет, является ли Ваш/etc/resolv.conf символьной ссылкой:
kano@:~$ file -s /etc/resolv.conf
/etc/resolv.conf: symbolic link to ../run/systemd/resolve/stub-resolv.conf
Для тестирования этого метода создайте резервную копию исходной resolv.conf символьной ссылки в конечном счете, необходимо откатывать (для откатывания, просто переименуйте резервное копирование/etc/resolv.conf, Вы не должны должны быть перезагружать для любого из этого для вступления в силу). Изменение существующей символьной ссылки не будет работать:
kano@:~$ mv /etc/resolv.conf /etc/resolv.conf.bak
Наконец, укажите желаемый сервер имен и поисковые значения в Вашем новом, пользовательском/etc/resolv.conf использование текстового редактора по Вашему выбору (мой экземпляр AWS/etc/resolv.conf содержание ниже, необходимо будет адаптировать это в соответствии со средой).
kano@:~$ cat /etc/resolv.conf
nameserver 172.31.0.2
search us-west-2.compute.internal
, Если это сортирует проблему определения имен (и можно проверить через dig host
, что она запрашивает указанный сервер имен вместо тупикового сопоставителя 127.0.0.53), я рассмотрел бы добавление неизменного атрибута (можно проверить атрибуты с lsattr filename
) к/etc/resolv.conf, чтобы препятствовать тому, чтобы upgrades/systemd перезаписал его через:
chattr +i /etc/resolv.conf
необходимо будет удалить неизменный атрибут через болтовню-i для изменения этого файла в будущем.