Estou configurando uma pequena rede privada dentro da minha rede universitária. Eu tenho uma caixa Centos 6 ( sun ) entre minha rede privada e a universidade WAN. A eth0 no sun é conectada à WAN e eth1 à minha rede privada por meio de um comutador inteligente netgear. sun atua como um roteador para a rede privada, encaminha o tráfego de eth1 para eth0 usando o NAT configurado usando o iptables. Os clientes na rede privada (dos quais há apenas no momento, mercúrio ) recebem um IP, gateway, etc e nome do host via dnsmasq em execução no sun . O dnsmasq é configurado para enviar um IP e nome de host específicos para o (s) endereço (s) MAC do (s) cliente (s).
Eu codifiquei o hostname / IPs somente em /etc/hosts
no sun :
# 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
No momento, o endereço IP de eth0 (voltado para WAN) é atribuído via DHCP ( sun eth0 é atribuído o mesmo IP o tempo todo, independentemente disso; é assim que a universidade faz as coisas, mas eu m no processo de conseguir isso mudou para permitir-me atribuir um IP estático). Meu /etc/resolv.conf
no sun é:
; generated by /sbin/dhclient-script
search biol.uregina.ca
nameserver 142.3.102.202
nameserver 142.3.100.15
que parece estar sendo sobrescrito quando eu reinicio, então eu tenho o seguinte /etc/dnsmasq-resolv.conf
search beowulf.iecs biol.uregina.ca
nameserver 127.0.0.1
nameserver 8.8.8.8
e instruíram o dnsmasq a usá-lo em vez 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
Principalmente esta configuração está funcionando. O problema que tenho (e não tenho certeza se é um dos principais, mas ...) é que nslookup
e dig
não resolvem nomes para sun e mercúrio a menos que eu informe a esses comandos qual servidor DNS consultar:
# 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
A mesma saída é dada para mercúrio em vez de ** sun *. A saída dig
representativa é:
# 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
e não funciona quando não especifico o servidor de nomes a usar:
# 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
No último exemplo acima ( dig
) o SERVER: 142.3.102.202#53(142.3.102.202)
é o primeiro servidor DNS em /etc/resolv.conf
, então por padrão o sun parece estar usando este servidor de nomes em vez do dnsmasq que eu teria esperava que fosse usado por causa das configurações em /etc/dnsmasq.conf
.
Então, isso é um problema? Posso pingar sun e mercúrio de sun e conectar-me ao mercúrio do sun usando SSH.
Se isso for um problema (ou mesmo que não seja), existe uma maneira de configurar sun e dnsmasq
em execução para resolver os nomes de host particulares automaticamente?