法人などの常駐SEであったり、SIerとしてのプレ案件進める上で、顧客に問われる「この端末XのIPアドレスって、幾つだっけ?」という、調査依頼。
結構な頻度でこのやり取りが発生してしまうわけですが、情シス担当者でも、実は設定書も知らないことが結構あります。
しかし、モニターも無いうえ易々とコンソールへ触れられない、無線LANやサーバであっても、目前に機器のIPアドレスを設定書もなしに割り出すことは、困難な作業です。
「あれ?自分て、この程度のSEだっけ・・・?」などとめげずに、SEだからこそやれることを、探してみましょう。
そこで今回は、実践的な端末IPの調査方法をピックアップしてみました。
ARP情報を繰り出し、IPを見つけよう
ARP(Address Resolution Protocol)とは、同セグメント内から、送信先IPを探すために、MACアドレス同士で所在確認を行うというプロトコルです。
つまり例えば、192.168.1.2/24のIPアドレスを持っていたら、192.168.1.0/24範囲内の254個の、MACアドレスに対応したIPアドレスを探すことができるというわけです。
大抵の機器は、ネットワーク通信を行う際に、MACアドレスとIPアドレスを紐づける「ARPテーブル」を持っております。
ARPテーブル情報は、Windows機をはじめとした、様々なクライアントやサーバ、ネットワーク機器へ標準で搭載されており、このコマンドで確認することができるのです。
つまり、調査用端末が端末Xと同じセグメントに位置していた場合「もしかしたら、調査用端末が端末XのIP情報をすでに持っているかもしれない」のです。
早速確認してみましょう。
Windows機におけるARPテーブル確認コマンドは「arp -a」です。
ちなみに上記結果の192.168.1.1はブロードバンドルータのIP/MACアドレス、192.168.1.255は、ブロードキャストドメインです。
本件の主旨はあくまで「調査端末の属するセグメント内で、端末Xを探し出す」ことなので、192.168.1.0/24内の情報に注目していくことになります。
(224.0.0.Xはマルチキャストアドレス、239..255.255.250はユニバーサルプラグアンドプレイのブロードキャストアドレス、255.255.255.255はブロードキャストアドレスなので、無視してOKです)
MACアドレスは、前半の「cc-1a-fa」という部分が「ベンダーコード」になっています。
ベンダーコードをGoogleなどで検索することにより「どのメーカーのNICなのか?」が分かります。
これは、端末Xを調査するうえで、重要なヒントにもなり得ます。
また、ARPテーブルによる調査を実施する場合、同セグメントに属するサーバか、ネットワーク機器であるほうが良いです。
ARPテーブルの特性は「接続対象もしくは接続目的のあるARP情報のみ、4時間ほど保持する」からです。
つまり、端末Xへ接続経歴のない端末は、ARPテーブルに端末Xの情報を載せている確率が低いのです。
端末XのARP情報を持っている確率が高くなるのは、自然と「ネットワーク機器>サーバ機器>他のクライアント」という順番になります。
なお、ARPテーブルを引き出すコマンドは、Windowsサーバやクライアントでは「arp -a」、LinuxサーバやMacOSでは「arp」、ネットワーク機器は「show arp」「display arp」等
が使用できますので、試してみましょう。
DHCPを捜索。割当IPの中から、IP捜査
身近なARPテーブルでの調査方法が上手くいかない場合、もっと上の階層での切り分けを実施するのが必然です。
(ネットワーク調査は、レイヤー1→7の順番に確認していくと、正確でスピーディな解析ができます)
DHCPサーバが社内にある場合、そのプール中のリストを把握するとよいかもしれません。
DHCPサーバの発行済みIPアドレスは、大抵の場合、DHCPサーバのUIに明記されています。
また、DHCPの割り当てパターンの多くは「所属セグメントの前半もしくは後半」であることが殆どです。
IPアドレス設計上、IPアドレスを固定しなくてはならない複合機やサーバのIPは、前半か後半どちらかに偏ることが多く、浮動IPを取り扱うDHCPは、DHCP用のIPゾーンが設けられていることが殆どだからです。
上記はWindowsサーバベースのDHCPサーバですが、アドレスがリースされたリストが表示されていることがわかります。
端末Xが「管理IPを忘れるほど」の扱いを受けていたということは、DHCPによる自動IP取得であった可能性が高く、もし「端末Xがオンラインの状態」であったならば、こちらのリストへ、端末Xがリース中のIPアドレスに出てきます。
しかし、DHCPによるIPリース期間も、ARPテーブルと同じく、期限があります。
デフォルト値で48時間程度であることが殆どですが、こちらも揮発性が高い情報であることは覚えておきましょう。
ICMPをブロードキャスト!最終手段のIP捜査
どんな手段を使っても、端末XのIPアドレスが見つからない。そんな時は「すべて調べて」しまいましょう。
具体的には、例えば192.168.1.0/24には、有効なIPアドレスが254個あります。
これら全てに全部、Pingを打ってしまうのです。
ExPingという、めちゃくちゃ便利なPingツールもありますが、今回の事例は「顧客先での依頼」を想定しているため、コマンドプロンプトとExcelさえあれば出来る、疎通確認方法をご紹介します。
- まず初めに、Excel上の適当なセルで「ping -n 2 -w 200 192.168.0.」と入力します。「-n 2」オプションは、「Pingを2回試行する」という意味です。スタンバイモードの端末は、1回目のPingに応答しないことも多く「1回目のPingでwake upし、2回目のPingに応答する」という事もあるからです。
「-w 200」オプションは、「タイムアウトを5,000ms→200msにする」というものです。実際に、社内環境であれば、Pingは100msも掛からず返答されますし、宛先不明というだけで5秒も待つと、最大で「250箇所×5秒=20分以上」も時間がかかってしまうので、お勧めできません。 - 隣のセルへ1から順に、255までの数値を入力していきます。これはオートコンプリート機能を使うとよいでしょう。
- また次のセルへ「 >> Ping.txt」と入力します。これにより、Ping結果がPing.txtへ保存され、結果が後ほど確認出来るようになります。
- 「①③」の内容を、②の終端までコピーします。これで、同セグメントの疎通確認を網羅するPingコマンドが完成しました!
- コマンドプロンプト立ち上げ、Excelの内容を丸ごと貼り付けます。
- Ping結果がOKであった宛先IPを収集し、リストにまとめます。Pingの結果は、コマンドプロンプトの実行先(図の場合、C:Users\SX3\ping.txt)に保存されていますので、確認してみてください。
- ここで、①のコマンドを「nslookup 192.168.0.」に切り替え、③のコマンドを「 >> nslookup.txt 2>&1」へ切り替えます。「 2>&1」オプションを付けることで、DNSのホスト解決ができなかった場合は、明示的にエラーを報告してくれます(通常は無応答)。
- 絞り込んだ宛先IPへ、再びコマンドプロンプトからこれを実施し「宛先IPにホスト情報が存在するか」を確認します。端末Xがホスト名持ちであればそれが明確に、そうでなくても、他のホストが名乗りを上げるため、ヒントになるでしょう。
これで端末XのIPアドレスが確認できない場合は、端末Xはそもそもオフライン中か、別のセグメントで活動している状態でしょう。
(管理アクセスを許可していない場合や、Pingを許可していない場合もあります)
客先においては「このブロードキャストだと、ネットワークに負荷がかかるのではないか」という不安が出るかと思いますが、問題はありません。
端末は通常、ネットワークへ参加した際に、同様のブロードキャストをネットワーク内に放出しており、問題があるネットワークであれば、朝イチから遅延や通信不可が発生している筈です(朝は、一斉に端末が起動し始めるため)。
この状況は、概ね20年前のネットワーク環境下で頻発しておりましたが、現在では、ネットワーク機器も強化され、たかだか1台の端末だけで、事象が発生することはありえませんので、ご安心下さい。