我一直在使用 Ubuntu 10.04.3 或 11.04。在这两个版本中,主机名(如 ec2-123-45-6-7.compute-1.amazonaws.com)都会解析为 10.0.0.0/8 范围内的私有地址。升级到 12.04 后,它们现在解析为公共地址。例如 184.1.2.3。这似乎是因为 Ubuntu 现在使用 resolvconf。似乎我还在运行 named。
# more /run/resolvconf/interface/eth0.dhclient
domain ec2.internal
nameserver 172.16.0.23
# more /run/resolvconf/interface/lo.named
nameserver 127.0.0.1
/etc/resolv.conf 是 /run/resolvconf/resolv.conf 的符号链接
more /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search ec2.internal
如果我编辑 resolv.conf 以指向 172.16.0.23 而不是 127.0.0.1,它可以正常工作,但重启后它会变回原样。
此外,这是 /etc/resolvconf/resolv.conf.d 的内容
/etc/resolvconf/resolv.conf.d# more base
nameserver 172.16.0.23
domain ec2.internal
search ec2.internal
/etc/resolvconf/resolv.conf.d# more head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
/etc/resolvconf/resolv.conf.d# more original
nameserver 172.16.0.23
domain ec2.internal
search ec2.internal
# more interface-order
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
配置文件似乎设置正确,但它一直回到 127.0.0.1。我猜它想指向 127.0.0.1,以便它可以使用本地命名服务,这对于 Ubuntu 默认安装和使用来说似乎是一件很奇怪的事情。
我做错了什么?有没有一种“首选”方法可以做到这一点,而不是弄乱 resolvconf,我应该让本地命名服务正确解析吗?
答案1
将 /etc/resolvconf/resolv.conf.d/base 清空。其中的信息由 dhclient 动态提供给 resolvconf。
如果不需要
named
在本地运行,请卸载 bind9 包。如果您需要
named
在本地运行,并且不想使用它在本地解析名称,请RESOLVCONF=no
在 /etc/default/bind9 中设置,然后重新启动。设置 RESOLVCONF=no 会导致 bind9 在 named 启动时不向 resolvconf 注册地址 127.0.0.1。
参考:https://bugs.launchpad.net/ubuntu/+source/bind9/+bug/933723