arp-scan入門ガイド(Kali Linux・Ubuntu対応)

arp-scan
- LAN内のデバイスを高速検出するネットワークスキャンツール -

ネットワーク上に接続されている機器を素早く特定したい。そんなときに活躍するのがarp-scanです。

arp-scanは、データリンク層(第2層/L2)ベースでARPパケットを送信し、IPアドレスとMACアドレスを効率よく収集できるネットワーク探索ツールです。

本記事では、arp-scanのインストール方法からコマンドの使い方、主要オプションをステップごとに解説し、実演デモを通じて実際の操作イメージもつかめるように構成しています。

さらに、実際に筆者が遭遇したトラブルとその対処法も紹介しているため、ハンズオン形式で手を動かしながら学びたい方に最適な内容です。

目次

arp-scanの基礎知識

arp-scanとは

arp-scanは、ARP(Address Resolution Protocol)を利用してローカルネットワーク上の機器を検出するネットワーク探索ツールです。

ARPとは、IPアドレスからMACアドレスを解決するためのプロトコルであり、OSI参照モデルのデータリンク層(第2層/L2)で動作します。

具体的には、指定したIPレンジに対してARPリクエストを送信し、応答を返したホストのIPアドレス・MACアドレス・ベンダー情報を一覧表示します。

例えば、192.0.2.0/24のネットワークに対して実行した場合、最大256ホストに対してARPリクエストを送信し、応答のあったホストを一覧化します。

実行結果例

192.0.2.10     00:11:22:33:44:55       Cisco Systems, Inc
192.0.2.100    aa:bb:cc:dd:ee:ff       BUFFALO.INC
192.0.2.150    11:22:33:44:55:66       (Unknown)

このように、IPアドレス・MACアドレス・ベンダー情報を一度に取得できる点が、arp-scanの大きな特徴です。

主な特徴・できること

  • ローカルネットワーク内のホストを網羅的に列挙できる
  • IPアドレスと紐付いたMACアドレスも取得できる
  • MACアドレスからベンダー(製造元メーカー)を特定できる
  • OSやサービスに依存せず、ほぼすべての機器(PC・スマホ・IoTなど)を検出可能
  • データリンク層(第2層/L2)で動作するため、同一サブネット内のスキャンに特化
  • ARPリクエストを送信するので、pingスキャンでは検出できないホストも検出できる
  • スキャン範囲(CIDR指定など)を柔軟に設定できる
  • 結果をスクリプトや他ツールと連携しやすい
  • オープンソース

ネットワーク内のアクティブな機器を可視化するために用いられ、未使用IPアドレスの把握不正接続機器の特定などの用途にも活用されています。

特に、「pingが通らないが存在するホスト」を検出できる点は、他ツールにはない重要な特徴です。

arp-scanが重宝される理由

ネットワーク探索ツールは数多く存在しますが、arp-scanが特にローカルネットワーク調査において使用される理由は、以下の技術的特性にあります。

データリンク層(第2層/L2)ベースのため検出精度が高い

ICMP(ping)ベースのスキャンでは、ファイアウォールやホストの設定によって応答がブロックされることがあります。一方、ARPはローカルネットワーク内で必須のプロトコルであるため、多くの機器が応答します。そのため、ICMP応答を無効化しているホストでも、arp-scanであれば高い確率で検出できます。

MACアドレス情報が取得できる

IPアドレスだけでなくMACアドレスも同時に取得できるため、以下のような分析が可能です。

  • 未許可デバイスの検出(例:私物端末の接続)
  • ベンダー情報から機器種別の推定(例:ネットワーク機器、IoT機器 など)

シンプルで再現性が高い

コマンドがシンプルであり、スクリプトへの組み込みも容易です。脆弱性診断やペネトレーションテストの初期フェーズにおいて、安定した結果を得やすい点も評価されています。

arp-scanのインストール

arp-scanは軽量かつ依存関係の少ないツールで、多くのLinuxディストリビューションで容易に導入できます。このセクションでは、実務や学習環境でよく利用されるKali LinuxおよびUbuntuへの導入手順を解説します。

Kali Linuxの場合

Kali Linuxでは、arp-scanは標準ツールとしてあらかじめインストールされています。そのため、追加作業は必要なく、即座に利用可能です。

インストール済みであることは、以下のコマンドで確認できます。

実行パスの確認

$ which arp-scan
/usr/sbin/arp-scan

バージョンの確認

$ arp-scan -V
arp-scan 1.10.0

Copyright (C) 2005-2022 Roy Hills
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

libpcap version 1.10.6 (64-bit time_t, with TPACKET_V3)
Built with libcap POSIX.1e capability support.

Ubuntuの場合

Ubuntuでは、arp-scanは公式リポジトリに含まれており、APTパッケージ管理システムを用いて簡単に導入できます。

STEP

パッケージリストの更新

$ sudo apt update

まずはパッケージリストを最新の状態に更新します。これにより、最新バージョンのarp-scanを取得できるようになります。

STEP

パッケージ情報の確認

$ apt show arp-scan
Package: arp-scan
Version: 1.10.0-2build2
Priority: extra
Section: universe/admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,601 kB
Depends: libc6 (>= 2.38), libcap2 (>= 1:2.10), libpcap0.8t64 (>= 1.5.1)
Recommends: libwww-perl, libtext-csv-perl, ieee-data
Homepage: https://github.com/royhills/arp-scan
Download-Size: 492 kB
APT-Sources: http://jp.archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Description: arp scanning and fingerprinting tool
 arp-scan is a command-line tool that uses the ARP protocol to discover and
 fingerprint IP hosts on the local network. It is available for Linux and BSD
 under the GPL licence

インストール前に、パッケージの詳細情報を確認します。バージョンや依存関係、概要説明などを把握できます。

  • Version:パッケージのバージョン
  • Depends:依存ライブラリ
  • Description:パッケージの概要
STEP

インストール状況の確認

$ apt list --installed | grep arp-scan
(未インストールの場合は何も出力されません。)

念のため、既にインストールされているかを確認します。

STEP

arp-scanのインストール

$ sudo apt install arp-scan

arp-scanパッケージをインストールします。

STEP

インストール後の確認

実行パスの確認

$ which arp-scan
/usr/sbin/arp-scan

バージョンの確認

$ arp-scan -V
arp-scan 1.10.0

Copyright (C) 2005-2022 Roy Hills
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

libpcap version 1.10.4 (with TPACKET_V3)
Built with libcap POSIX.1e capability support.

基本的な使い方

arp-scanはrawソケットを利用するため、実行には管理者権限(rootまたはsudo)が必要です。

arp-scanコマンドの実行方法

最もシンプルなコマンド

$ sudo arp-scan -l
or
$ sudo arp-scan --localnet

arp-scanでローカルネットワーク全体をスキャンするには、-l(--localnet)オプションを指定します。

例えば、ネットワークインターフェースのIPアドレスが192.0.2.11/24の場合、192.0.2.0/24のすべてのホスト宛てにARPリクエストを送信し、応答したホストのIPアドレスとMACアドレスを一覧表示します。

ネットワークインターフェースが複数存在する環境では、最初に利用可能なインターフェースが自動的に選択されます。

ネットワークインターフェースを指定したスキャン

複数のNICが存在する環境や仮想マシン上で複数のネットワークアダプターを設定している場合、インターフェースを明示的に指定します。インターフェースを指定しないとデフォルトのインターフェースが適用されるため、意図しないネットワークに対してスキャンされる可能性があります。

$ sudo arp-scan -l -I eth0
or
$ sudo arp-scan -l --interface=eth0
  • -I (--interface):使用するネットワークインターフェース

eth0enp3s0wlan0など、システムに搭載されたインターフェース名を引数に指定します。

使用可能なインターフェース一覧は、ip aまたはifconfig -aコマンドで確認できます。

実行結果の見方

実行結果のサンプル

192.0.2.10     00:11:22:33:44:55       BUFFALO.INC
192.0.2.100    aa:bb:cc:dd:ee:ff       Cisco Systems, Inc
192.0.2.150    11:22:33:44:55:66       (Unknown)
  • 第1カラム(IPアドレス):応答したホストのIPv4アドレス
  • 第2カラム(MACアドレス):ホストのMACアドレス
  • 第3カラム(ベンダー情報):MACアドレスから推定されるメーカー名

ベンダーの識別には、ieee-oui.txtmac-vendor.txtが使用されます。

  • /usr/share/arp-scan/ieee-oui.txt
  • /etc/arp-scan/mac-vendor.txt

ieee-oui.txtは、IEEEの登録データから生成されます。mac-vendor.txtには、追加のMACアドレスとベンダーのマッピングが含まれており、カスタムマッピングを追加するために使用します。

get-ouiコマンドを使用すると、IEEEレジストリから最新データを取得して、ieee-oui.txtを更新できます。

get-ouiコマンドの実行例

$ sudo get-oui -v
Renaming /usr/share/arp-scan/ieee-oui.txt to /usr/share/arp-scan/ieee-oui.txt.bak
Opening /usr/share/arp-scan/ieee-oui.txt for output
Processing IEEE IAB registry data from file:///var/lib/ieee-data/iab.csv
        Downloaded 381908 bytes
        4575 IAB entries written to /usr/share/arp-scan/ieee-oui.txt
Processing IEEE MAM registry data from file:///var/lib/ieee-data/mam.csv
        Downloaded 608108 bytes
        5418 MAM entries written to /usr/share/arp-scan/ieee-oui.txt
Processing IEEE OUI registry data from file:///var/lib/ieee-data/oui.csv
        Downloaded 3372302 bytes
        35816 OUI entries written to /usr/share/arp-scan/ieee-oui.txt
Processing IEEE OUI36 registry data from file:///var/lib/ieee-data/oui36.csv
        Downloaded 557084 bytes
        6079 OUI36 entries written to /usr/share/arp-scan/ieee-oui.txt

Total of 51888 MAC/Vendor mappings written to /usr/share/arp-scan/ieee-oui.txt
  • -vオプション:詳細な進行状況を出力

ヘルプコマンド

使用可能なオプションの一覧は、以下のコマンドで確認できます。

$ arp-scan -h
or
$ arp-scan --help

主なオプション

arp-scanには多数のオプションが用意されており、目的に応じて柔軟にスキャンを制御できます。ここでは、使用頻度の高いオプションを「IPアドレス指定」「スキャン制御」「出力・表示」の3カテゴリに分けて解説します。

IPアドレス指定

特定のIPアドレスのみスキャンする

ローカルネットワーク全体ではなく、特定のIPアドレスを指定してスキャンすることもできます。

単一のIPアドレス

$ sudo arp-scan 192.0.2.1

CIDR形式

$ sudo arp-scan 192.0.2.0/24

範囲指定

$ sudo arp-scan 192.0.2.1-192.0.2.50

複数指定(スペース区切り)

$ sudo arp-scan 192.0.2.1 192.0.2.10 192.0.2.100

ARPはデータリンク層(第2層)プロトコルのため、スキャン対象は同一L2セグメント内に限られます。

ファイル読み込み(-f、--file)

$ sudo arp-scan -f targets.txt

スキャン対象のIPアドレスをファイルから読み込むオプションです。ファイルのフォーマットは、IPアドレス、範囲指定、CIDR表記で記述します。

targets.txtの例

192.0.2.1
192.0.2.10-192.0.2.100
192.0.2.0/24

当サイトの検証環境では、ファイルを一般ユーザーのホームディレクトリに配置すると、読み取り権限エラーが発生しました。

$ sudo arp-scan -f /home/kali/targets.txt
Cannot open /home/kali/targets.txt: Permission denied

rootユーザーがアクセス可能なディレクトリへ配置することで、正常に動作することを確認済みです。(例./root直下 など)

$ sudo arp-scan -f /root/targets.txt

スキャン制御

送信回数(-r、--retry)

$ sudo arp-scan -l -r 5
or
$ sudo arp-scan -l --retry=5

ARPリクエストの再送回数を指定します。(デフォルト:2回)

ネットワークの遅延やパケットロスが発生しやすい環境では、再送回数を増やすことで検出漏れを減らせます。一方、安定した環境では再送回数を減らすことでスキャン時間を短縮できます。

再送回数用途の目安
1高速スキャンを優先する場合
2(デフォルト)一般的な環境
3〜5不安定なネットワークや無線LAN環境

待機時間(-t、--timeout)

$ sudo arp-scan -l -t 1000
or
$ sudo arp-scan -l --timeout=1000

各ホストからのARPレスポンスを待機する時間をミリ秒(ms)単位で指定します。(デフォルト:500ms)

レイテンシが高いネットワークや、応答の遅いデバイス(組み込み機器・IoT機器など)を対象にする場合、待機時間を大きめに設定すると検出率が向上します。

# タイムアウトを1秒(1000ミリ秒)に設定(応答の遅いIoT機器への対応)
sudo arp-scan -l -t 1000

# タイムアウトを200ミリ秒に短縮(高速スキャン優先)
sudo arp-scan -l -t 200

送信間隔(-i、--interval)

sudo arp-scan -l -i 100
or
sudo arp-scan -l --interval=100

ARPリクエストの送信間隔(ミリ秒)を指定します。(デフォルト:2ミリ秒)

送信間隔を広げることで、ネットワーク機器への負荷を低減できます。特に、スイッチやルーターの処理能力が限られている環境、または本番稼働中のネットワークで慎重にスキャンを行う際に有効です。

後述する-B (--bandwidth)と同時に指定することはできません。

送信帯域(-B、--bandwidth)

# 帯域幅を1,000,000bps(1Mbps)に設定
$ sudo arp-scan -l -B 1000000
or
$ sudo arp-scan -l --bandwidth=1000000

ARPリクエストの送信に使用する帯域幅をビット/秒(bps)単位で指定します。(デフォルト:256000ビット/秒)

前述の-i (--interval)と同時に指定することはできません。

出力・表示

ベンダー情報を非表示(-q、-quiet)

$ sudo arp-scan -l -q
or
$ sudo arp-scan -l --quiet

# 出力例
192.0.2.10     00:11:22:33:44:55
192.0.2.100    aa:bb:cc:dd:ee:ff
192.0.2.150    11:22:33:44:55:66

IPアドレスとMACアドレスのみを出力します。(ベンダー情報は表示しない。)

ヘッダーとフッターを非表示(-x、--plain)

$ sudo arp-scan -l -x
or
$ sudo arp-scan -l --plain

ヘッダーやフッターを非表示にし、検出結果のみを出力します。

応答時間を出力(-D、--rtt)

$ sudo arp-scan -l -D
or
$ sudo arp-scan -l --rtt

# 出力例
192.0.2.10     00:11:22:33:44:55       BUFFALO.INC  RTT=0.407 ms
192.0.2.100    aa:bb:cc:dd:ee:ff       Cisco Systems, Inc  RTT=0.237 ms
192.0.2.150    11:22:33:44:55:66       (Unknown)  RTT=0.387 ms

各ホストからの応答時間(RTT:Round Trip Time)を出力します。

出力フォーマット(-F、--format)

$ sudo arp-scan -l -F '${ip}\t${mac}\t${vendor}'
or
$ sudo arp-scan -l --format='${ip}\t${mac}\t${vendor}'

\t:タブ

出力フォーマットをカスタマイズするためのオプションです。フィールド指定子を使って、出力する項目や順序を定義します。

主なフィールド指定子
  • ${ip}:IPアドレス
  • ${mac}:MACアドレス
  • ${vendor}:ベンダー名
  • ${rtt}:応答時間(RTT)

CSVやTSV形式で実行結果を保存したい場合、-Fオプションと>リダイレクトやteeコマンドを組み合わせる使い方が実用的です。

# 例)リダイレクトを使って、CSVファイルに出力
$ sudo arp-scan -l -F '${ip},${mac},${vendor}' > output.csv

# 例)teeコマンドを使って、TSVファイルに出力
$ sudo arp-scan -l -F '${ip}\t${mac}\t${vendor}' | tee output.tsv

詳細出力(-v、--verbose)

$ sudo arp-scan -l -v
$ sudo arp-scan -l -vv
$ sudo arp-scan -l -vvv

詳細な情報を出力します。複数回指定することで、詳細レベルをさらに上げることができます。(-v-vv-vvv

【実演デモ】arp-scanを実行する

このセクションでは、検証用に構築したローカル環境を使い、arp-scanの実行手順と出力結果の読み方を解説します。

検証環境のシステム構成

OSIPアドレス備考
VirtualBoxのネットワークアダプター192.168.10.1ホストオンリーアダプター
Kali Linux 2026.1192.168.10.11仮想マシン(スキャン実行ホスト)
Metasploitable2192.168.10.101仮想マシン
Ubuntu 24.04 LTS192.168.10.102仮想マシン
OWASP BWA192.168.10.105仮想マシン

本デモは、当サイトが用意した検証用の仮想ネットワーク上で実施しています。

STEP

ネットワークインターフェースの確認

スキャン前に、使用するインターフェース名を確認します。

$ ip a
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
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:43:41:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.11/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe43:41e8/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:79:17:04 brd ff:ff:ff:ff:ff:ff
    inet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic noprefixroute eth1
       valid_lft 70637sec preferred_lft 59837sec
    inet6 fd17:625c:f037:3:51cf:e21a:823:3d09/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 86288sec preferred_lft 14288sec
    inet6 fe80::53d7:53c7:c047:d04e/64 scope link

ターゲットネットワークに接続されているインターフェースがeth0であることを確認しました。

STEP

ローカルネットワーク全体をスキャンする

$ sudo arp-scan -l -I eth0
Interface: eth0, type: EN10MB, MAC: 08:00:27:43:41:e8, IPv4: 192.168.10.11
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.10.1    0a:00:27:00:00:04       (Unknown: locally administered)
192.168.10.101  08:00:27:0e:b7:7f       PCS Systemtechnik GmbH
192.168.10.102  08:00:27:d3:95:02       PCS Systemtechnik GmbH
192.168.10.105  08:00:27:fc:30:6e       PCS Systemtechnik GmbH

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 2.127 seconds (120.36 hosts/sec). 4 responded
  • -l:ローカルネットワーク全体
  • -I:ネットワークインターフェースを指定
STEP

実行結果を確認する

スキャンを実行したマシン自身の情報

Interface: eth0, type: EN10MB, MAC: 08:00:27:43:41:e8, IPv4: 192.168.10.11

これは自分自身(arp-scanを実行したマシン)のネットワーク情報です。

  • インターフェース:eth0
  • MACアドレス:08:00:27:43:41:e8
  • IPアドレス:192.168.10.11

スキャン対象

Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)

256ホスト = /24ネットワーク(192.168.10.0〜255)に対して、スキャンを開始します。(つまりLAN内を全部調査)

検出された機器一覧

192.168.10.1    0a:00:27:00:00:04       (Unknown: locally administered)
192.168.10.101  08:00:27:0e:b7:7f       PCS Systemtechnik GmbH
192.168.10.102  08:00:27:d3:95:02       PCS Systemtechnik GmbH
192.168.10.105  08:00:27:fc:30:6e       PCS Systemtechnik GmbH
  • locally administered:仮想NICや手動設定のMACアドレス
  • PCS Systemtechnik GmbH:VirtualBoxの仮想NICのOUIベンダー

検出された機器が一覧形式で出力されます。

IPアドレスMACアドレス (物理アドレス)ベンダー(推定)
192.168.10.10a:00:27:00:00:04不明(ルーター or ゲートウェイ)
192.168.10.10108:00:27:0e:b7:7fVirtualBox仮想マシン
192.168.10.10208:00:27:d3:95:02VirtualBox仮想マシン
192.168.10.10508:00:27:fc:30:6eVirtualBox仮想マシン

通信結果

4 packets received by filter, 0 packets dropped by kernel
  • 4台から応答あり
  • パケットロスなし

スキャン結果のまとめ

Ending arp-scan 1.10.0: 256 hosts scanned in 2.127 seconds (120.36 hosts/sec). 4 responded

256ホストを約2.1秒でスキャンし、4ホストが応答したことがわかります。

STEP

結果をファイルに保存する

$ sudo arp-scan -l -I eth0 | tee output.txt

teeコマンドを使うことで、ターミナルへの表示と同時にファイルへの書き込みが行われます。

よくあるトラブルと対処法

arp-scan実行時に、以下のWARNINGが発生することがあります。

WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied
WARNING: Cannot open MAC/Vendor file mac-vendor.txt: Permission denied

これは、ベンダー定義ファイルへのアクセス権限に関する問題です。スキャン結果(IP、MACアドレス)には影響ありません。

当サイトの検証環境では、「Kali Linux」および「Ubuntu」の両環境で上記のWARNINGが発生しました。

STEP

仕様確認

arp-scanコマンドを実行すると、ベンダー定義ファイルは以下の順序で読み込まれます。

  1. まず、カレントディレクトリにあるieee-oui.txtmac-vendor.txtが読み込まれます。
  2. 対象ファイルがカレントディレクトリに見つからない場合、既定のファイルが使用されます。
    • /usr/share/arp-scan/ieee-oui.txt
    • /etc/arp-scan/mac-vendor.txt
STEP

調査結果

ベンダー定義ファイルは問題なし

  • カレントディレクトリに対象ファイルが存在しない。
  • /usr/share/arp-scan/ieee-oui.txt/etc/arp-scan/mac-vendor.txtは存在する。
  • 同ファイルのrootユーザーによる参照権限も問題ない。

arp-scanを実行するディレクトリによって挙動が異なる

WARNINGが発生しないケース
  • /home直下
  • /etc直下
  • 一般ユーザーのホームディレクトリのサブディレクトリ(例./home/kali/Documents など)
WARNINGが発生するケース
  • 一般ユーザーのホームディレクトリ直下(例./home/kali など)
STEP

推測される原因

arp-scanを実行時、カレントディレクトリ内のファイルを読み込もうとした際、アクセス権限が不足しているためエラーが発生?(arp-scanのバグ?)

STEP

対処法

一般ユーザーのホームディレクトリ直下以外で実行する

# 例)/home/kali/Documentsで実行する場合
$ cd /home/kali/Documents
$ sudo arp-scan -l

ベンダー定義ファイルをオプション指定する

$ sudo arp-scan -l \
  --ouifile=/usr/share/arp-scan/ieee-oui.txt \
  --macfile=/etc/arp-scan/mac-vendor.txt

ベンダー定義ファイルのパスを直接指定することにより、カレントディレクトリの読み取りを省略します。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次