简短的问题:当 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 name
smb.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,但希望这能解决您的短期问题。