NetworkManager 中静态 IP 导致 DNS 丢失

NetworkManager 中静态 IP 导致 DNS 丢失

我知道有很多关于 ubuntu 的 DNS、网络管理器内部结构以及版本 ~12 到 14-15+ 之间的变化的帖子/主题/问题/教程。我使用的是 ubuntu 12.04,希望尽快升级,但首先我需要验证一些备份数据等,并且还想弄清楚 NM 的这个问题。

事实上,我最初使用了一个教程,它完成了所有繁琐的手动编辑/etc/network/interfaces等操作,但最终还是没有成功。一些教程只是指出使用 GUI,而且大多数情况下都有效(可以浏览网页;手动方法则不行),所以我最终还是选择了 GUI,但 DNS 问题是个例外。

我的 DHCP 与我们的内部 DNS 配合使用,允许我使用名称而不是 IP 地址(例如,使用命令)ssh。但是,一旦我切换到通过 NM gui 工具设置的静态连接,这不再起作用。我不知道为什么。我已经使用 Linux 好几年了,但我是一个网络新手,正在尝试更多地了解这方面的内容。以下是我在解决此问题时遇到的一些输出(注意:“serverA”和“serverB”是我们本地网络上的机器名称):

$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"

在 DHCP eth0 上:

$ ping serverA

PING serverA.MY.local (192.168.1.16) 56(84) bytes of data.
--- serverA.MY.local ping statistics ---
...

$ ping serverB

PING serverB.MY.local (192.168.1.15) 56(84) bytes of data.
--- serverB.MY.local ping statistics ---
...
$ nmcli dev list iface eth0

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
GENERAL.VENDOR:                         Broadcom Corporation
GENERAL.PRODUCT:                        NetLink BCM57781 Gigabit Ethernet PCIe
GENERAL.DRIVER:                         tg3
GENERAL.HWADDR:                         BC:5F:F4:55:73:B3
GENERAL.STATE:                          100 (connected)
GENERAL.REASON:                         0 (No reason given)
GENERAL.UDI:                            /sys/devices/pci0000:00/0000:00:1c.4/0000:08:00.0/net/eth0
GENERAL.IP-IFACE:                       eth0
GENERAL.NM-MANAGED:                     yes
GENERAL.FIRMWARE-MISSING:               no
GENERAL.CONNECTION:                     /org/freedesktop/NetworkManager/ActiveConnection/1
CAPABILITIES.CARRIER-DETECT:            yes
CAPABILITIES.SPEED:                     1000 Mb/s
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 192.168.1.146/24, gw = 192.168.1.1
IP4.DNS[1]:                             192.168.1.10
IP4.DNS[2]:                             192.168.1.11
IP4.DOMAIN[1]:                          MY.local
DHCP4.OPTION[1]:                        domain_name = MY.local
DHCP4.OPTION[2]:                        expiry = 1445191770
DHCP4.OPTION[3]:                        broadcast_address = 192.168.1.255
DHCP4.OPTION[4]:                        dhcp_message_type = 5
DHCP4.OPTION[5]:                        dhcp_lease_time = 518400
DHCP4.OPTION[6]:                        ip_address = 192.168.1.146
DHCP4.OPTION[7]:                        routers = 192.168.1.1
DHCP4.OPTION[8]:                        subnet_mask = 255.255.255.0
DHCP4.OPTION[9]:                        dhcp_renewal_time = 259200
DHCP4.OPTION[10]:                       domain_name_servers = 192.168.1.10 192.168.1.11
DHCP4.OPTION[11]:                       dhcp_rebinding_time = 453600
DHCP4.OPTION[12]:                       network_number = 192.168.1.0
DHCP4.OPTION[13]:                       dhcp_server_identifier = 192.168.1.11

在静态 eth0 上:

$ ping serverA

ping: unknown host serverA

$ ping serverB

ping: unknown host serverB
$ nmcli dev list iface eth0

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
GENERAL.VENDOR:                         Broadcom Corporation
GENERAL.PRODUCT:                        NetLink BCM57781 Gigabit Ethernet PCIe
GENERAL.DRIVER:                         tg3
GENERAL.HWADDR:                         BC:5F:F4:55:73:B3
GENERAL.STATE:                          100 (connected)
GENERAL.REASON:                         0 (No reason given)
GENERAL.UDI:                            /sys/devices/pci0000:00/0000:00:1c.4/0000:08:00.0/net/eth0
GENERAL.IP-IFACE:                       eth0
GENERAL.NM-MANAGED:                     yes
GENERAL.FIRMWARE-MISSING:               no
GENERAL.CONNECTION:                     /org/freedesktop/NetworkManager/ActiveConnection/0
CAPABILITIES.CARRIER-DETECT:            yes
CAPABILITIES.SPEED:                     1000 Mb/s
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 192.168.1.17/24, gw = 192.168.1.1
IP4.DNS[1]:                             192.168.1.10
IP4.DNS[2]:                             192.168.1.11

现在有趣的是:这确实是nmcli静态连接命令的完整输出。请注意,IP4.DOMAIN缺少。我怀疑这正是问题所在,但由于不太熟悉 NM 内部工作原理,我不知道该怎么做。我确实尝试编辑连接(通过 NM gui)并将添加MY.local到“IPv4 设置”选项卡下的“搜索域”字段。即使重新启动后,这似乎也没有什么不同。

我遗漏了什么?有人对下一步该怎么做有什么建议吗?我很乐意提供一些dig特定咒语的输出(仍在学习挖掘,不确定哪个输出最有帮助)。我觉得这已经非常接近工作了(至少相对于我的 DHCP 连接而言),但这个问题仍然存在。任何帮助故障排除的帮助都将不胜感激。

答案1

哇,好的。我成功了。以下是我发现的:在尝试使用手动方法的过程中,我遗漏了dns=dnsmasq注释掉的行/etc/NetworkManager/NetworkManager.conf。通过重新启用该行,问题得到解决,无需重新启动。Ping现在可以正确解析名称,尽管nmcli输出根本没有改变,这很有趣。

有人知道吗:这是预期的行为吗?我原以为这dnsmasq是 NM 实用程序的附件,但显然不是。还: 解释为什么nmcli输出没有改变。

我把这篇文章作为一个答案,以防没有其他人来解释这些事情(但当然,如果其他人能做出贡献,我更希望得到一些见解)。谢谢。

相关内容