【実務・中級編】 ダイナミックARPインスペクション(DAI)の仕組みとDHCPスヌーピングデータベース連携 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

ARPスプーフィングを無力化せよ:DAIとDHCPスヌーピングで築く「信頼のレイヤー2」

ネットワークエンジニアの諸君、今日もパケットの海を航海しているか?

大規模な社内LANやデータセンターで、突然の通信断や「なぜか特定のPCだけ通信が遅い」という謎の現象に悩まされたことはないだろうか。その犯人の多くは、ネットワークの常識を逆手に取った「ARPスプーフィング(ARPポイズニング)」だ。

今日は、そんな卑劣な中間者攻撃(MITM)を、スイッチの物理ポートレベルで封殺するDAI(Dynamic ARP Inspection)について、実務的な知見を交えて深掘りしていく。

—

1. なぜARPスプーフィングは「無敵」なのか

ARP(Address Resolution Protocol)というプロトコルは、インターネット黎明期の「信頼」を前提に設計された古き良き遺産だ。本来、ARP応答は「自分宛てのもの」を待つものだが、仕様上、「問われてもいないのに送りつけられたARP応答」を、ホストは律儀にキャッシュ(ARPテーブル)へ書き込んでしまう。

攻撃者はこれを利用する。デフォルトゲートウェイになりすました偽のARP応答をブロードキャストし、被害者のトラフィックを一度自分のPCに引き寄せる。これがMITMの入り口だ。この「性善説」に基づいた脆弱性を、どうやってネットワーク機器で制御するか。それがDAIの役割である。

—

2. DAIを支える「信頼の背骨」:DHCPスヌーピング

DAIは単独では機能しない。DAIは「このMACアドレスとIPアドレスのペアは本当に正しいのか?」を判断するために、DHCPスヌーピングバインディングデータベースという「正解リスト」を参照する。

DHCPスヌーピングを有効にすると、スイッチはDHCPのやり取り(DORAプロセス)を監視し、どのポートにどのIP/MACが割り当てられたかを記録する。DAIは、この記録と照合できないARPパケットを「不審者」として即座に破棄(ドロップ)するわけだ。

—

3. 実践:CiscoスイッチでのDAI構築プロセス

理論を語るだけでは現場は救えない。実際にCisco Catalystスイッチでの実装例を見ていこう。

手順1: DHCPスヌーピングの有効化

まずは信頼の基礎を固める。

! DHCPスヌーピングを有効化
ip dhcp snooping
! 該当VLANで有効化
ip dhcp snooping vlan 10,20

! アップリンク(信頼するポート)には必ず設定を忘れないこと!
interface GigabitEthernet0/1
 description Uplink to Core Switch
 ip dhcp snooping trust

手順2: DAIの有効化

次に、ARPの検閲を開始する。

! VLAN 10でDAIを有効化
ip arp inspection vlan 10

! アップリンクポートはARPパケットも信頼する
interface GigabitEthernet0/1
 ip arp inspection trust

この設定を入れた瞬間、DHCPでIPを取得していない端末や、勝手に静的IPを割り振った端末からのARPパケットは、スイッチによって即座にブロックされる。

—

4. Webエンジニアが知るべき「検証」の作法

インフラ運用の現場では、DAIが有効な環境でサーバーを立てる際、意図せず通信がブロックされることがある。そんな時、curlやPythonを使って疎通確認を試みる前に、まずはスイッチ側でパケットが「落とされていないか」を確認する手順が不可欠だ。

スイッチ側のデバッグコマンド

DAIでパケットがドロップされたかどうかは、以下のコマンドで一目瞭然だ。

# 破棄されたパケット数を確認する
show ip arp inspection statistics

もし Dropped のカウンターが増えていたら、それは間違いなくDAIによるブロックだ。その場合、以下の手順で原因を切り分ける。

1. クライアントがDHCPでIPを取っているか? (静的IPの場合は arp access-list で許可リストを作る必要がある)
2. スイッチのバインディングテーブルに登録されているか? (show ip dhcp snooping binding)

Pythonによる簡単なARPスキャン(実験用)

攻撃者がどのようなパケットを送るのか、Scapyなどのライブラリを使って挙動を理解しておくことも重要だ。

from scapy.all import ARP, send

# 偽のゲートウェイ情報を送りつける(悪用厳禁)
# 攻撃対象のIP: 192.168.1.5, ゲートウェイ: 192.168.1.1
packet = ARP(op=2, pdst="192.168.1.5", psrc="192.168.1.1", hwdst="AA:BB:CC:DD:EE:FF")
send(packet)

このようなパケットを投げた際、DAIが有効なポートであれば、スイッチは容赦なくこのパケットを破棄し、管理者にログを出力してくれるはずだ。

—

現場のエンジニアへのアドバイス

DAIを導入すると、確かにネットワークは強固になる。しかし、「信頼できるポート(trust)」の設定を忘れると、ネットワーク全体が孤立するという恐怖のダウンタイムが待っている。

1. 段階的な導入: まずは ip arp inspection logging dhcp-drop を有効にし、ログを見ながら徐々に適用範囲を広げること。
2. 静的IPの扱い: サーバーやプリンタなど、固定IP運用の機器には arp access-list を作成し、明示的に許可を与えること。

ネットワークは「魔術」ではない。パケットという名の事実が、設定ファイルというルールに従って流れているだけだ。仕様書の行間を読み、現場のログを信じろ。そうすれば、どんな難解なトラブルも必ず解き明かせるはずだ。

また次回の「深淵」で会おう。健闘を祈る。

コメント

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