我知道有很多关于 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
输出没有改变。
我把这篇文章作为一个答案,以防没有其他人来解释这些事情(但当然,如果其他人能做出贡献,我更希望得到一些见解)。谢谢。