n-Archives.net

nWOL TIPS: LAN内ホスト検索(Scan)が高速で気持ちいい

目次


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 Ver1.4において、Scan時のホスト名検索のタイムアウト時間を調整したことにより、Scanの所要時間が少し長くかかるようになっています。環境によりますが、個人環境でやってみたところ実測7秒くらいでした。)

 

nWOLのLAN内ホスト検索の実現方法

それでは、どうやってこの処理速度を実現しているか、ご紹介してしまいたいと思います。

 

一般的なホスト検索処理手順

まず、一般的なホスト検索方法ですが、多分以下のような処理ではないでしょうか。

  1. 検索範囲のIPアドレスの一つずつについて以下の処理を順次繰り返す
    1. 該当IPアドレスにpingを送信する。
    2. リプライを待つ。(機器が存在しない場合タイムアウトを待つ。)
    3. リプライがあった場合、その機器のMACアドレスを調べる。
  2. 終了

 

機器が存在するIPアドレスの場合はリプライはすぐ返ってきますが、機器が存在しないIPアドレスの場合は数秒間のタイムアウトを待たなくてはなりません。256アドレスのほとんどがタイムアウトする場合、かなり時間がかかってしまいます。pingのタイムアウトが1秒であった場合、全体で4分以上の待ち時間になる計算です。

 

nWOLでのホスト検索処理手順

nWOLでのホスト検索処理はおおまかに以下のようになります。

  1. 検索範囲のIPアドレスの一つずつについて、非同期処理でpingを送信し、リプライを待たない。
  2. ARPテーブルを検索しLAN内に存在するIPアドレス、MACアドレスを読み取る
  3. 必要であれば、各IPアドレスのホスト名を調べる。これも非同期処理で行う。
  4. 終了

 

pingは、あくまでもARPテーブルにIPアドレス、MACアドレスを登録させるためのトリガーとして送信するため、非同期処理でpingを送信し、リプライを待ちません。そのため、全てのpingがほぼ同時に送出されます。また、時間のかかるホスト名解決も非同期処理で並列に処理することで、処理時間の短縮を図っています。

 

一方、nWOLのLAN内ホスト検索(Scan)の注意点としては以下があります。

  • 実行時、LAN内のすべてのアドレスに同時にpingを飛ばすので、短時間に大量にpingが飛びます。最大256のpingが同時に送出されます。pingですので、今時のPCの性能とネットワークの速度からすれば、それほどの負荷ではないと思いますが、念頭に置いていただければと思います。
  • pingを飛ばせるIPアドレスの範囲を /24までに制限しています。サブネットがそれより大きいLANの場合、初めの256までのIPについてping を送出します。pingを送出した機器については機器が起動していれば必ずIPアドレスとMACアドレスを検出できますが、pingが飛ばせなかった機器は検出できない場合がありますので、こちらも念頭に置いていただければと思います。

 

複数NICにも対応

ちょっと余談になるかもしれませんが、nWOLは複数NICにも対応しています。Wake on 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内ホスト検索が短時間でできるため、この自動修正機能を負担なく定期的に実行することができるようになっています。

 

「IPアドレス・ホスト名自動修正機能」の詳細については、別記事で解説していますので、そちらもぜひご覧ください。

 

まとめ

nWOLのScanが初めて動作したときには、処理速度に我ながら感動したのを覚えてます。必要がなくてもぜひ一度やってみていただきたいです^^。スマホ、ルータ、家電など、LANにつながっている全ての機器のIPアドレス一覧を見ることができ、結構面白いですよ。

あと、細かいですが、Scanして得られたホスト情報を、設定画面からコピーできるので、他のアプリにホスト情報を持っていくことも容易になってます。

是非試してみてください。

 

Related Articles

 

コメントをお送りください
お名前:
コメント:
コメントの公開:



管理者より個人的に返信をご希望の方は、コメント中に必ずメールアドレスを記載してください。記載がないと返信できませんのでご注意ください。

If you want personal response from the author, please do not forget to write your email address in the comment. Otherwise, the author can not reply.

投稿されたコメントは手動で処理されるため、記事として登録されるまで1日程度かかります。

Submitted comments will be processed manually. So, please understand it will take about a day to publish your comment.