Linksys WRT54ワイヤレスルーターを使用して、ホームネットワーク上に4台のWindowsマシン(3 x Win7、1 x WinXP)とその他のさまざまなデバイスがあります。ドメインサーバーがなく、一部のマシンで他のマシンのホスト名を解決できないという問題が発生しました。
DNSサーバーがない場合、それはどのように機能しますか?すべて同じワークグループ名で設定しましたが、「Pingリクエストでホストが見つかりませんでした...」というメッセージが表示されて失敗します。
この問題の原因をどのように見つけることができますか? Windowsファイアウォールで動作を妨げる特定の事項はありますか?
Windowsマシンは、他のホストのIPを解決するために独自の手法を使用します。最も一般的には、ブロードキャストまたはマルチキャストを使用して、ネットワーク上で利用可能であることをアドバタイズします。
たとえば、Windows XPはNetBIOSネームサービスを使用して、ブロードキャストパケットを使用してアドバタイズし、解決します。Vista以降、マルチキャストベースのLLMNRも利用できますが、Mac OSXとLinuxは非常によく似たmDNSを使用します。 、NetBIOSは依然として最も広くサポートされていますが。
他のホストに確実に接続できるようにしたい場合は、いつでもホストファイルを編集して解決できます。この方法は、静的IPがある場合の唯一のオプションです。
Microsoft TCP/IPホスト名解決順序 執筆時点での順序の概要(NT4/9x)。それ以来、あまり変化はありませんでした。 「ホストの解決」と「winsockの解決」の2つの方法について説明しています。
プログラムの大部分(Webでさえ)は、ws2_32!gethostbyname
で実装されたwinsock
メソッドを使用します。その順序は、スニファ(Wiresharkなど)で確認できます。
Win7の時点で、私が観察する順序は次のとおりです。
FQDNの場合:DNSのみ
修飾されていない名前の場合:
hosts
ファイルは常にDNSルックアップをオーバーライドし、lmhosts
はNetBIOSルックアップをオーバーライドすることに注意してください。
「ホスト解決」はDNSのみを使用するように指定されており、IEおよびいくつかのユーティリティなどの「一部のプログラム」でのみ使用されます-wininet
を使用するアプリで表示されます。