はじめに
この実験では、Kali Linux の主要なネットワークツールを使用して、基本的なネットワーク診断と管理タスクを実行する方法を学びます。この実践的なセッションは初心者向けに設計されており、ネットワークステータスの確認、接続テスト、ネットワーク上のデバイス検出、およびオープンポートのスキャンを順を追って説明します。ip a、ping、netdiscover、nmap といったツールを使用することで、LabEx の仮想マシン環境内でネットワーク分析の基礎スキルを身につけることができます。ターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続され、すぐに実習を開始できる状態になります。
ip a によるネットワークインターフェースの確認
最初のステップでは、ip a コマンドを使用してシステム上のネットワークインターフェースを調査する方法を学びます。これは、自身のネットワーク構成を理解するための基本的なスキルです。
LabEx 環境でターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続されます。手動でコンテナを起動したりシェルに入ったりする必要はありません。環境はすでに整っています。
まず、iproute2 パッケージがインストールされていない場合に備えて、インストールを行う必要があります。ターミナルに以下のコマンドを入力して Enter キーを押してください。
apt update && apt install -y iproute2
次に、以下のコマンドを入力して Enter キーを押します。
ip a
このコマンドは、システム上のすべてのネットワークインターフェースを、IP アドレスやステータスなどの詳細情報とともに一覧表示します。
出力例(実際の出力は環境によって異なる場合があります):
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
出力には、lo(ループバック)や eth0(主要なネットワークインターフェース)などのインターフェースが表示されます。eth0 の下にある inet の行を探して、172.17.0.2 のような自身の IP アドレスを確認してください。<UP> というステータスは、そのインターフェースがアクティブであることを示しています。この出力を理解することで、システムがネットワークに接続され、次のタスクに進む準備ができていることを確認できます。
ping によるネットワーク接続のテスト
ネットワークインターフェースを確認できたら、次のステップはシステムが外部サーバーと通信できるかどうかをテストすることです。ping コマンドを使用して、インターネットへの接続性を確認します。
ping がインストールされていない場合は、インストールします。
apt install -y iputils-ping
Kali Linux コンテナのターミナルで以下のコマンドを入力し、Enter キーを押します。
ping -c 4 8.8.8.8
-c 4 オプションは ping の試行回数を 4 回に制限します。8.8.8.8 は Google のパブリック DNS サーバーであり、接続テストのための信頼できるターゲットです。
出力例(実際の出力は環境によって異なる場合があります):
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=10.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=9.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=10.1 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=117 time=9.9 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 9.800/10.000/10.200/0.141 ms
この出力は 8.8.8.8 からの応答を示しており、time(ミリ秒単位の遅延)や icmp_seq(シーケンス番号)などの詳細が含まれています。0% packet loss は接続が成功したことを意味します。もし 100% packet loss と表示された場合は、接続に問題があることを示しています。ping コマンドは、システムが外部ネットワークに到達できるかを確認するためのシンプルかつ強力なツールであり、多くのネットワークタスクの前提条件となります。
netdiscover のインストールと使用によるネットワークデバイスの特定
ネットワーク接続を確認したので、次は netdiscover ツールを使用してローカルネットワーク上のデバイスを検出する方法を学びます。このツールは Kali Linux コンテナにプリインストールされていない可能性があるため、まずインストールを行います。
パッケージリストを更新し、netdiscover をインストールすることから始めます。ターミナルで以下のコマンドを入力し、それぞれ Enter キーを押してください。
apt install -y netdiscover
これらのコマンドはパッケージリストをリフレッシュし、確認を求めずに netdiscover をインストールします。インストールが完了するまで数秒待ちます。
次に、スキャンするネットワークインターフェースを特定する必要があります。ステップ 1 で ip a を使用したので、その出力を見直すか、再度実行してインターフェース名(通常は eth0)と IP 範囲(Docker 環境では通常 172.17.0.0/16)を確認してください。
それでは、netdiscover を実行してローカルネットワークをスキャンします。以下のコマンドを入力して Enter キーを押します。
netdiscover -i eth0 -r 172.17.0.0/16
-i eth0 はインターフェースを指定し、-r 172.17.0.0/16 はスキャンする IP 範囲を定義します。インターフェース名が異なる場合は、eth0 を適宜置き換えてください。
出力例(実際の出力は環境によって異なる場合があります):
Currently scanning: 172.17.0.0/16 | Screen View: Unique Hosts
2 Captured ARP Req/Rep packets, from 2 hosts. Total size: 120
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
172.17.0.1 02:42:ac:11:00:01 1 60 Unknown vendor
172.17.0.2 02:42:ac:11:00:02 1 60 Unknown vendor
この出力には、ネットワーク上のデバイスの IP アドレスと MAC アドレスがリストされます。例えば、172.17.0.2 はあなた自身のシステム、172.17.0.1 はゲートウェイである可能性があります。デバイスが検出されるまで数秒間スキャンを実行し、Ctrl+C を押して停止させます。
netdiscover ツールは ARP リクエストを使用して、ローカルネットワーク上のアクティブなデバイスを検出します。これは、自分のシステムと同じネットワークセグメントにどのようなデバイスが接続されているかをマッピングするのに役立ち、ネットワーク診断において一般的なタスクです。
nmap のインストールと基本的なポートスキャンの実行
ネットワーク上のデバイスを特定したら、次のステップは nmap ツールを使用して特定のデバイスのオープンポートをスキャンすることです。これにより、ターゲットシステムでどのようなサービスが実行されているかを把握できます。nmap がインストールされていない場合は、まずインストールします。
ターミナルで以下のコマンドを入力してパッケージリストを更新し、nmap をインストールします。
apt install -y nmap
インストールが完了するまで数秒待ちます。
前のステップの netdiscover の出力から、ネットワーク上のデバイスの IP アドレス(例:172.17.0.1)をメモしているはずです。この IP アドレスに対してオープンポートのスキャンを実行します。スキャン結果で別の IP が表示されていた場合は、それを使用してください。
ターミナルで以下のコマンドを入力して Enter キーを押し、基本的なポートスキャンを実行します。
nmap 172.17.0.1
出力例(実際の出力は環境によって異なる場合があります):
Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-11 06:04 UTC
Nmap scan report for 172.17.0.1
Host is up (0.0000060s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
3001/tcp open nessus
MAC Address: 02:42:06:F2:C3:B0 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
この出力は、ターゲット IP で開いているポートをリストしています。例えば、22/tcp open ssh は SSH サービスが稼働していることを示し、3000/tcp や 3001/tcp はウェブサーバーなどの存在を示唆しています。Network Mapper の略である nmap ツールは、ネットワーク探索やセキュリティ監査に広く使用されており、デバイス上の潜在的なアクセスポイントを特定することができます。
nmap スキャン結果のファイルへの保存
最後のステップでは、将来の参照のために nmap スキャンの結果をファイルに保存する方法を学びます。これは、前のステップで行った基本的なポートスキャンを応用したものです。
ステップ 4 と同じターゲット IP アドレス(例:172.17.0.1)を使用して、ターミナルで以下のコマンドを実行します。これによりスキャンが実行され、出力が scan_results.txt という名前のファイルに保存されます。
nmap 172.17.0.1 -oN /root/scan_results.txt
-oN オプションは、スキャン結果を通常のテキスト形式で指定されたパス /root/scan_results.txt に保存するよう nmap に指示します。ステップ 4 で別の IP を使用した場合は、172.17.0.1 をその IP に置き換えてください。
出力は以前と同様にターミナルに表示されますが、同時に /root/scan_results.txt にも保存されます。ファイルに結果が含まれていることを確認するために、以下のコマンドを入力して Enter キーを押します。
cat /root/scan_results.txt
出力例(実際の出力は環境によって異なる場合があります):
Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-11 06:05 UTC
Nmap scan report for 172.17.0.1
Host is up (0.0000060s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
3001/tcp open nessus
MAC Address: 02:42:06:F2:C3:B0 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
スキャン結果をファイルに保存することは、調査結果を記録するための実用的な方法です。これにより、スキャンを再実行することなく、後で情報を確認したり共有したりすることができ、ネットワーク分析やトラブルシューティングにおいて非常に役立ちます。
まとめ
この実験では、Kali Linux の基本的なネットワークツールを使用して、不可欠なネットワーク診断を実行する方法を学びました。ip a によるネットワークインターフェースの確認から始まり、ping を使った接続テスト、netdiscover によるローカルネットワーク上のデバイス検出、nmap による基本的なポートスキャン、そして将来の参照のためにスキャン結果をファイルに保存する方法を習得しました。これらのスキルは、Linux 環境におけるネットワーク分析とトラブルシューティングの強固な基礎となります。


