ローカルネットワークスキャンの仕組み では、Ksocket がどのようにしてネットワーク内の機器を探すのかを解説しています。
本記事では、あるネットワーク環境を例として、Ksocket をインストールして実行するとどのようにスキャン処理が行われるのか、ステップごとに詳しく追ってみましょう。
例とするネットワーク環境
今回は、以下のような社内ネットワークが存在すると仮定します。
/24
のセグメントが4つ存在する- ルータ
R1
は SNMP 応答が有効な設定になっている - ルータ
R2
は SNMP 応答が無効な設定になっている 192.168.1.0/24
セグメント内のPC (192.168.1.10
)に Ksocket をインストール
この状態で Ksocket でスキャンを実行すると、どのような結果となるかを見ていきましょう。
スキャンにはいくつかのオプションを指定することができるのですが、ここではどのオプションも指定せず、デフォルト設定で動作させるものと仮定します。
スキャンの実行
スキャン候補IPアドレスの取得
まず初めに、Ksocket は以下からIPアドレスの取得を試みます。
- Ksocket 動作マシンのデフォルトゲートウェイ
- Ksocket 動作マシンの ARP キャッシュ
「Ksocket 動作マシンのデフォルトゲートウェイ」は、今回のネットワーク例の場合 192.168.1.1
です。
「Ksocket 動作マシンの ARP キャッシュ」は、Ksocket 動作マシンや 192.168.1.0/24
セグメントのネットワーク設定によってどの程度の情報が取得できるかが変わります。場合によっては、 192.168.1.0/24
以下に存在するすべてのマシンIPを取得できるでしょう。
この時点で、Ksocket は以下の緑色で示した範囲のIPアドレスを取得していることになります。
新規IPアドレスの検索
Ksocketは、前ステップで見つかったIPアドレスの中から、さらに別のIPアドレスを探します。
各IPアドレスより、SSH/WinRM/SNMP を用いて、以下の情報取得を行います。
- ARP キャッシュテーブル
- NextHop
- 機器に割り当てられたIPアドレス一覧
今回のネットワーク例の場合、ルータR1
の SNMP 応答が有効な設定になっているので、ここから ARP キャッシュテーブルと NextHop が取得できます。
ARP キャッシュテーブルからは 192.168.2.0/24
と 192.168.3.0/24
の中のIPアドレスリストが、NextHop からは 192.168.0.1
が取得できるでしょう。
機器に割り当てられたIPアドレス一覧は、今回の例だと 192.168.0.2
, 192.168.2.1
, 192.168.3.1
が取得できます。
これにより、図の左側の範囲のIPアドレスを見つけることができました。
新規IPアドレスの検索 (その2)
Ksocket は、前項の「新規IPアドレスの検索」処理を、新しいIPアドレスが見つけられなくなるまで繰り返し行います。
つまり、前項で新しく見つかった各IPアドレスより、SSH/WinRM/SNMP を用いて、再度以下の情報取得を行います。
- ARP キャッシュテーブル
- NextHop
- 機器に割り当てられたIPアドレス一覧
しかし、今回のネットワーク例の場合、ルータ R2
の SNMP 応答は無効となっています。
もし有効であれば ARP キャッシュテーブルから 10.10.0.0/24
のIPアドレスが取得できるのですが、無効の場合はここで探索は終了することになります。
このようにして見つかった各IPに対して、Ksocket は本当にIPアドレスが存在するかどうかを確認し、SSH/WinRM/SNMP でアクセスできる場合は構成情報を取得します。
明示的な探索範囲の追加
上述の、どのオプションも指定しない場合でのスキャンでは、 10.10.0.0/24
までは見つけ出すことができませんでした。
これをスキャンできるようにするためには、「スキャン起点アドレス」 というスキャンオプションを使用します。
スキャン起点アドレス に設定されたIPアドレスは、「スキャン候補IPアドレスの取得」ステップで発見されたIPアドレスと同じように扱われ、結果としてスキャンされる対象となります。
今回のネットワーク例の場合、スキャン起点アドレス = 10.10.0.0/24
と入力することで、以下の赤色で示した部分が探索対象に追加されます。