arpfetch徹底解説:SNMPを利用したARP情報取得ツール

セキュリティツール

ネットワーク管理者のための arpfetch 活用ガイド 🧭

はじめに:arpfetchとは何か?

arpfetchは、ネットワーク上の機器(主にルータなど)からSNMP(Simple Network Management Protocol)を利用して、IPアドレスとそれに対応するイーサネット(MAC)アドレスのペアリング情報を取得するためのコマンドラインツールです。取得した情報は、標準出力に特定のフォーマットで表示されます。

このツールは、ネットワーク監視ツールである arpwatch パッケージの一部として提供されることが多いです。arpwatch がネットワークのARPトラフィックを直接監視するのに対し、arpfetch はSNMPを通じて、リモートデバイスのARPキャッシュ情報を取得する点が異なります。

特に、arpsnmp というツールと連携して使用されることが想定されています。arpfetch がSNMP経由で取得したデータを arpsnmp が利用し、arpwatch と同様にIPアドレスとMACアドレスのペアリングデータベースを維持・管理し、変更があった場合に通知を行うことができます。

インストール方法

arpfetch は通常、arpwatch パッケージに含まれています。したがって、arpfetch を利用するには、お使いのLinuxディストリビューションのパッケージマネージャを使って arpwatch をインストールする必要があります。

Debian/Ubuntu系の場合:

sudo apt update
sudo apt install arpwatch

Red Hat/CentOS/Fedora系の場合:

sudo yum install arpwatch
# または
sudo dnf install arpwatch

インストールが完了すると、arpfetch コマンドが利用可能になります。依存関係として、SNMPリクエストを行うためのライブラリ(例: snmpwalk コマンドを提供するパッケージ、多くの場合 net-snmp-utilssnmp など)が必要になる場合がありますが、通常は arpwatch の依存関係として自動的にインストールされます。

⚠️ 注意

arpfetch を使用するには、対象となるネットワーク機器(ルータなど)でSNMPが有効になっており、適切なコミュニティ名(Community String)が設定されている必要があります。また、arpfetch を実行するホストから対象機器へのSNMP通信(通常はUDPポート161)がファイアウォールなどでブロックされていないことを確認してください。

基本的な使い方

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アドレスのペアが表示されます。この形式は arpsnmparpwatch が処理できる形式になっています。

<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 netadmin

2. 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 を定期的に実行し、結果を比較・分析することで、ネットワーク全体のデバイス状況を把握するのに役立ちます。スクリプトを作成して自動化するとさらに便利です。

arpfetch vs. arpwatch

arpfetcharpwatch は、どちらもARP情報を扱いますが、その収集方法と目的において異なります。

項目 arpfetch arpwatch
主な目的 SNMP経由でリモートデバイスのARPキャッシュを取得する。主に arpsnmp へのデータ供給。 ローカルネットワークインターフェースでARPパケットを直接監視(リッスン)し、IP/MACペアのデータベースを維持・変更を通知する。
情報収集方法 SNMP (snmpwalk などを使用) ネットワークインターフェースでのパケットキャプチャ (libpcapを使用)
動作モード コマンド実行時に一度だけ情報を取得する(能動的問い合わせ) デーモンとして常駐し、継続的にネットワークを監視する(受動的監視)
監視対象 SNMPが有効なリモートデバイス(ルータ、スイッチなど)のARPキャッシュ 自身が接続されているローカルネットワークセグメント上のARPトラフィック
主な連携ツール arpsnmp, bihourly (単体で動作可能), メールサーバ(通知用)
必要な設定 対象デバイスのSNMP設定(有効化、コミュニティ名) 監視するネットワークインターフェースの指定、データベースファイルの場所、通知設定など

簡単に言うと、arpwatch は「自分のいる場所(ローカルセグメント)で何が起こっているかを聞く」ツールであり、arpfetch は「他の場所(リモートデバイス)に何を知っているか尋ねる」ツールです。これらは補完的な関係にあり、arpfetcharpsnmp を組み合わせることで、arpwatch が直接監視できないリモートセグメントのARP情報を監視することが可能になります。

まとめ

arpfetch は、arpwatch スイートの一部として提供される、シンプルながらも強力なツールです。SNMPを利用してリモートのネットワーク機器からARPキャッシュ情報を取得し、主に arpsnmp と連携してネットワーク上のIPアドレスとMACアドレスのペアリングを監視するために使用されます。

直接ARPパケットを監視する arpwatch とは異なり、SNMPによる問い合わせを行うため、ルータ越しのネットワークセグメントの情報を収集するのに適しています。基本的な使い方はホスト名とSNMPコミュニティ名を指定するだけで簡単ですが、その効果を発揮するにはSNMPに関する知識と、対象デバイスでの適切な設定が必要です。

ネットワーク管理において、どのデバイスがどのIPアドレスを使用しているかを把握することは基本であり、arpfetch はその情報を効率的に収集するための一つの手段を提供します。ぜひ、あなたのネットワーク管理ツールキットに加えてみてください。🛠️

コメント

タイトルとURLをコピーしました