工作示例 - 没有环回作为名称服务器

工作示例 - 没有环回作为名称服务器

亲爱的 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.88.8.4.4AmazonProvidedDNS(例如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.8127.0.0.1AmazonProvidedDNS导致:

# 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

相关内容