在我的公司,我们的许多配置脚本等仅使用服务器名称。例如,http://server
而不是http://server.company.com
。我在 GUI 网络连接工具中配置了搜索域。我也在中配置了它/etc/resolvconf/resolv.conf.d/head
,但它无法正常工作。
奇怪的是,某些工具(如 nslookup 或 host)可以解析到正确的 IP,但其他工具(如 ssh、ping、git 和 Web 浏览器)却不能。如果我使用 FQDN,我可以连接。什么原因可能妨碍搜索域正确解析?
下面,找到一些命令的相关输出。
Nslookup:
$ nslookup server
Server: 192.168.200.53
Address: 192.168.200.53#53
server.company.com canonical name = server001.company.com.
Name: server001.company.com
Address: 192.168.200.103
主持人:
$ host server
server.company.com is an alias for server001.company.com.
server001.company.com has address 192.168.200.103
平安:
$ ping server
ping: unknown host server
$ ping server.company.com
PING server001.company.com (192.168.200.103) 56(84) bytes of data.
64 bytes from server001.company.com (192.168.200.103): icmp_seq=1 ttl=64 time=4.61 ms
我使用 ping 作为示例,因为它很简单,但我需要使用的大多数其他工具显示的结果与 ping 相同。
如果您需要更多配置文件或信息,请告诉我。
/etc/hosts 没有与我尝试连接的服务器相关的信息。
这是 /etc/resolv.conf,由 resolvconf 生成。
# Add Company Nameservers and Domain
nameserver 192.168.200.53
nameserver 192.168.200.65
search company.com
nameserver 127.0.1.1
search company.com
# 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.1.1
search hsd1.co.comcast.net
和 /etc/network/interfaces:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
答案1
您的 resolv.conf 文件很乱。search
例如,文件中最多应该有一行。似乎有除 resolvconf 之外的其他内容正在写入文件。Resolvconf 始终会以以下格式写入 resolv.conf 文件:
head
base + dynamic content
tail
其中head
、base
和tail
是 /etc/resolvconf/resolv.conf.d/ 中的文件。该文件head
通常只包含注释。您说您已在文件中# Dynamic resolv.conf(5) file... OVERWRITTEN
添加了一行,但您的 resolv.conf 文件在上述注释上方包含其他内容。search
我猜测 /etc/resolv.conf 不再是 /run/resolvconf/resolv.conf 的符号链接,和/或您正在运行一些第三方网络配置软件,这些软件以与 Ubuntu 不兼容的方式与 /etc/resolv.conf 混在一起。
解决方案:停止使用该软件,或修复它,然后运行sudo dpkg-reconfigure resolvconf
以恢复 /etc/resolv.conf 处的符号链接。
答案2
尝试
echo " dns-search company.com" >> /etc/network/interfaces
然后重新启动(除非您知道如何重置所有 DNS 缓存、浏览器和系统,否则重启网络是不够的)。
答案3
我非常确定 ping、ssh 和其他可能使用 /etc/host 文件。您可能还想尝试在那里定义您的服务器名称 192.168.1.100 server 然后获取文件或注销并重新登录。这次当您 ping server 或 ssh user@server 时它应该可以工作。至于 webserver,您必须向您的 dns 服务器 ipaddress 添加一条 A 记录然后您应该能够通过 http://服务器
编辑
此设置的任何部分是否使用 Samba 或 wins 服务器,或者我是否完全误解了某些内容。