まとめLAN内のホストのIPアドレス・MACアドレス検索をScan一発でnWOL初版リリースしてから早くも1年になります。これまでnWOLの記事を全く書いていませんでしたので、遅ればせながら、記事を書いてみたいと思います。nWOLは、シンプルだけど極力使いやすいUIを目指していたので、表にはあまり見えませんが、中でかなりいろいろと作りこみを行っていた部分があります。中でも一番労力をかけることになった機能は、「LAN内ホスト検索(Scan)」機能です。LANに接続されている全てのホスト(起動しているもの)のMACアドレス、IPアドレス、ホスト名を全て調べる機能です。nWOL作成の3割くらいをこれに費やしてます。し、不要な待ち時間をなくすことで、極限まで処理の短時間化を図っています。個人的にはかなり気持ちいいです。皆様にも一度やってみていただきたいと思っています。WOLツールの初期設定では、起動したいPCのIPアドレスやMACアドレスなどのホスト情報をツールに登録する必要があります。ホスト情報を手動で登録しようとすると、いちいちPCの電源を入れて、MACアドレス、IPアドレスを手作業で調べ、その値をWOLツールに入力しなくてはなりません。1回だけならまだ我慢できますが、WOLツールを複数PCに設定しようとすると、何度も同じことをやることになり、結構めんどくさいです。これはなるべくやりたくありません。「LAN内ホスト検索(Scan)」機能を使うと、ホストの電源さえ入れておけば、MACアドレス、IPアドレス、ホスト名を簡単に自動で調べることができますので、とても便利です。nWOLでのLAN内ホスト検索方法まず、検索したいホストの電源を入れておきます。nWOL設定画面の「Scan」ボタンを押すだけです。LAN内に接続されている(起動している)全てのホストの情報が、ホスト一覧に表示されると思います。スマホや家電なども表示されてしまいます。Unknownという名前になります。非常に短時間、多分5秒くらいで全ての結果が返ってきます。一般的なツールだと、/24のLAN(アドレス数256くらい)を調べるのにだいたい数分かかるのではないでしょうか。nWOLのLAN内ホスト検索の実現方法それでは、どうやってこの処理速度を実現しているか、ご紹介してしまいたいと思います。一般的なホスト検索処理手順まず、一般的なホスト検索方法ですが、多分以下のような処理ではないでしょうか。検索範囲のIPアドレスの一つずつについて以下の処理を順次繰り返す該当IPアドレスにpingを送信する。(機器が存在しない場合タイムアウトを待つ。)リプライがあった場合、その機器のMACアドレスを調べる。機器が存在するIPアドレスの場合はリプライはすぐ返ってきますが、機器が存在しないIPアドレスの場合は数秒間のタイムアウトを待たなくてはなりません。256アドレスのほとんどがタイムアウトする場合、かなり時間がかかってしまいます。pingのタイムアウトが1秒であった場合、全体で4分以上の待ち時間になる計算です。nWOLでのホスト検索処理手順nWOLでのホスト検索処理はおおまかに以下のようになります。検索範囲のIPアドレスの一つずつについて、非同期処理でpingを送信し、リプライを待たない。ARPテーブルを検索しLAN内に存在するIPアドレス、MACアドレスを読み取る必要であれば、各IPアドレスのホスト名を調べる。これも非同期処理で行う。終了pingは、あくまでもARPテーブルにIPアドレス、MACアドレスを登録させるためのトリガーとして送信するため、非同期処理でpingを送信し、リプライを待ちません。そのため、全てのpingがほぼ同時に送出されます。時間のかかるホスト名解決も非同期処理で並列に処理することで、処理時間の短縮を図っています。nWOLのLAN内ホスト検索(Scan)の注意点としては以下があります。実行時、LAN内のすべてのアドレスに同時にpingを飛ばすので、短時間に大量にpingが飛びます。最大256のpingが同時に送出されます。pingですので、今時のPCの性能とネットワークの速度からすれば、それほどの負荷ではないと思いますが、念頭に置いていただければと思います。/24までに制限しています。pingを送出した機器については機器が起動していれば必ずIPアドレスとMACアドレスを検出できますが、pingが飛ばせなかった機器は検出できない場合がありますので、こちらも念頭に置いていただければと思います。複数NICにも対応ちょっと余談になるかもしれませんが、nWOLは複数NICにも対応しています。LANのMagicパケットも、IPアドレス情報をもとに適切なNICから送出します。LAN内ホスト検索(Scan)も複数NICに対応しており、PCが接続している全てのLANに対して、ホスト検索を行います。IPアドレス・ホスト名自動修正機能LAN内ホスト検索を高速に処理できることは、nWOLの特徴の一つでもある、「IPアドレス・ホスト名自動修正機能」の実現も可能にしています。起動したいPCのIPアドレスがDHCPで動的に割り当てられている場合、そのIPアドレスが変わってしまう可能性があります。なると、WOLツールは、そのPCにpingすることができず、起動状態を調べることができなくなってしまいます。「IPアドレス・ホスト名自動修正機能」は、IPアドレスやホスト名が変更されていないかを調べ、変更されていた場合、自動的にnWOL内のホスト情報を修正する機能です。物理的に固有のアドレスで変わることがないMACアドレスをキーとしてIPアドレスとホスト名の変化を調べます。LAN内ホスト検索(Scan)を行い、その情報をもとにIPアドレス・ホスト名が変更されていないかを調べます。nWOLでは、LAN内ホスト検索が短時間でできるため、この自動修正機能を負担なく定期的に実行することができるようになっています。まとめnWOLのScanが初めて動作したときには、処理速度に我ながら感動したのを覚えてます。必要がなくてもぜひ一度やってみていただきたいです^^。スマホ、ルータ、家電など、LANにつながっている全ての機器のIPアドレス一覧を見ることができ、結構面白いですよ。あと、細かいですが、Scanして得られたホスト情報を、設定画面からコピーできるので、他のアプリにホスト情報を持っていくことも容易になってます。