J'avais précédemment installé Xubuntu 16.04 et il reconnaissait les noms d'hôte définis par mon routeur (Tomato).
Par exemple, j'ai un ordinateur avec le nom mate
sur le réseau avec une adresse IP statique de 192.168.2.202
, et auparavant je pouvais le faire:
$ Host mate
mate has address 192.168.2.202
Mais maintenant je reçois ceci:
$ Host mate
Host mate not found: 2(SERVFAIL)
Cette fois-ci, j'ai effectué une installation minimale sur le bureau. Je me demande donc s'il manque un paquet.
$ cat /var/run/systemd/resolve/resolv.conf:
nameserver 192.168.2.1
$ cat /var/run/NetworkManager/resolv.conf
nameserver 127.0.0.53
$ netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3421/VBoxHeadless
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 663/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 950/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 737/cupsd
tcp6 0 0 :::5900 :::* LISTEN 3421/VBoxHeadless
tcp6 0 0 :::22 :::* LISTEN 950/sshd
tcp6 0 0 ::1:631 :::* LISTEN 737/cupsd
udp 14784 0 0.0.0.0:52712 0.0.0.0:* 2092/VirtualBox
udp 8704 0 0.0.0.0:53789 0.0.0.0:* 2092/VirtualBox
udp 9536 0 0.0.0.0:5353 0.0.0.0:* 730/avahi-daemon: r
udp 19648 0 0.0.0.0:55126 0.0.0.0:* 2092/VirtualBox
udp 8704 0 0.0.0.0:39114 0.0.0.0:* 2092/VirtualBox
udp 13248 0 0.0.0.0:41109 0.0.0.0:* 2092/VirtualBox
udp 0 0 0.0.0.0:57555 0.0.0.0:* 730/avahi-daemon: r
udp 3648 0 0.0.0.0:59213 0.0.0.0:* 2092/VirtualBox
udp 8064 0 0.0.0.0:59519 0.0.0.0:* 2092/VirtualBox
udp 3648 0 0.0.0.0:48795 0.0.0.0:* 2092/VirtualBox
udp 3648 0 0.0.0.0:48900 0.0.0.0:* 2092/VirtualBox
udp 36096 0 127.0.0.53:53 0.0.0.0:* 663/systemd-resolve
udp 37120 0 0.0.0.0:68 0.0.0.0:* 1066/dhclient
udp 15424 0 0.0.0.0:33008 0.0.0.0:* 2092/VirtualBox
udp 3648 0 0.0.0.0:49597 0.0.0.0:* 2092/VirtualBox
udp 14464 0 0.0.0.0:33395 0.0.0.0:* 2092/VirtualBox
udp 0 0 0.0.0.0:631 0.0.0.0:* 828/cups-browsed
udp 19840 0 0.0.0.0:49883 0.0.0.0:* 2092/VirtualBox
udp 14592 0 0.0.0.0:33614 0.0.0.0:* 2092/VirtualBox
udp6 0 0 :::51356 :::* 730/avahi-daemon: r
udp6 49344 0 :::5353 :::* 730/avahi-daemon: r
$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 6 (vboxnet2)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 5 (vboxnet1)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 4 (vboxnet0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 3 (wlp4s1)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 2 (eno1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.2.1
Mon routeur est 192.168.2.1
L'utilisation de Dig
indique que le routeur signale correctement le nom d'hôte.
$ Dig @192.168.2.1 mate
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> @192.168.2.1 mate
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47046
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mate. IN A
;; ANSWER SECTION:
mate. 0 IN A 192.168.2.202
;; Query time: 0 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: Mon Jun 18 18:53:26 PDT 2018
;; MSG SIZE rcvd: 38
Mais si je ne mentionne pas spécifiquement l'adresse IP DNS du routeur, je ne la trouve pas.
$ Dig mate
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> mate
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 65394
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;mate. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jun 18 19:06:13 PDT 2018
;; MSG SIZE rcvd: 33
Il semble donc que même s’il figure dans la liste /var/run/systemd/resolve/resolv.conf
il n’est pas utilisé. Comment puis-je réparer ça?
Cela semble lié à ce problème:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/162432
Lors d'une nouvelle installation, /etc/resolv.conf
est lié à /run/systemd/resolve/stub-resolv.conf
au lieu de /run/systemd/resolve/resolv.conf
.
La mise à jour par https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624320/comments/8 l'a corrigée.
Voici ce qui se produit: les problèmes résolus par systemd ne résolvent pas les noms de domaine locaux si ceux-ci ne sont pas des noms complets tels que mate.local
Comme indiqué dans un document sur Systemd-networkd , une bonne solution consiste à supprimer le fichier /etc/nsswitch.conf
Sudo nano /etc/nsswitch.conf
Modifier la ligne des hôtes
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
# ---- MODIFY THIS LINE ------------------------------------------------
# hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
# ---- TO --------------------------------------------------------------
hosts: files mdns4_minimal dns myhostname
# ---- THATS ALL -------------------------------------------------------
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Explication:
Le nom d’hôte résout d’abord la recherche dans les fichiers (/etc/hosts
), puis avec avahi (zeroconf), puis demande au serveur DNS. Et ne vous arrêtez plus si avahi ne trouve pas un nom local comme [NOTFOUND=return]
forcé. J'espère que c'est clair.
service de redémarrage
Sudo systemctl restart systemd-resolved