更新:检查域名搜索后缀

更新:检查域名搜索后缀

简短的问题:当 DNS 正确时,如何从 Windows 通过短主机名进行 ping 操作?

延长的阐述:

等候接听

自从这件事开始以来,我就被指示去处理其他事情,所以我还没有回复。感谢那些到目前为止回复的人——请放心,我没有带着免费的建议逃跑,既没有留下感激也没有留下确认。我会尽快回复并报告哪种解决方案有效。


我有一个 Windows 域(控制器:Leo)和一个新的 RHEL7 盒(Peanut),用于提供内部 DNS。我需要 ping 盒并通过短主机名访问 Samba 共享。

Leo 和 Sam 一直在这里,Leo 负责 DNS。Peanut 是新来的。

192.168.0.2  - Leo - Windows, domain controller, DNS server
192.168.0.3  - Sam - smug DNS resolution test target
192.168.0.29 - Peanut, BIND 9.9.4-RedHat-9.9.4-14.el7 (ESV)

第一个显而易见的解决方案是将 Peanut 添加到 Leo 的 DNS 中;这可行,但只能解析 FQDN 请求——没有短名称。

C:\bin>nslookup peanut.internal.local 192.168.0.2
Server:  peanut.internal.local
Address:  192.168.0.29

Name:    peanut.internal.local
Address:  192.168.0.29

我看过很多关于 NetBios 的参考资料,但没有一个说这是一个好主意。尽管如此,我还是配置了netbios namesmb.conf。我应该说我对 NetBios 一无所知。

我在 Peanut 上设置了 DNS,以为 Linux 会给我更多选择和灵活性——事实确实如此。一个人说 DNS不能提供短名称——令人沮丧,但我找到了一种方法来实现它。当 nslookup 开始解析短名称时,我认为我已经解决了这个问题。

DHCP 现在将 Peanut 作为主 DNS,将 Leo 作为辅助 DNS,我已使用 Windows 上的 ipconfig 和 Linux 上的 nmcli 对此进行了验证。在从我的 hosts 文件中删除 Sam 之前,我患有 Linux 故障排除偏见的过早成功综合症。Linux 使用 DNS 的方式与我希望的工作方式完全一致:

# [09.32.04] ROOT@linnicks [etc] 18   grep peanut /etc/hosts
:( [09.32.08] ROOT@linnicks [etc] 19   ping peanut
PING peanut (192.168.0.29) 56(84) bytes of data.
64 bytes from peanut.internal.local (192.168.0.29): icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from peanut.internal.local (192.168.0.29): icmp_seq=2 ttl=64 time=0.339 ms
^C
--- peanut ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.182/0.260/0.339/0.080 ms
# [09.32.12] ROOT@linnicks [etc] 20

DNS 正在运行,但 Windows 客户端仍然忽略它。我可以nslookup为任一主机指定服务器或 FQDN。

C:\bin>nslookup sam
Server:  peanut.internal.local
Address:  192.168.0.29

Name:    sam.internal.local
Address:  192.168.0.3


C:\bin>nslookup peanut
Server:  peanut.internal.local
Address:  192.168.0.29

Name:    peanut
Address:  192.168.0.29

我可以 ping Sam(一直在这里,Leo,DC/DNS),但无法 ping Peanut;显然ping无法以相同的方式找到名称。正在提供的是什么帮助了 Sam 而忽略了 Peanut?

C:\bin>ping sam
Pinging sam [192.168.0.3] with 32 bytes of data:
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.3:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\bin>ping peanut
Ping request could not find host peanut. Please check the name and try again.

我可以编写一个 AD 登录脚本来复制 \sys32\drivers\etc\hosts,但这仍然需要我在多台 Mac 和 Linux 机器上手动更新 /etc/hosts。正确完成的全球服务不需要手动 SneakerNet 创可贴——但我不知道我错过了什么。

我欢迎任何关于这方面的想法;我的前额撞到墙壁的地方,墙壁变得很疼。

更新:检查域名搜索后缀

Shane Madden 和 Derfk 肯定走在正确的轨道上,尽管我不确定我是否应该期待延迟的结果。我已经用下面的内容更新了 DHCP 配置,但仍然没有在我的 WinBoxen 上看到它。

pool 192.168.0.0/24 {
  address-range low 192.168.0.51 high 192.168.0.150;
  name-server {
  192.168.0.29;
  192.168.0.2;
  8.8.8.8;
  8.8.4.4;
  }
  domain-search {
  internal.local;
  }
  wins-server {
  192.168.0.2;
  }

我原本希望这能显示在 ipconfig 的主 DNS 后缀输出中,但事实并非如此——ping 仍然失败。我会继续深入研究,但欢迎大家参与...

答案1

您需要配置 DNS 搜索后缀,以便短名称能够成功解析 - 这可以通过 DHCP 选项完成,由 Windows 域成员资格自动配置,或者在每个系统上手动配置(不推荐)。

(附注 - 请不要使用 NetBIOS 名称解析!它很糟糕而且过时了!)

答案2

还可以在 Active Directory 组策略中指定 DNS 后缀搜索列表:

计算机 > 模板 > 网络 > DNS 客户端 > DNS 后缀搜索列表

对于不使用 DHCP 的计算机来说,这尤其有用。

如果记录未在区域中注册,或者区域太多而搜索列表不实用,则使用全局名称区域可能是一种选择。

部署 GlobalNames 区域
http://technet.microsoft.com/en-us/library/cc731744.aspx

答案3

这有点猜测,但通过查看您的 DHCP 配置,我推测您已在 DC 上安装了 WINS 服务器角色(wins 服务器 {192.168.0.2;})。

'sam' 在 WINS 中有记录,而 'peanut' 没有吗?如果是这样,我猜你的短名称解析一直使用 WINS 而不是 DHCP。

您可以使用 Microsoft 的 NBLookup 工具(免费下载)来验证这一点;

http://support2.microsoft.com/default.aspx?scid=kb;en-us;830578

我强烈建议放弃 WINS,但希望这能解决您的短期问题。

相关内容