[index] CentreCOM AR550S コマンドリファレンス 2.9

# IP/ARP

      - 概要
       - ARP
       - Inverse ARP
      - ARPエントリーの手動登録
      - ARPキャッシュログ
      - プロキシーARP
       - スタティックNAT時の設定

IPアドレスから物理アドレスを検索するARP（Address Resolution Protocol）関係の機能について説明します。Ethernet上でのARPに加え、フレームリレーインターフェース上でDLCIから対向ルーターのIPアドレスを調べるInverse ARPおよび静的ARP登録についても解説します。

概要

ARP

Ethernet上での通信は、たとえ上位でIPを使用していたとしても、最終的にはEthernetアドレス（MACアドレス）を使って行われます。ARPはこれを支援するIPの重要なサポートプロトコルです。
同じEthernet LANに所属する2台のホストがIPで通信する場合を考えます。ホスト192.168.10.1はTelnetサーバー、ホスト192.168.10.100がTelnetクライアントだとします。
Telnetセッションを開始しようとするクライアントは、最初にARP Requestパケットをブロードキャストして、サーバーのIPアドレス「192.168.10.1」に対応するMACアドレスを要求します。これに対し、サーバーはARP Replyパケットでクライアントに自分のMACアドレスを伝えます。これで初めて、クライアントはサーバーにIPパケット（TCP Synパケット）を直接送信できるようになります。
ルーター越えの通信でもARPは使用されます。なぜならば、別のIPネットワーク上にあるホストと通信するためには、ルーターにパケットを送りつけてIPパケットの転送を依頼しなくてはならないからです。ルーターにIPパケットを送る手順は、前述したクライアント、サーバー間の通信と何ら変わりません。ルーターにIPパケットを届けるためには、最初にルーターのMACアドレスを知らなくてはならないからです。
通常IPホストは、ARPによって学習したMACアドレスとIPアドレスの対応付けをARPキャッシュと呼ばれるテーブルに保存しています。これは、ARPパケットのブロードキャストを減らすためです。IP通信の開始時には、最初にARPキャッシュを検索し、検索に失敗したときだけARPリクエストをブロードキャストします。また、ARPエントリーにはタイマーが設定され、一定時間通信のなかったエントリーは削除（エージング）されるようになっています。

Inverse ARP

フレームリレーは、物理回線上に複数の論理パス（DLC）を設定することにより、1インターフェースで複数拠点との接続が可能なネットワークです。フレームリレー上でIPを使用する場合は、1つのフレームリレーインターフェース上に複数のIPホストが存在する可能性があるため、送信先のIPアドレスを持つ機器がどの論理パス上にあるかを知るしくみが必要になります。
Ethernetでは、ARP Requestパケットのブロードキャストによって、IPアドレスからMACアドレスを検索することができます。IPアドレスを持つ機器がARP Requestを受け取った場合は、自分自身のMACアドレスで応答します。
しかし、フレームリレーにおける物理アドレス（DLCI）はユーザーと網（フレームリレー交換機）の間でしか意味を持たないため、この仕組みは使えません。そこで、フレームリレー上では、仕組みの異なるInverse ARPというプロトコルが使用されます。これは、ARPとは逆に、物理アドレス（例：DLCI）からプロトコルアドレス（例：IP）を調べるためのプロトコルです。
たとえば、フレームリレー網によって接続されている2台のルーターを考えます。ここで、ルーターA（192.168.10.1）がルーターB（192.168.10.100）にパケットを送るとしましょう。
通信を開始しようとするルーターAは、最初にARPキャッシュを検索し、ルーターBのIPアドレス（192.168.10.100）に対応するDLCIが登録されているかどうかを調べます。対応するDLCIが登録されている場合は、そのDLCI宛てにIPパケットを送信します。IPアドレスに対応するDLCIが不明な場合、IPアドレスが不明なすべてのDLCIに対してInverse ARP requestを送信し、各DLCIの対向に位置するホストのIPアドレスを取得し、その後IPパケットを該当DLCIに送信します。

ARPエントリーの手動登録

通常、ARPキャッシュはプロトコルスタックの働きによって動的に構築・維持されていくため、管理者が手動で行うべきことはありません。しかしながら、状況に応じて手動でARPエントリーを登録することもできます。
■ スタティックARPエントリーを追加するには、ADD IP ARPコマンドを使います。

- Ethernet上のARPエントリーを登録するには、ETHERNETパラメーターでMACアドレスを指定します。

  `ADD IP ARP=192.168.10.5 INT=eth0 ETHERNET=00-00-f4-33-22-11 ↓`
- VLAN上のARPエントリーを登録するには、ETHERNETパラメーターでMACアドレスを、PORTパラメーターでスイッチポートの番号を指定します。

  `ADD IP ARP=192.168.10.8 INT=vlan1 PORT=2 ETHERNET=00-00-f4-86-86-46 ↓`
- フレームリレー上のARPエントリーを登録するには、DLCIパラメーターでDLCI値を指定します。

  `ADD IP ARP=192.168.10.100 INT=fr0 DLCI=16 ↓`

■ ARPエントリーを削除するには、DELETE IP ARPコマンドを使います。スタティックエントリーだけでなく、ダイナミックエントリーを削除することも可能です。

`DELETE IP ARP=192.168.10.5 ↓`

■ ARPキャッシュの内容を確認するには、SHOW IP ARPコマンドを実行します。

`SHOW IP ARP ↓`

ARPキャッシュログ

本製品は、ARPキャッシュの変更（登録・削除）をログに記録できます。
■ ARPキャッシュログを有効にするには、ENABLE IP ARP LOGコマンドを使います。デフォルトは無効です。

`ENABLE IP ARP LOG ↓`

■ ARPキャッシュログを表示するには、SHOW LOGコマンドを使います。SHOW LOGコマンドでは他のログメッセージも表示されますが、「TYPE=ARP」を指定すればARP関連のログだけを見ることができます。

`SHOW LOG TYPE=ARP ↓`

    Manager > show log type=arp

     Date/Time   S Mod  Type  SType Message
     -------------------------------------------------------------------------------
     18 08:18:55 3 IPG  ARP   UPDAT  vlan1 del 00-00-f4-90-19-9b (172.17.28.5)
     18 08:18:55 3 IPG  ARP   UPDAT  vlan1 del 00-00-f4-95-30-6a (172.17.28.157)
     18 08:18:55 3 IPG  ARP   UPDAT  vlan1 del 00-00-f4-95-9f-31 (172.17.28.164)
     18 08:18:55 3 IPG  ARP   UPDAT  vlan1 del 00-50-56-07-36-81 (172.17.28.220)
     18 08:18:55 3 IPG  ARP   UPDAT  vlan1 del 00-0c-76-14-3f-c5 (172.17.28.232)
     18 08:18:57 3 IPG  ARP   UPDAT  vlan1 add 00-00-f4-90-19-9b (172.17.28.5)
     18 08:19:04 3 IPG  ARP   UPDAT  vlan1 add 00-90-99-c2-2b-00 (172.17.28.32)
     18 08:19:06 3 IPG  ARP   UPDAT  vlan1 add 00-50-56-07-36-81 (172.17.28.220)
     18 08:19:19 3 IPG  ARP   UPDAT  vlan1 add 00-00-f4-95-30-6a (172.17.28.157)
     18 08:19:22 3 IPG  ARP   UPDAT  vlan1 add 00-00-fe-be-ef-00 (172.17.28.238)
     18 08:20:19 3 IPG  ARP   UPDAT  vlan1 add 00-00-f4-95-fb-d4 (172.17.28.101)
     18 08:20:25 3 IPG  ARP   UPDAT  vlan1 add 00-00-e2-59-56-48 (172.17.28.233)
     18 08:20:26 3 IPG  ARP   UPDAT  vlan1 add 00-e0-18-8a-30-ad (172.17.28.230)
     18 08:20:30 3 IPG  ARP   UPDAT  vlan1 add 00-03-93-6b-70-a0 (172.17.28.219)
     18 08:20:32 3 IPG  ARP   UPDAT  vlan1 add 00-03-93-70-f3-84 (172.17.28.141)
     18 08:20:58 3 IPG  ARP   UPDAT  vlan1 add 00-06-5b-88-80-41 (172.17.28.1)
     18 08:21:51 3 IPG  ARP   UPDAT  vlan1 add 00-09-41-1c-5d-2f (172.17.28.185)
     18 08:22:25 3 IPG  ARP   UPDAT  vlan1 add 00-00-cd-0a-40-4e (172.17.28.185)
     18 08:22:59 3 IPG  ARP   UPDAT  vlan1 add 00-0c-76-14-3f-c5 (172.17.28.232)
     18 08:23:20 3 IPG  ARP   UPDAT  vlan1 add 00-00-f4-95-9f-31 (172.17.28.164)
     18 08:23:35 3 IPG  ARP   UPDAT  vlan1 add 00-e0-06-09-55-66 (172.17.28.251)
     18 08:24:16 3 IPG  ARP   UPDAT  vlan1 add 00-90-99-15-08-fc (172.17.28.105)
     18 08:25:07 3 IPG  ARP   UPDAT  eth1 add 00-90-99-ae-b0-02 (192.168.129.201)
     -------------------------------------------------------------------------------

ログメッセージ本体（Message）の表示項目は、左から順にIPインターフェース名、イベント（addかdel）、MACアドレス、IPアドレスです。

> Note - あるIPアドレスに対応するMACアドレスが変更された場合は、delイベントとaddイベントが生成されます。

■ ARPキャッシュログの有効・無効はSHOW IPコマンドで確認できます。「IP ARP LOG」欄をご覧ください。

`SHOW IP ↓`

プロキシーARP

プロキシーARPは、実際にIPアドレスを所有しているホストに代わって、ルーターが自分自身のMACアドレスで代理応答する機能です。おもに、同じIPサブネットに所属しているものの、物理的には同一LAN上でないためARPが届かない機器同士の通信を可能にする目的で使用されます。
SLIPやPPPでLANに接続しているリモートホストと、実際にLAN上にいるホストとの通信を可能にしたり、サブネットマスクをサポートしていないデバイスをサブネット環境で使用する場合などに使われます。また、Ethernet・Ethernet間でNATを使用する場合にも、プロキシーARPが必要なケースがあります。
デフォルトでは、Ethernet上のすべてのIPインターフェースでプロキシーARPが有効になっており、受信したARP Requestの対象アドレス（への最適経路）が受信インターフェースとは異なるインターフェース上にあることを知っている場合、自分自身のMACアドレスで代理応答し、代理応答に基づいて送られてきたパケットを実際の宛先にルーティングします。
■ プロキシーARPの有効・無効はADD IP INTERFACEコマンド、SET IP INTERFACEコマンドのPROXYARPパラメーターで変更できます。ONを指定した場合は有効に、OFFを指定した場合は無効になります。デフォルトはONです。

`ADD IP INT=eth0 IP=192.168.10.1 MASK=255.255.255.0 PROXYARP=OFF ↓`

`SET IP INT=eth0 PROXYARP=OFF ↓`

マルチホーミングを使って同一Ethernet上に複数の論理インターフェースを作成している場合、プロキシーARPの有効・無効はすべての論理インターフェースに共通して適用されます。
■ プロキシーARPの状態は、SHOW IP INTERFACEコマンドで確認できます。「PArp」欄の表示が「On」なら有効、「Off」なら無効です。

スタティックNAT時の設定

プロキシーARPを効かせるために手動で設定を行う例として、Ethernet・Ethernet間のNATで、グローバルアドレスにインターフェースアドレス以外を使うケースを考えます。

ルーターBには、ホストAのプライベートアドレス「192.168.10.5」をグローバルアドレス「1.1.1.5」に固定的に変換するスタティックNATの設定が施されています。グローバル側のホストにとって、ホストAはルーターAとルーターBの間、すなわち、サブネット1.1.1.0/29（1.1.1.0〜1.1.1.7）に存在するように見えます。これは、先ほどのPPP接続の例において、LAN側ホストにはPPPホストが同一LAN上にあるように見えたのとよく似た状況です。
しかし、先ほどの例と異なるのは、ルーターBのルーティングモジュールがホストAの所在を知らないことです。本製品は、その仕様上NATの設定だけでは自分宛てでないARP Requestに代理応答しません。Ethernet・PPP間のNATならばARPを使わないためこのような問題は起きませんが、Ethernet・Ethernet間のNATではこの点に気を付ける必要があります。
最初に、この構成でNATの設定だけを行った場合の動作について解説します。例として、ルーターAがホストAとIPの通信を行うとします（実際にはルーターA経由で外部のホストがアクセスしてきたとお考えください）。
ルーターAにとって、ホストAのアドレスは1.1.1.5です。ルーターAはホストAが同一Ethernetセグメントに所属するものと見なして、1.1.1.5に対するARP Requestをブロードキャストしますが、ホストAは別セグメント上にあるため応答できません。また、ルーターBも、1.1.1.5が自分のアドレスではないため応答しません。そのため、ルーターAはホストAのMACアドレスを知ることができず、通信が成立しません。
このようなケースでは、管理者が手動で設定を行うことにより、ルーターBに代理応答をさせることができます。レンジNAT（IP NAT）とファイアウォールNATでは設定方法が異なるため、以下ではそれぞれのケースについて解説します。
■ 前記の構成でレンジNATを使っている場合は、ADD IP ROUTEコマンドでホストAへの経路を明示的に登録し、ルーターBにホストAの場所を知らせます。ここでは次のようにします。MASKにはホスト経路であることを示すため32ビットマスクを指定し、INTERFACEにはホストAが存在するインターフェース（vlan1）を指定します。PREFERENCEは経路の優先度を指定するもので、0はもっとも優先度の高い経路であることを示します。

`ADD IP ROUTE=1.1.1.5 MASK=255.255.255.255 INT=vlan1 NEXTHOP=0.0.0.0 PREFERENCE=0 ↓`

これにより、ホストA（1.1.1.5）に対するプロキシーARPが有効になり、ルーターAからのARP Requestに代理応答するようになります。
■ 一方、ファイアウォールNATを使っている場合はもう少し複雑な手順になります。

1. 最初にグローバル側（eth0）インターフェースをマルチホーミングし、代理応答したいアドレス（ホストAのアドレス）を32ビットマスクで割り当てます。

   `ADD IP INT=eth0-1 IP=1.1.1.5 MASK=255.255.255.255 ↓`
2. 次に作成した論理インターフェースをファイアウォールポリシーに追加します。ここでは、PUBLIC（外部）インターフェースとして設定しています。

   `ADD FIREWALL POLICY=net INT=eth0-1 TYPE=PUBLIC ↓`
3. PUBLIC側からのパケットはデフォルトで遮断されるため、これを通過させるためのルールを設定します。ホストAに対するすべてのパケットを許可する場合は次のようにします。GBLIPはNAT変換後のグローバルアドレス、IPはNAT前のプライベートアドレスです。

   `ADD FIREWALL POLICY=net RULE=1 AC=ALLOW INT=eth0-1 PROT=ALL GBLIP=1.1.1.5 IP=192.168.10.5 ↓`
   また、セキュリティーを重視するなら、特定のサービスだけを許可するほうがよいかもしれません。HTTPサービスだけを許可するには次のようにします。

   `ADD FIREWALL POLICY=net RULE=1 AC=ALLOW INT=eth0-1 PROT=TCP GBLIP=1.1.1.5 GBLPORT=80 IP=192.168.10.5 PORT=80 ↓`
4. さらに、ホストAから通信を開始した場合もスタティックNATが有効に働くように、ホストAからのパケットがスタティックNATインターフェース（eth0-1）にルーティングされるよう、ポリシーフィルターを設定します。

   `ADD IP FILTER=100 SOURCE=192.168.10.5 SMASK=255.255.255.255 POLICY=1 ↓
   SET IP INT=vlan1 POLICYFILTER=100 ↓
   ADD IP ROUTE=0.0.0.0 INT=eth0-1 NEXTHOP=1.1.1.6 POLICY=1 ↓
   `
   このフィルターは必須というわけではありませんが、設定しなかった場合、ホストAから外部への通信を開始した場合に、始点アドレスがスタティックNATアドレス（ここでは1.1.1.5）ではなく、ダイナミックENAT用のアドレスに変換されてしまうことがあります。詳細については、「ファイアウォール」の章の「スタティックNAT」の説明をご覧ください。この動作は、ファイアウォールNATの仕様となっています。

これにより、ルーターAから1.1.1.5へのARP Requestに対して、ルーターBが応答するようになります。1.1.1.5はルーターB自身のアドレスなので厳密には代理応答と呼べないかもしれませんが、NAT設定にしたがいルーターBは受け取ったパケットの終点アドレスを変換してホストAに転送します。

(C) 2005-2012 アライドテレシスホールディングス株式会社

PN: J613-M0710-03 Rev.H