この特集のトップページへ
Chapter 1:NetBIOSの基礎知識

COLUMN:NBTの名前解決にDNSを利用しないようにする

 NBTで名前解決するときにDNSを利用すると,ダイヤルアップルータが勝手にダイアルアップしてしまうことがある。これは,ダイアルアップルータを自動発呼するように設定した場合に発生する。

 一般的に,ダイアルアップルータを使用している環境では,ローカルにDNSサーバーが存在することはほとんどない。なぜなら,ダイヤルアップルータが存在する環境とは,ローカルにDNSサーバーは必要なく,インターネットへ接続するときだけインターネット上のDNSサーバーへの接続が必要となるケースがほとんどだからである。この場合,DNSのパケットを受け取ったらプロバイダのDNSサーバーに要求を転送するよう,ルータに対して設定することになる。このため,NBTの名前解決やブラウジングサービスのためにDNSサーバーへの名前解決を要求しようとすると,プロバイダのDNSサーバーに接続しなければならなくなる。意識的にDNSサーバーを利用したいという環境でない限り,NBTの名前を解決するのにDNSを使用する必要はない。これは,NBTの名前をブロードキャストやWINSで解決できるからである。セキュリティ上も,好ましくない。

 この問題を解決するためには,NBTでDNSを使用しないように設定する必要がある。Windows NTの場合は,[コントロールパネル]の[ネットワーク]をダブルクリックして[プロトコル]パネルを開き,さらに[TCP/IPのプロパティ]ダイアログボックスを開いて[WINS]パネルを選択する。[Windowsの名前解決にDNSを使う]というチェックボックスがオフになっていれば,DNSを利用しない。Windows 95/98の場合は,レジストリを変更する必要がある。
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Services\VxD
\MSTCP\EnableDNS

を0にすると,DNSは利用されない(デフォルトは1で,DNSを利用する)。

 なお,NBTがDNSサーバーに名前解決を要求した場合のトレースを以下に示しておく。トレース中,az3はWindowsであり,bibloはDNSサーバーである。[1]と[2]でDNSを利用して名前を解決し,取得したIPアドレスを用いて[3]と[4]でarpを送出していることがわかる。DNSサーバーに対してNBTが名前解決を要求する場合,137番ポートから要求を送信することが特徴である。したがって,UDPの137番ポートから53番ポートへのパケットを受けたときに発呼しないようダイヤルアップルータを設定しても,この問題を回避することができる。

   [1] az3.dsl.private.137 > biblo.dsl.private.53: 12+ (46)
   [2] biblo.dsl.private.53 > az3.dsl.private.137: 12* 1/1/1 (97)
   [3] arp who-has lily.dsl.private tell az3.dsl.private
   [4] arp reply lily.dsl.private is-at xx:xx:xx:xx:xx:xx
   [5] az3.dsl.private.137 > lily.dsl.private.137: udp 50
   [6] lily.dsl.private.137 > az3.dsl.private.137: udp 265

フォントサイズを 大きくする / 小さくする(※Internet Explorer4.0以上)

PREV 7/14 NEXT