我正在我的大学网络中建立一个小型的专用网。我有一个Centos 6盒(太阳)坐在我的私人网络和大学广域网之间。sun上的eth0通过一个netgear智能交换机连接到广域网和eth1到我的专用网络。sun充当专用网络的路由器,使用使用iptables配置的NAT将通信从eth1转发到eth0。私有网络上的客户端(目前只有水银)通过在太阳上运行的dnsmasq分配一个IP、网关等和主机名。dnsmasq被配置为向客户端(S)的MAC地址(Es)发送特定的IP和主机名。
我只在sun上对/etc/hosts中的主机名/I进行硬编码:
# 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目前,eth0 (面向广域网)的IP地址是通过DHCP分配的(sun eth0无论何时都分配相同的IP;这是大学的工作方式,但我正在对此进行更改,以允许我分配静态IP)。我在太阳上的/etc/resolv.conf是:
; generated by /sbin/dhclient-script
search biol.uregina.ca
nameserver 142.3.102.202
nameserver 142.3.100.15它似乎在重新启动时被覆盖,因此我有以下/etc/dnsmasq-resolv.conf
search beowulf.iecs biol.uregina.ca
nameserver 127.0.0.1
nameserver 8.8.8.8并指示dnsmasq使用它而不是/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大多数情况下,这种设置是有效的。我有个问题(我不确定这是个大问题,但是.)nslookup和dig都无法解析sun和is的名称,除非我通知这些命令要查询哪个DNS服务器:
# 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汞的产量也是一样,而不是**sun*。具有代表性的dig输出是:
# 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如果没有指定要使用的名称服务器,则无法工作:
# 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在上面的最后一个示例(dig)中,SERVER: 142.3.102.202#53(142.3.102.202)是/etc/resolv.conf中的第一个DNS服务器,因此在默认情况下,sun似乎在使用这个名称服务器而不是dnsmasq,因为在/etc/dnsmasq.conf中设置了它。
那么,这是个问题吗?我可以平太阳和水星从太阳,并连接到汞从太阳使用SSH。
如果这是一个问题(或者即使不是),是否有一种方法可以配置运行在它上的sun和dnsmasq来自动解决私有主机名?
发布于 2014-06-25 19:08:26
dig (域信息检索器)和nslookup (交互式查询互联网名称服务器)是查询名称服务器的工具。除非将特定的名称服务器指定为命令行参数,否则它们将查询/etc/rupv.conf中的名称服务器(S)。他们根本不查看主机信息的其他来源,如/etc/hosts文件或/etc/nsswitch.conf中指定的其他源。
如果您想在sun主机上强制所有dns查询通过dnsmasq,那么/etc/resolv.conf应该指向dnsmasq,即它应该如下所示:
#/etc/resolv.conf on sun
nameserver 127.0.0.1若要防止该文件在重新启动网络接口eth0时被覆盖,请编辑/etc/sysconfig/network-scripts/ifcfg-eth0并添加选项 PEERDNS=no
第二,在/etc/dnsmasq-resolv.conf中,您试图将dnsmasq配置为使用自己作为上游名称服务器nameserver 127.0.0.1.该文件应该如下所示:
#/etc/dnsmasq-resolv.conf
search beowulf.iecs biol.uregina.ca
nameserver 8.8.8.8如果你想使用谷歌的名字服务器。在这里使用大学名称服务器142.3.102.202和142.3.100.15可能是个好主意,因为只有在校园网中才能看到某些资源并不少见。
如果您的水银主机是由DHCP配置的,那么它应该从dnsmasq获得它的配置,/etc/resolv.conf在192.168.42.1上指向dnsmasq服务器。
发布于 2014-06-25 18:56:32
142.3.102.202和142.3.100.15不了解您的本地专用网络,因此它们正确地返回了NXDOMAIN。这些也是系统的默认名称服务器,因此当您不指定名称服务器时,将使用它们。
您将需要覆盖/etc/resolv.conf的内容,并将名称服务器指令配置为指向本地dnsmasq服务器,该服务器应该配置为转发它无法在上游回答的查询。
https://serverfault.com/questions/607908
复制相似问题