ネットワークスペシャリスト 2018年 午前2 問06
問題文
図のような2台のレイヤ2スイッチ、1台のルータ、4台の端末から成るIPネットワークで、端末Aから端末Cに通信を行う際に、送付されるパケットの宛先IPアドレスである端末CのIPアドレスと、端末CのMACアドレスとを対応付けるのはどの機器か。ここで、ルータZにおいてプロキシARPは設定されていないものとする。

選択肢
ア:端末A
イ:ルータZ(正解)
ウ:レイヤ2スイッチX
エ:レイヤ2スイッチY
🔒 解説は解答すると表示されます
IP→MACの対応付け【午前2解説】
正解の理由
送信元端末Aと宛先端末Cが異なるネットワーク(サブネット)にある場合、Aは宛先の直接到達性を持たないためパケットをデフォルトゲートウェイに送る設計です。デフォルトゲートウェイ側であるルータは、宛先ネットワーク側の送信先(ここでは端末C)のIPアドレスに対してARPを実行して端末CのMACアドレスを取得し、その対応(IP→MAC)を自インターフェースのARPテーブル(キャッシュ)に保持します。したがって、本問でIP→MACの対応付けを行うのは イ(ルータZ)です。
(問題文ではプロキシARPは無効なので、ルータはA側で「CのIPに対して自分のMACで応答してAを欺く」ような振る舞いは行いません。)
(問題文ではプロキシARPは無効なので、ルータはA側で「CのIPに対して自分のMACで応答してAを欺く」ような振る舞いは行いません。)
解法ステップ
- 端末Aと端末Cが同一サブネットか否かを判断する(図やアドレス割当が与えられていればここで確認)。
- 異なるサブネットであれば、AはCへ直接送らずデフォルトゲートウェイ(ルータ)を次ホップに選ぶ。
- AはデフォルトゲートウェイのIPに対してARPを行い、ゲートウェイのMACを取得してフレームを送信する(AはCのMACを知らない)。
- ルータは受け取ったパケットをルーティング処理し、送出インターフェース側で宛先CのIP→MACを解決するためにARPを実行する。ARP応答を受けてルータはARPテーブルにCのIPとCのMACの対応を保持し、パケットをCのMAC宛に転送する。
以上の流れから、IP→MACを解決・保持する機器はルータであると判断できる。
選択肢別の誤答解説
- ア: 端末A
端末Aは自分が同一サブネットにない宛先に対しては宛先ホストのMACを直接解決しない。デフォルトゲートウェイのMACだけを解決するため、CのIP→MAC対応を保持・解決する役割は持たない。 - イ: ルータZ
ルータは受信したパケットをルーティングし、送出先ネットワーク上で必要に応じてARPを実行して宛先ホスト(端末C)のMACを取得する。取得した対応はルータのARPテーブルに格納される。したがって本問の正解である。 - ウ: レイヤ2スイッチX
L2スイッチはIPアドレスを解釈せず、MACアドレス→スイッチポートの学習(CAMテーブル)とフレーム転送を行うのみ。IP→MACの対応(ARPテーブル)は持たないため本問の該当ではない。 - エ: レイヤ2スイッチY
スイッチYも同様にL2機能に限定され、IP→MACの解決は行わない。ただしスイッチは端末CのMACを学習して適切なポートへフレームを転送する役割は持つが、それは「MAC→ポート」の学習であり「IP→MAC」の解決とは別物である。
よくある誤解
- 「スイッチがARPを行う/IP→MACを管理する」
→ L2スイッチはARP(IP層)を解釈・実行しない。ARPリクエストはブロードキャストとしてスイッチ上で転送され、応答(ユニキャスト)が戻ってきた際にスイッチは送信元MAC→ポートを学習するだけです。 - 「プロキシARPが有効ならルータは端末Cの本来のMACを端末Aに教える」
→プロキシARPが有効な場合、ルータはCのIPに対するARP要求を受けると、C自身のMACを「教える」のではなく、自分の(ルータの)該当インターフェースのMACでARP応答を返します。つまりAはCのMACではなくルータのMAC宛に送ることになります(ルータは内部でCの本当のMACを解決して転送する)。
補足コラム
- 実機コマンド例(Ciscoルータ)
- ARPテーブル確認: show ip arp
- Linuxでの確認例
- ARPテーブル: ip neigh show または arp -n
- 典型的なパケット列(A→C、サブネットが異なる場合)
- A: ARP request for gateway IP → ブロードキャスト(AはCのMACを知らない)
- Gateway(ルータ): ARP reply with gateway MAC → AはゲートウェイMACへフレーム送信
- ルータ: 送出インターフェース側で ARP request for C's IP(必要なら)
- 端末C: ARP reply with C's MAC → ルータはARPテーブルにCのIP→CのMACを登録しパケット転送
- 実装差異: 「L3スイッチ(マルチレイヤスイッチ)」はルータと同様にIP→MAC解決とARPキャッシュを保持するので、本問と同じ動作をする。
簡単なScapy(Python)でのARP要求送信例:
from scapy.all import sr1, ARP, Ether
req = Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.0.2.10")
ans = sr1(req, timeout=2)
if ans:
print("MAC for 192.0.2.10 is", ans[ARP].hwsrc)
FAQ
Q1: 端末Aと端末Cが同一サブネットなら誰がIP→MACを解決しますか?
A1: 同一サブネットであれば送信元端末A自身が宛先CのIPに対してARPを行い、AのARPキャッシュにCのIP→CのMACが登録されます(ルータは関与しません)。
A1: 同一サブネットであれば送信元端末A自身が宛先CのIPに対してARPを行い、AのARPキャッシュにCのIP→CのMACが登録されます(ルータは関与しません)。
Q2: プロキシARPが有効だと挙動はどう変わりますか?
A2: プロキシARPが有効なら、ルータはA側でCのIPに対するARP要求に対して自分のインターフェースMACで応答します(AはCが直接到達できると誤認します)。ただしルータ自身は裏側でCのIP→CのMACを解決しており、転送時はCの実際のMACを使います。
A2: プロキシARPが有効なら、ルータはA側でCのIPに対するARP要求に対して自分のインターフェースMACで応答します(AはCが直接到達できると誤認します)。ただしルータ自身は裏側でCのIP→CのMACを解決しており、転送時はCの実際のMACを使います。
Q3: L3スイッチは選択肢だとどう扱うべきですか?
A3: L3スイッチはルーティング機能を持つため、通常のルータと同様に送出ネットワーク側でARPを実行してIP→MAC対応を保持する点でルータと同等です。
A3: L3スイッチはルーティング機能を持つため、通常のルータと同様に送出ネットワーク側でARPを実行してIP→MAC対応を保持する点でルータと同等です。
関連キーワード: ARP、デフォルトゲートウェイ、ARPキャッシュ、レイヤ2スイッチ、ルーティング、プロキシARP

\ せっかくなら /
ネットワークスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

