亲爱的 Linux 老手们,
当使用 DHCP 推送的 DNS 设置时,Ubuntu 14 LTS 中是否127.0.0.1
有一个魔法令牌?resolvconf
我在 AWS (ami-0f8bce65) 中使用 Ubuntu 14.0.3 (LTS),并在 VPC 的 DHCP 选项中使用自定义 DNS 设置。我可以通过 AWS VPC 中的 DHCP 选项将多个 DNS 服务器推送到 Ubuntu仅有的如果值不包括环回适配器。
作为 DNS 服务器推送127.0.0.1
似乎会导致 Ubuntu 忽略所有后续的名称服务器。
工作示例 - 没有环回作为名称服务器
例如,如果我将 DHCP 选项配置为使用8.8.8.8
、8.8.4.4
和AmazonProvidedDNS
(例如172.24.0.2
在我的 VPC 中),我会在中看到以下内容/etc/resolve.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 8.8.8.8
nameserver 8.8.4.4
nameserver 172.24.0.2
错误示例 - 使用环回作为名称服务器
但是,将 DNS 服务器设置为8.8.8.8
,127.0.0.1
会AmazonProvidedDNS
导致:
# 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 8.8.8.8
nameserver 127.0.0.1
172.24.0.2
第二个例子中缺少预期值。
AWS DHCP 行为符合预期
我确认这是不是AWS 的 DHCP 服务器存在问题。 dhcpdump
确认 DHCP 服务器正在响应,8.8.8.8,127.0.0.1,172.24.0.2
因为 DNS 服务器:
ubuntu@ip-172-24-0-13:~$ sudo dhcpdump -i eth0 &
[1] 1742
ubuntu@ip-172-24-0-13:~$ sudo: unable to resolve host ip-172-24-0-13
sudo dhclient -v eth0
sudo: unable to resolve host ip-172-24-0-13
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/0e:fa:a9:1e:38:c1
Sending on LPF/eth0/0e:fa:a9:1e:38:c1
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0xd6248a3f)
DHCPREQUEST of 172.24.0.13 on eth0 to 255.255.255.255 port 67 (xid=0x3f8a24d6)
DHCPOFFER of 172.24.0.13 from 172.24.0.1
DHCPACK of 172.24.0.13 from 172.24.0.1
RTNETLINK answers: File exists
bound to 172.24.0.13 -- renewal in 1361 seconds.
ubuntu@ip-172-24-0-13:~$ TIME: 2015-11-18 20:38:09.837
IP: 0.0.0.0 (e:fa:a9:1e:38:c1) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: d6248a3f
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 0e:fa:a9:1e:38:c1:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER)
OPTION: 12 ( 14) Host name ip-172-24-0-13
OPTION: 55 ( 13) Parameter Request List 1 (Subnet mask)
28 (Broadcast address)
2 (Time offset)
3 (Routers)
15 (Domainname)
6 (DNS server)
119 (Domain Search)
12 (Host name)
44 (NetBIOS name server)
47 (NetBIOS scope)
26 (Interface MTU)
121 (Classless Static Route)
42 (NTP servers)
---------------------------------------------------------------------------
TIME: 2015-11-18 20:38:09.839
IP: 172.24.0.1 (e:56:f6:92:57:f3) > 172.24.0.13 (e:fa:a9:1e:38:c1)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: d6248a3f
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 172.24.0.13
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 0e:fa:a9:1e:38:c1:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 2 (DHCPOFFER)
OPTION: 54 ( 4) Server identifier 172.24.0.1
OPTION: 51 ( 4) IP address leasetime 3600 (60m)
OPTION: 1 ( 4) Subnet mask 255.255.255.240
OPTION: 28 ( 4) Broadcast address 172.24.0.15
OPTION: 3 ( 4) Routers 172.24.0.1
OPTION: 6 ( 12) DNS server 8.8.8.8,127.0.0.1,172.24.0.2
OPTION: 12 ( 14) Host name ip-172-24-0-13
OPTION: 26 ( 2) Interface MTU 9001
---------------------------------------------------------------------------
答案1
127.0.0.1 是 resolvconf 的魔法令牌吗
我没有可用的 Ubuntu 14 系统,但它在大多数版本的 resolvconf 上都很“神奇”。
具体来说,文件中/etc/resolvconf/update.d/libc
有一个变量$TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS
,如果保留为默认值,将导致环回取代任何其他设置。如果您的系统上有 Bind 或 DNSMasq 并且正在设置,则该127.0.0.1
名称服务器在 resolvconf 接口顺序中得到非常高的应用,并且您几乎总是只会有127.0.0.1
。
如果您想改变此行为,请尝试创建文件/etc/default/resolvconf
并设置TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=y
。