У меня была похожая проблема, которую я решил, изменив настройки DHCP моего маршрутизатора, чтобы дать моей локальной сети домен, и статические записи DNS для размещения каждого хоста в этом домене.
Тем не менее, я нашел несколько сообщений на форуме, в которых описана похожая проблема, которая имела слегка отличающиеся симптомы и другое решение (изменение реестра), поэтому я собираюсь подробно описать свою проблему, чтобы отличить ее от этой.
Мой вопрос
Недавно я получил новый маршрутизатор (Mikrotik) и настроил его для назначения каждому узлу в моей сети статического IP-адреса и присвоения каждому узлу локального DNS- имени узла (и только имени узла). Это работало нормально из UNIX/Linux/Mac OS X, но Windows имела проблемы с этим.
В Windows я не мог пропинговать некоторые хосты по имени, хотя я мог искать их через nslookup и пинговать их по IP:
C:\>nslookup router
Server: router
Address: 192.168.22.1
Non-authoritative answer:
Name: router
Address: 192.168.22.1
C:\>ping router
Ping request could not find host router. Please check the name and try again.
C:\>ping 192.168.22.1
Pinging 192.168.22.1 with 32 bytes of data:
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.22.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>nslookup overkill
Server: router
Address: 192.168.22.1
Non-authoritative answer:
Name: nas_server
Address: 192.168.22.5
Но как ни странно, некоторые другие работали:
C:\>ping nas_server
Pinging nas_server [192.168.22.5] with 32 bytes of data:
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.22.5:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
Я использовал Wireshark для дальнейших исследований и обнаружил, что команда ping не вызывает отправку каких-либо пакетов DNS, только пакетов службы имен NetBIOS . Это не удастся для моего маршрутизатора, но это удастся для моего сервера NAS (потому что NAS работает под управлением Samba). Nslookup использовал DNS, поэтому он работал на все.
Захват Wireshark от пинга:
Основная проблема заключалась в том, что в некоторых случаях Windows использует службу имен NetBIOS вместо DNS (например, когда у хоста нет домена).
Мое решение
Примечание: снимки экрана взяты из экрана конфигурации моего маршрутизатора, но они иллюстрируют общие понятия.
Я настроил свой DHCP-сервер так, чтобы он сообщал всем хостам, что они являются частью домена:
Затем я настроил все свои статические записи DNS для размещения всех хостов в этом домене:
Затем я удалил всю информацию DHCP/DNS из Windows:
C:\>ipconfig /release
C:\>ipconfig /renew
C:\>ipconfig /flushdns
И все заработало!
C:\>ping router
Pinging router.localnet [192.168.22.1] with 32 bytes of data:
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.22.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>