无论出于什么原因,当我尝试通过其名称访问本地主机时,都无法正确解析。
# ping server.domain.tld
PING server.domain.tld.domain.tld (###.###.###.###) 56(84) bytes of data.
显然这会破坏 ssh 和任何依赖主机名的脚本。该域上具有公共 IP 地址的所有内容都可以正确解析。
下一步该怎么做?Google 没有找到与我所想到的搜索词类似的任何内容,因此非常感谢您的帮助。
不确定是否有任何区别,但是当我尝试 ping 服务器时,我得到了以下信息(我相信这是应该的):
# ping server
ping: unknown host server
答案1
听起来你想设置水平分割域名系统也就是说,您需要一个“知道”服务器的私有 IP 地址和名称的 DNS 服务器。您的服务器可以使用此 DNS 服务器将名称解析为其私有 IP 地址,而不是您的面向公众的 DNS 服务器将解析为的公共地址。
您没有提到您正在使用什么 DNS 服务器软件(或者甚至没有提到您是否托管自己的 DNS)。BIND 具有视图可以满足您需求的功能。其他 DNS 服务器软件可能具有类似的功能(我只在 Linux 上使用 BIND,因此无法提供经验)。
如果您没有为您的域托管 DNS,并且无法让您的 DNS 提供商使用视图,那么您可以考虑在 NAT 设备后面设置您自己的 DNS 服务器并配置您的服务器来使用它。
如果您的域中存在位于 NAT 设备之外的主机,请确保您的内部 DNS 服务器(或视图)正确返回这些主机的公有 IP 地址。
编辑:
正如 @BillThor 所说,要让您的服务器将不合格的名称解析为您域中的记录,您需要search domain.tld
在服务器中添加一行/etc/resolv.conf
。
答案2
添加domain.tld
到 中的搜索列表/etc/resolv.conf
。您应该首先拥有您的域名,以便首先检查它。如果您的域名是example.com
,则以下搜索列表可能合适。
search example.com com net org
要测试你的解析器,请使用以下命令:
getent hosts server
如果解析器可以解析,这将返回服务器的 IP 和 FQDN。