web-dev-qa-db-fra.com

DIG & NSLOOKUP ne peut pas résoudre les hôtes locaux à moins que je spécifie le serveur DNS (local) à utiliser

Je crée un petit réseau privé au sein de mon réseau universitaire. J'ai une boîte Centos 6 (Sun) Assis entre mon réseau privé et l'université WAN. eth0 sur le Sun est connecté au WAN et eth1 à mon réseau privé via un interrupteur intelligent Netgear. Sun agit comme un routeur pour Le réseau privé, transmet le trafic d'ETH1 à Eth0 à l'aide NAT configuré à l'aide d'iptables. Les clients du réseau privé (dont il y en a pour le moment, Mercury) Ont assigné une adresse IP, une passerelle, etc. et un nom d'hôte via Dnsmasq fonctionnant sur le Sun. Dnsmasq est configuré pour envoyer une adresse IP et un nom d'hôte spécifique à l'adresse MAC (s) du ou des clients.

J'ai le codage dur le nom d'hôte/ips dans /etc/hosts Sur Sun seulement:

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.42.1    Sun sun.beowulf.iecs
192.168.42.2    mercury mercury.beowulf.iecs

Pour le moment, l'adresse IP de l'ETH0 (WAN Face) est attribuée via DHCP (-Sun Eth0 est attribué la même adresse IP tout le temps indépendamment; voici comment l'université fait des choses mais je suis dans le processus d'obtention de cela modifié pour me permettre d'attribuer une adresse IP statique). Mon /etc/resolv.conf Sur Sun est:

; generated by /sbin/dhclient-script
search biol.uregina.ca
nameserver 142.3.102.202
nameserver 142.3.100.15

qui semble être écrasé lorsque je redémarre alors j'ai ce qui suit /etc/dnsmasq-resolv.conf

search beowulf.iecs biol.uregina.ca
nameserver 127.0.0.1
nameserver 8.8.8.8

et ont demandé à DNSMASQ de l'utiliser au lieu de /etc/resolv.conf

# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
resolv-file=/etc/dnsmasq-resolv.conf

# By  default,  dnsmasq  will  send queries to any of the upstream
# servers it knows about and tries to favour servers to are  known
# to  be  up.  Uncommenting this forces dnsmasq to try each query
# with  each  server  strictly  in  the  order  they   appear   in
# /etc/resolv.conf
strict-order

Surtout cette configuration fonctionne. Le problème que j'ai (et je ne suis pas sûr que ce soit un majeur, mais ...) est-ce que nslookup et Dig _ Les deux échecent de résoudre les noms pour Sun = et mercure sauf si , j'informe ces commandes que DNS Server doit interroger:

# nslookup Sun.beowulf.iecs Sun.beowulf.iecs
Server:     Sun.beowulf.iecs
Address:    192.168.42.1#53

Name:   Sun.beowulf.iecs
Address: 192.168.42.1

# nslookup Sun sun.beowulf.iecs
Server:     Sun.beowulf.iecs
Address:    192.168.42.1#53

Name:   Sun
Address: 192.168.42.1

# nslookup Sun
Server:     142.3.102.202
Address:    142.3.102.202#53

** server can't find Sun: NXDOMAIN

# nslookup Sun.beowulf.iecs
Server:     142.3.102.202
Address:    142.3.102.202#53

** server can't find Sun.beowulf.iecs: NXDOMAIN

La même sortie est donnée pour Mercury au lieu de ** Sun *. Représentant Dig Sortie est:

# Dig @192.168.42.1 mercury.beowulf.iecs

; <<>> Dig 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @192.168.42.1 mercury.beowulf.iecs
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65090
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mercury.beowulf.iecs.      IN  A

;; ANSWER SECTION:
mercury.beowulf.iecs.   0   IN  A   192.168.42.2

;; Query time: 0 msec
;; SERVER: 192.168.42.1#53(192.168.42.1)
;; WHEN: Wed Jun 25 12:05:31 2014
;; MSG SIZE  rcvd: 54

et ne fonctionne pas lorsque je ne spécifie pas le serveur de noms à utiliser:

# Dig mercury.beowulf.iecs

; <<>> Dig 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> mercury.beowulf.iecs
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 29153
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;mercury.beowulf.iecs.      IN  A

;; AUTHORITY SECTION:
.           7988    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2014062500 1800 900 604800 86400

;; Query time: 0 msec
;; SERVER: 142.3.102.202#53(142.3.102.202)
;; WHEN: Wed Jun 25 12:05:37 2014
;; MSG SIZE  rcvd: 113

Dans le dernier exemple ci-dessus (Dig), la fonction SERVER: 142.3.102.202#53(142.3.102.202) est le premier serveur DNS dans /etc/resolv.conf SO par défaut Sun semble utiliser ce serveur de noms Au lieu de DNSMASQ, je m'attendais à ce qu'il utiliserait à cause des paramètres de /etc/dnsmasq.conf.

Alors, est-ce un problème? Je peux ping Sun et mercure de -Sun et se connecter à Mercury de Sun utiliser ssh.

S'il s'agit d'un problème (ou même si ce n'est pas), existe-t-il un moyen de configurer Sun et dnsmasq exécuté dessus pour résoudre automatiquement les noms d'hôte privés?

Dig ( Informations de domaine Groperer) ==) et nslookup ( Demander des serveurs de noms Internet de manière interactive) sont des outils qui interrogent les serveurs de noms. À moins qu'un serveur de noms spécifique soit spécifié en tant qu'argument de commande de commande, ils interrogeront le ou les serveurs de noms trouvés dans /etc/resolv.conf. Ils ne considèrent tout simplement pas des sources alternatives d'informations d'hôte telles que le /etc/hosts Fichier ou autres sources spécifiées dans /etc/nsswitch.conf.

Si vous souhaitez forcer toutes les requêtes DNS via DNSMASQ sur votre Sun hôte, le /etc/resolv.conf Il devrait indiquer Dnsmasq, c'est-à-dire que ça devrait ressembler à:

#/etc/resolv.conf on Sun
nameserver 127.0.0.1

Pour empêcher ce fichier d'être écrasé lorsque vous redémarrez l'interface de réseau Eth0 Edit /etc/sysconfig/network-scripts/ifcfg-eth0 et ajouter le optionPEERDNS=no

Deuxièmement dans /etc/dnsmasq-resolv.conf Vous essayez de configurer DNSMASQ pour vous utiliser comme le serveur de noms en amont nameserver 127.0.0.1... Ce fichier devrait ressembler à:

#/etc/dnsmasq-resolv.conf
search beowulf.iecs biol.uregina.ca
nameserver 8.8.8.8

si vous souhaitez utiliser le serveur de noms de Google. Il serait peut-être une bonne idée d'utiliser les serveurs de noms de l'université 142.3.102.202 et 142.3.100.15, car il n'est pas rare d'avoir certaines ressources uniquement visibles du réseau de campus.

Si votre Mercury L'hôte est configuré par DHCP, il doit obtenir sa configuration de DNSMASQ et de la /etc/resolv.conf Il pointe du serveur de noms DNSMASQ sur 192.168.42.1

9
HBruijn

Les 142.3.102.202 et 142.3.100.15 ne connaissent rien de votre réseau privé local afin qu'ils rentrent correctement NXDOMAIN . Ce sont également les serveurs de noms par défaut du système afin de ne pas spécifier de serveur de noms qu'ils seront utilisés.

Vous devrez écraser le contenu de /etc/resolv.conf et configurer les directives du serveur de noms pour pointer vers votre serveur de noms DNSMASQ local qui doit être configuré pour transférer les requêtes qu'elle ne peut pas répondre en amont.

4
user9517