皆さんが無線や有線LANにPCやスマートフォンを繋げる際、Wi-Fi設定以外は特に設定することなく接続することができますよね。
本来であれば、IPやサブネットマスク、ゲートウェイやDNSサーバーなどの値を自分で指定しなければ、LANに参加したり、インターネットへ出たりすることができません。
このめんどくさい設定を自動で行ってくれる仕組みがあるおかげで、LANに接続する際にこういった値を自動で配布してくれるので、特に設定を変更することなく繋げることができます。
この仕組みの名前を DHCPと呼びます。
DHCP – 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
詳しくは上記のサイトの解説がわかりやすいと思いますので、チェックしてみてください。
ところでこのDHCPですが、仕組み上同じLANに複数台存在しているとまずいことが起こります。
PCやスマホがLANに参加したときに、”誰かここのLANの接続情報知りませんかー”というメッセージを出し、DHCPの役割を担うマシンが”接続情報はこれだよ~”と答えてくれるのですが、このDHCPが複数存在していると “接続情報はこれだよ~” と別々のマシンが別々の答えを返してしまうことになります。
これが原因でIPアドレスがかぶってしまったり、間違った設定情報を取得してしまったり、という現象が起こり、接続不良につながってしまいます。
この問題を解決するために、LAN内のDHCPは正常に動いているか、本来のDHCPサーバーとは別のDHCPサーバーが存在していないか、といったことを調べたいときがあります。
今回は、LAN上を流れる情報を解析して表示してくれるオープンソースのツールWiresharkをつかってDHCPの状態を調べる方法をご紹介します。
まずはWiresharkを入手します。
Windowsインストーラー版とインストール不要のPortableApps版、macOS版がありますので、環境にあったものをダウンロード、インストールしてください。
Wiresharkを起動するとこんな画面になるかと思います。
赤枠内に、Windowsから認識されているネットワークインターフェース、つまりPCに搭載されているLANへつなぐための周辺機器の一覧が表示されます。
この中から調べたいLANにつながっているインターフェースをダブルクリックします。
(※ネットワークを調べるにはインターフェースが”プロミスキャスモード“に対応している必要があります。)
今回の場合は、Wi-Fiにつながっているネットワークを調べたかったので、Wi-Fiを選択しました。
上の画像のような画面に変わり、LAN内に流れるすべての情報を解析し始めます。
ここにはDHCP以外の通信も表示されていしまっているので、上のフィルタ欄を使って情報を絞ります。
DHCPのみを表示したいときはフィルタ欄に”bootp”と入力します。
これで一覧にはDHCPの通信のみが表示されるようになります。
なお、DHCPはLAN内のいずれかのマシンがDHCPを投げるまで見ることができないので、暫く待つか、Wiresharkを実行しているマシン以外のPCやスマホなどをLANに接続しなおすことで表示されてくるかと思います。
今回確認したいのはDHCPサーバーがLAN内に2つ以上存在していないか、ですので、”Source”欄のIPアドレスで、”0.0.0.0″以外のIPアドレスが2つ以上存在していないかチェックします。
例えば、LAN内の正規のDHCPサーバーのIPアドレスが192.168.1.1なのに、”DHCP Discover”したクライアントに対して、192.168.1.13などの関係ないはずのIPアドレスのマシンもDHCPの応答メッセージである”DHCP Offer”や”DHCP ACK”などを返していたら、LAN内に不正なDHCPが存在している可能性があるので、この192.168.1.13のマシンが誰なのかを突き止める必要が出てきます。
この192.168.1.13が誰なのかを突き止めるためのヒントですが、項目をクリックするとその通信の内容が2段目の部分に表示され、その中にMacアドレスやインターフェースのメーカー名など、送信元の様々な情報を確認することができます。
これを頼りに探していけば恐らくどのマシンが不正なDHCPメッセージを送信しているか、見つけることができるでしょう。
また、DHCPが一台だけで、なおかつDHCPに不具合がある場合も、全てのマシンのDHCP要求やそれに対するDHCP応答を見ることができるので、なぜIPアドレスの取得に失敗しているのかを調べる手掛かりにもなります。
Wiresharkを使えば、DHCP以外にもLAN内を流れるあらゆる情報を覗くことができるので、ネットワーク周りのトラブルが発生して原因がわからないときは役に立つかもしれません。困ったときはこういったパケット解析ツールを活用すると、トラブルも早く解決できるかもしれませんね。