2013-11-11 08:49 AM 2019-03-22 07:03 AM 更新
[toc:faq]
このドキュメントではネクストホップとして出口インターフェースを指定するスタティックルートと IP アドレスを指定するスタティックルートの違いを説明しています。
!-- Pointing to next hop address
ip route 0.0.0.0 0.0.0.0 10.1.1.2
!-- Pointing to the interface
ip route 0.0.0.0 0.0.0.0 fa0/0
宛先にパケットを転送するため、ルータは出口インターフェースを決定し、パケットを伝送路上に送出する前にレイヤ2のフレームを書き換える必要があります。ルータがレイヤ2フレームを書き換えるためにはレイヤ2アドレスに対応する IP アドレスを解決し、ネクストホップに送出する前にフレームを再構築する必要があります。アドレス解決は、イーサネットにおける ARP や フレームリレーにおける静的/動的に学習された DLCI などを使用して動的に行うことができます。
ルータでスタティックルートを設定する時に、理解しておくべき2つのポイントがあります。
1) ネクストホップに IP アドレスを指定したスタティックルートを設定する場合、ルータは宛先ごとにレイヤ2フレームを書き換えるため、ネクストホップ IP アドレスのレイヤ2アドレスを必要とします。
例: ip route 2.2.2.0 255.255.255.0 10.1.1.2
ルータは、パケットを宛先アドレス 2.2.2.2 に転送するため、10.1.1.2 のレイヤ2 MAC アドレスを必要とします。
2) 出口インターフェースを指定してスタティックルートを設定した場合、ルータは宛先アドレスのインターフェースが直接接続されていると仮定します。そして、イーサネットの場合には指定されたインターフェースから宛先アドレスに ARP リクエストを送出して、フレームリレーの場合にはマッピングテーブルから静的/動的に学習したエントリを検索して、宛先のレイヤ2アドレスを探そうとします。
例: ip route 2.2.2.0 255.255.255.0 fa0/0
ルータはパケットを 宛先 IP アドレス 2.2.2.2 に転送するため、 IP アドレス 2.2.2.2 のホストが fa0/0 のインターフェースの先に直接接続されていると仮定し、 IP アドレス 2.2.2.2 に対応するレイヤ2 MAC アドレスを必要とします。
一般的に、インターフェースはポイントツーポイントまたはマルチポイントで接続されます。上記 2) の状態はポイントツーポイント接続とマルチポイント接続で異なる動作をします。
ポイントツーポイント接続されたインターフェースでは、2つのデバイスは直接接続されているため、出口インターフェースを指定してのスタティックルートとネクストホップ IP アドレスを指定してのスタティックルートに違いはありません。ルータはパケットを転送するため、宛先アドレスごとにネクストホップ IP アドレスのインターフェースのレイヤ2アドレスを使用します。
マルチポイント接続されたインターフェースでは、インターフェースは複数のデバイスと接続することができます。そこで上記 2) の状態では、ネクストホップを指定してスタティックルートを設定する場合、ルータは宛先アドレスごとに レイヤ3アドレスからレイヤ2アドレスへの解決をする必要があります。イーサネットがマルチポイント接続であるのに対して、フレームリレー及び ATM では設定によってマルチポイント接続またはポイントツーポイント接続が使用できます。
以下がトポロジ図と初期設定です。
R1 | R2 | R3 |
---|---|---|
interface Loopback0 ip address 1.1.1.1 255.255.255.255 ! interface FastEthernet0/0 ip address 10.1.1.2 255.255.255.252 duplex auto speed auto ! interface FastEthernet0/1 ip address 20.1.1.1 255.255.255.0 duplex auto speed auto ! ip route 2.2.2.2 255.255.255.255 10.1.1.1 ip route 3.3.3.3 255.255.255.255 20.1.1.2 | interface Loopback0 ip address 2.2.2.2 255.255.255.255 ! interface FastEthernet0/0 ip address 10.1.1.1 255.255.255.252 duplex auto speed auto ! ip route 0.0.0.0 0.0.0.0 10.1.1.2 | interface Loopback0 ip address 3.3.3.3 255.255.255.255 ! interface FastEthernet0/0 ip address 20.1.1.2 255.255.255.252 duplex auto speed auto ! ip route 0.0.0.0 0.0.0.0 20.1.1.1 |
ケース1: R2 でネクストホップアドレスに、隣接するルータ R1 のアドレスを指定してスタティックルートを設定します。上述のように、宛先アドレスにパケットを転送するため、 R2 はレイヤ2フレーム内で R1 の MACアドレスを使用します。
R2 から R1 と R3 ループバックアドレスへの接続を確認:
R2#ping 1.1.1.1 so 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/28/40 ms
R2#ping 3.3.3.3 so 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/35/60 ms
R2#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.1 - c000.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.2 0 c001.3148.0000 ARPA FastEthernet0/0
ケース2: R2 で出口インターフェースを指定してスタティックルートを設定します。上述のように、パケットを転送するため、R2 は宛先アドレスが直接接続されていると仮定して、指定されたインターフェースから宛先アドレスに ARP リクエストを送出して、レイヤ2 MAC アドレスを見つけようとします。
R2(config)#no ip route 0.0.0.0 0.0.0.0 10.1.1.2
R2(config)#ip route 0.0.0.0 0.0.0.0 fa0/0
R2 から R1 と R3 のループバックアドレスへの接続を確認します。また、パケットレベルの情報を得るために、 R2 の IP パケットのデバッグを有効にします。
R2#debug ip packet detail
IP packet debugging is on (detailed)
R2#ping 3.3.3.3 so 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
IP: tableid=0, s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), routed via RIB
IP: s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), len 100, sending
ICMP type=8, code=0
IP: s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), len 100, encapsulation failed
ICMP type=8, code=0.
IP: tableid=0, s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), routed via RIB
IP: s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), len 100, sending
ICMP type=8, code=0
IP: s=2.2.2.2 (local), d=3.3.3.3 (FastEthernet0/0), len 100, encapsulation failed
R2#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 1.1.1.1 0 Incomplete ARPA
Internet 3.3.3.3 0 Incomplete ARPA
Internet 10.1.1.1 - c000.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.2 16 c001.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.5 - c000.3148.0001 ARPA FastEthernet0/1
IP アドレス 1.1.1.1 と 3.3.3.3 は fa0/0 に直接接続されていないので、R2 はそれらのレイヤ2 MAC アドレスを得られず、ARP テーブルのエントリーは incomplete となり、R2 ではレイヤ2のカプセル化が失敗して宛先へのパケットをドロップします。
上の問題を解決する2つの方法がありますが、ユーザへ勧められるような解決方法ではありません。
1) ネクストホップルータでプロキシー ARP を有効化する:
ルータでプロキシー ARP を有効化している場合、ルータはアドレス解決要求を受け取るたびにそのアドレスがルータのルーティングテーブルに存在する場合のみ、自分自身のインターフェースのアドレスから、アドレス解決を要求したルータにプロキシー ARP を送信します。
この例では、 R1 は両方のアドレスがルーティングテーブルに存在するため、レイヤ2 MAC アドレスが 10.1.1.2 であるプロキシー ARP をアドレス 3.3.3.3 と 2.2.2.2 のために R2 に送信します。デフォルトの設定ではほとんどのルータでプロキシー ARP は有効化されています。
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip proxy-arp
R1(config-if)#do sh ip int fa0/0 | in Proxy
Proxy ARP is enabled
Local Proxy ARP is enabled
Verifying connectivity from R2 to R1 and R3 loopback address:
R2#ping 1.1.1.1 so 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/28/40 ms
R2#ping 3.3.3.3 so 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/35/60 ms
R2 の ARP テーブルを詳細に確認すると、アドレス解決テーブルにおいてアドレス 3.3.3.3 と 1.1.1.1 に対応する MAC アドレスが同一になっています。これは、 R1 が自分自身のインターフェースのアドレスからプロキシー ARP を送信したためです。
R2#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 1.1.1.1 0 c001.3148.0000 ARPA FastEthernet0/0
Internet 3.3.3.3 0 c001.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.1 - c000.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.2 40 c001.3148.0000 ARPA FastEthernet0/0
したがって、スタティックルートがインターネットへのデフォルトゲートウェイである場合などに、大量のブロードキャストトラフィックが発生してしまったり、 R2 において ARP キャッシュの数が大量になってしまう可能性があります。
2) ARP テーブルに手動で ARP エントリーを追加する:
以下のように、レイヤ2フレームを構築するために、宛先アドレスへの ARP エントリーを手動で追加することができます。
R2(config)#arp 1.1.1.1 c001.3148.0000 arpa
R2(config)#arp 3.3.3.3 c001.3148.0000 arpa
R2#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 1.1.1.1 - c001.3148.0000 ARPA
Internet 3.3.3.3 - c001.3148.0000 ARPA
Internet 10.1.1.1 - c000.3148.0000 ARPA FastEthernet0/0
Internet 10.1.1.2 4 c001.3148.0000 ARPA FastEthernet0/0
宛先アドレスごとにレイヤ2フレームを構築するため、アドレス解決テーブルに手動でエントリーを追加する必要があります。
-> ポイントツーポイント接続のインターフェースでは、インターフェースを指定したスタティックルート及びネクストホップアドレスを指定したスタティックルートを使用可能です。ネクストホップは1つだけ存在し、そのレイヤ2アドレスはレイヤ2フレームを構築するために使用されます。
-> マルチポイント/ブロードキャスト接続されたインターフェースでは、宛先アドレスごとにレイヤ2アドレスを解決する必要性をなくすため、ネクストホップアドレスを指定したスタティックルートを使用する方が適切です。上記で示したような、インターフェースを指定したスタティックルートを使用する方法もありますが、拡張性のある解決法ではありません。
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます