ネットワーク管理者のための arpfetch 活用ガイド
はじめに:arpfetchとは何か?
arpfetchは、ネットワーク上の機器(主にルータなど)からSNMP(Simple Network Management Protocol)を利用して、IPアドレスとそれに対応するイーサネット(MAC)アドレスのペアリング情報を取得するためのコマンドラインツールです。取得した情報は、標準出力に特定のフォーマットで表示されます。
このツールは、ネットワーク監視ツールである arpwatch パッケージの一部として提供されることが多いです。arpwatch がネットワークのARPトラフィックを直接監視するのに対し、arpfetch はSNMPを通じて、リモートデバイスのARPキャッシュ情報を取得する点が異なります。
特に、arpsnmp というツールと連携して使用されることが想定されています。arpfetch がSNMP経由で取得したデータを arpsnmp が利用し、arpwatch と同様にIPアドレスとMACアドレスのペアリングデータベースを維持・管理し、変更があった場合に通知を行うことができます。
arpfetch は、直接ネットワークを監視するのではなく、SNMPに対応したネットワーク機器に問い合わせてARP情報を収集します。 インストール方法
arpfetch は通常、arpwatch パッケージに含まれています。したがって、arpfetch を利用するには、お使いのLinuxディストリビューションのパッケージマネージャを使って arpwatch をインストールする必要があります。
Debian/Ubuntu系の場合:
sudo apt update
sudo apt install arpwatchRed Hat/CentOS/Fedora系の場合:
sudo yum install arpwatch
# または
sudo dnf install arpwatch インストールが完了すると、arpfetch コマンドが利用可能になります。依存関係として、SNMPリクエストを行うためのライブラリ(例: snmpwalk コマンドを提供するパッケージ、多くの場合 net-snmp-utils や snmp など)が必要になる場合がありますが、通常は arpwatch の依存関係として自動的にインストールされます。
基本的な使い方
arpfetch の基本的な構文は非常にシンプルです。
arpfetch <host> <cname><host>: ARP情報を取得したい対象のネットワーク機器のホスト名またはIPアドレスを指定します。<cname>: 対象機器で設定されているSNMPコミュニティ名を指定します。一般的には読み取り専用のコミュニティ名(例: “public”)を使用します。
例えば、IPアドレスが 192.168.1.1 のルータから、コミュニティ名 “public” を使ってARP情報を取得する場合は、以下のようにコマンドを実行します。
arpfetch 192.168.1.1 public 成功すると、標準出力に以下のような形式でIPアドレスとMACアドレスのペアが表示されます。この形式は arpsnmp や arpwatch が処理できる形式になっています。
<MACアドレス> <IPアドレス>
<MACアドレス> <IPアドレス>
...例:
00:11:22:33:44:55 192.168.1.100
aa:bb:cc:dd:ee:ff 192.168.1.101出力結果の解釈
出力される各行は、対象機器のARPキャッシュに存在するエントリを表しています。左側がMACアドレス(物理アドレス)、右側がそれに対応するIPアドレスです。これにより、指定したネットワーク機器が認識している他のデバイスのARP情報を確認できます。
コマンドオプション
多くのLinuxコマンドとは異なり、arpfetch のmanページやヘルプ出力 (arpfetch -h など) を見ると、コマンドラインオプションはほとんど(あるいは全く)存在しないことがわかります。基本的な動作は、引数としてホスト名とコミュニティ名を受け取り、SNMP経由で情報を取得することに特化しています。
いくつかの情報源によれば、arpfetch は内部的に snmpwalk コマンド(または同等のSNMPライブラリ関数)を利用してARPテーブル情報(具体的には、ipNetToMediaPhysAddress や関連するMIB)を取得しています。そのため、SNMPのバージョン(v1, v2c, v3)や認証情報などの詳細な設定を行いたい場合は、arpfetch 自体のオプションではなく、SNMPライブラリの設定や、arpfetch の代わりに直接 snmpwalk コマンドを使用することを検討する必要があるかもしれません。
しかし、標準的な arpfetch の実装では、追加のオプションは提供されていないようです。もし特定のバージョンやディストリビューションでオプションが存在する場合は、man arpfetch コマンドで確認するのが最も確実です。
arpfetch のシンプルさは、特定のタスク(SNMPによるARP情報取得)に特化しているためです。より複雑なSNMP操作が必要な場合は、net-snmp パッケージに含まれる snmpwalk, snmpget などのツールを利用することになります。 ユースケースと活用例
arpfetch は、以下のような場面で役立ちます。
1. リモートデバイスのARPキャッシュ確認
ネットワーク上の特定のルータやスイッチが保持しているARPテーブルの内容を確認したい場合に、直接そのデバイスにログインすることなく、SNMP経由で情報を取得できます。
# コアルータ (10.0.0.1) のARPキャッシュを取得 (コミュニティ名: netadmin)
arpfetch 10.0.0.1 netadmin2. arpsnmpとの連携によるARP監視
arpfetch の主な目的は、arpsnmp へのデータ供給です。arpsnmp は、arpfetch が収集したデータをもとに、ARPデータベースを構築・更新し、変更(新しいデバイスの出現、IP/MACの変更など)を検知して管理者に通知します。
通常、これはcronジョブなどで定期的に実行されます。例えば、/etc/cron.d/arpwatch のようなファイルで設定されることがあります(具体的な設定方法はディストリビューションやバージョンにより異なります)。
# 例:arpsnmp にデータを渡す
arpfetch 192.168.1.1 public | arpsnmp -f /var/lib/arpwatch/router1.dat 上記の例では、arpfetch の出力がパイプ(|)を通じて arpsnmp に渡され、arpsnmp はその情報を使って /var/lib/arpwatch/router1.dat というデータベースファイルを更新します。-f オプションでデータベースファイルを指定します。
さらに、bihourly スクリプト(これも arpwatch パッケージに含まれることがある)を使って、複数のデバイスからのARP情報収集と arpsnmp による処理を自動化することも可能です。
3. ネットワーク調査・トラブルシューティング
ネットワーク内でIPアドレスの競合や不正なデバイス接続が疑われる場合、主要なルータやスイッチのARPキャッシュ情報を arpfetch で取得し、状況を把握するための一助とすることができます。どのMACアドレスがどのIPアドレスを使っているかを、対象デバイスの視点から確認できます。
# トラブル調査のため、特定のスイッチ (172.16.0.1) のARPテーブルを確認
arpfetch 172.16.0.1 public > switch_arp_cache.txt
# 結果をファイルに保存して後で分析するarpfetch vs. arpwatch
arpfetch と arpwatch は、どちらもARP情報を扱いますが、その収集方法と目的において異なります。
| 項目 | arpfetch | arpwatch |
|---|---|---|
| 主な目的 | SNMP経由でリモートデバイスのARPキャッシュを取得する。主に arpsnmp へのデータ供給。 | ローカルネットワークインターフェースでARPパケットを直接監視(リッスン)し、IP/MACペアのデータベースを維持・変更を通知する。 |
| 情報収集方法 | SNMP (snmpwalk などを使用) | ネットワークインターフェースでのパケットキャプチャ (libpcapを使用) |
| 動作モード | コマンド実行時に一度だけ情報を取得する(能動的問い合わせ) | デーモンとして常駐し、継続的にネットワークを監視する(受動的監視) |
| 監視対象 | SNMPが有効なリモートデバイス(ルータ、スイッチなど)のARPキャッシュ | 自身が接続されているローカルネットワークセグメント上のARPトラフィック |
| 主な連携ツール | arpsnmp, bihourly | (単体で動作可能), メールサーバ(通知用) |
| 必要な設定 | 対象デバイスのSNMP設定(有効化、コミュニティ名) | 監視するネットワークインターフェースの指定、データベースファイルの場所、通知設定など |
簡単に言うと、arpwatch は「自分のいる場所(ローカルセグメント)で何が起こっているかを聞く」ツールであり、arpfetch は「他の場所(リモートデバイス)に何を知っているか尋ねる」ツールです。これらは補完的な関係にあり、arpfetch と arpsnmp を組み合わせることで、arpwatch が直接監視できないリモートセグメントのARP情報を監視することが可能になります。
まとめ
arpfetch は、arpwatch スイートの一部として提供される、シンプルながらも強力なツールです。SNMPを利用してリモートのネットワーク機器からARPキャッシュ情報を取得し、主に arpsnmp と連携してネットワーク上のIPアドレスとMACアドレスのペアリングを監視するために使用されます。
直接ARPパケットを監視する arpwatch とは異なり、SNMPによる問い合わせを行うため、ルータ越しのネットワークセグメントの情報を収集するのに適しています。基本的な使い方はホスト名とSNMPコミュニティ名を指定するだけで簡単ですが、その効果を発揮するにはSNMPに関する知識と、対象デバイスでの適切な設定が必要です。
ネットワーク管理において、どのデバイスがどのIPアドレスを使用しているかを把握することは基本であり、arpfetch はその情報を効率的に収集するための一つの手段を提供します。ぜひ、あなたのネットワーク管理ツールキットに加えてみてください。