这是我在 Debian 机器上拥有的 resolv.conf 文件(我们称之为deb01
):
search mydomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 10.20.232.11 ##local DNS server
nameserver 10.20.232.12 ##local DNS server
我还有另一个 debian 盒子,我们称之为deb02
。
从 deb01 中看到的问题:
- 我无法在 LAN 上 ping 通 deb02(
ping deb02
返回未知主机)但是ping deb02.local
可以工作。 host deb02
或host deb02.local
返回Host not found: 3(NXDOMAIN)
nslookup deb02
或者nslookup deb02.local
不工作- 我无法在 deb01 上挂载 deb02 中的文件夹(在 deb01 的 fstab 中:
deb02:/folder /mnt/myserver nfs rw 0 0
- 我也尝试过附加,.local
但没有什么区别) - 我有一个运行良好的 Postfix 邮件服务器
如果我更改 resolv.conf 文件中的顺序以将本地 DNS 服务器放在首位,则上面的 1、2、3 和 4 可以正常工作,使用简单的服务器名称:deb02。
但是,发送到本地地址 @mydomain.com 的电子邮件会卡住(连接超时),尽管我可以毫无问题地向其他域名发送电子邮件。这可能是由于本地 DNS 服务器没有任何 MX 记录。
如果有关系的话,网络的其余部分都是基于 Windows 的。
如果可以使用简单的服务器名称:deb02,那么正确的 DNS 配置是什么,才能使 1、2、3、4 和 5 正常工作?
答案1
我猜你在 中有一行类似“ hosts: files mdns dns
”的内容/etc/nsswitch.conf
。这控制使用哪些源进行名称查找 -files
告诉系统查阅 /etc/hosts,mdns
使用 avahi 守护进程通过多播 DNS(Bonjour/ZeroConf)查找名称,并且dns
是 中的服务器的正常 DNS 查找/etc/resolv.conf
。(仅当它们位于同一网络上时,Pingdeb02.local
才可能有效;中间有路由器,或者 deb02 已关闭一段时间,它也会失败。)
host
、、nslookup
和dig
是专门用于执行 DNS 查询的工具,并绕过 中列出的其他方法nsswitch.conf
;ping
将全部介绍它们。
默认情况下,resolv.conf 条目按顺序查询,仅当您遇到超时或内部错误 ( ) 时才移至列表中的下一个条目SERVFAIL
。不存在的名称 ( NXDOMAIN
) 不会将您移至列表下方。因此,如果您有一个内部域,则应该首先列出知道它的服务器。当它是 MS Active Directory 时,您希望在 resolv.conf 中仅列出您的 MSAD DNS 服务器(通常是您的域控制器)。
由于听起来您的 AD 域名与mydomain.com
您的搜索路径相匹配,并且您的 AD DNS 没有为您的域提供任何 MX 记录,因此 postwill 将采取回退行为,尝试从对目标(此处为本身mydomain.com
)的 A 记录查询中传递到主机。AD 服务器将返回该查询的域控制器集,而 AD DC 通常不运行 MTA,这就是您看到连接超时的原因。
通常,您会有一个本地邮件服务器,您可以将其配置为智能主机(relayhost
是后缀设置),或者您可以为 mydomain.com 添加后缀传输规则,以指向适合您域的邮件服务器。