无论什么原因,当我试图通过他们的名字访问本地主机时,它不能正确parsing。
# ping server.domain.tld PING server.domain.tld.domain.tld (###.###.###.###) 56(84) bytes of data.
显然,这会破坏ssh和任何依赖主机名的脚本。 该域上具有公共IP地址的任何内容都可以正确parsing。
我在解决这个问题的下一步是什么? 谷歌没有发现任何类似的search条件,我想到的,所以任何帮助表示赞赏。
不知道是否有什么区别,但是当我尝试ping服务器时,我得到以下(我相信这是应该的):
# ping server ping: unknown host server
这听起来像你想build立水平分割DNS 。 也就是说,你想拥有一个“知道”服务器私有IP地址和名称的DNS服务器。 您的服务器可以使用此DNS服务器将名称parsing为其专用IP地址,而不是公用DNS服务器将parsing为的公用地址。
你没有提到你正在使用什么DNS服务器软件(或者即使你正在托pipe自己的DNS)。 BIND具有可以做你需要的视图function。 其他DNS服务器软件可能具有类似的function(我只在Linux上使用BIND,所以我不能从经验中说)。
如果您没有为您的域名托pipeDNS,并且无法让您的DNS提供商使用视图,那么您可以考虑在NAT设备后面设置自己的DNS服务器,并configuration您的服务器以使用它。
如果您的域名中的主机位于NAT设备外部,请确保您的内部DNS服务器(或视图)正确返回这些主机的公共IP地址。
编辑:
正如@BillThor所说的,为了让你的服务器parsing你的域中的logging的非限定名称,你需要添加一个search domain.tld行到服务器的/etc/resolv.conf 。
将domain.tld添加到/etc/resolv.conf的search列表中。 你应该首先有你的域名,以便首先检查。 如果您的域名是example.com ,则以下search列表可能是适当的。
search example.com com net org
testing你的parsing器使用如下命令:
getent hosts server
这将返回服务器的IP和FQDN,如果parsing器可以解决它。