その他

異なるネットワーク間でIGP neighborを確立する方法

ネットワーク系の小ネタですが、FlexVPNにも用いられる方法であるため解説します。あまり実用性はないかも…あくまで小ネタです。小ネタ。

■Topology

■Pre-config_EIGRP

RT1

RT2

■Description_EIGRP

 

RT1/2はTunnel IF(GRE)でEIGRP neighborを確立しています。Tunnel IFはそれぞれのLoopback 0をip unnumberedしています。

 

本来であれば、異なるネットワーク間ではIGP(ここではEIGRP) neighborを確立することはできません。試しにip unnumberedではなく直接IP addressを設定してみます。

 

この場合は、期待通りError logが出力されます。

 

では、なぜ ip unnumberedだと異なるネットワーク間でもEIGRP neighborが確立できるのでしょうか。FlexVPNのConfiguration Guideには、以下のように記載があります。

This example shows how to use the ip unnumbered command that disables verification and allows for establishment of an EIGRP session between peers in different subnets.

//Use the IP Unnumbered Command
https://www.cisco.com/c/en/us/support/docs/security/flexvpn/116346-configure-eigrp-00.html#anc6

ip unnumberedを使用すると、サブネットのチェックが無効化されます。これにより、異なるサブネット間でneighborを確立できるようになります。

また、この場合はRouting tableにOutgoing IFも登録されるため、tunnel IF経由で問題なく通信することが可能です。

 

では、次はOSPFで検証を行います。構成は同じです。

■Pre-config_OSPF

RT1

RT2

■Description_OSPF

まずはTunnel IFに異なるIP address(1.1.1.1/24と2.2.2.2/24)を直接設定しています。当然ですが、OSPF neighborを確立することは出来ません。

debugを取得すると、異なるネットワークからHelloを受け取っていることが確認できます。

 

次にLoopback 0にIP addressを設定し、tunnel IFはLoopback 0をip unnumberedします。

 

EIGRPと同様にneighborを確立することができ、問題なく通信することができました。

 

確認のためWiresharkを使用し、OSPF Hello packetをpacket captureします。そうすると、Network maskが0.0.0.0になっていることが確認できました。

Network maskが0.0.0.0 = アドレスを考慮しないため、異なるネットワークとして認識されずOSPF neighborが確立されました。

まとめ

今回は異なるネットワーク間でIGP neighborを確立する方法を解説しました。小ネタですが、冒頭にもある通りFlexVPNでも使用されます。

ip unnumberedはpoint-to-point IFでしか使用できないことからあまり使用頻度は高くないと思いますが、記憶の片隅に置いておくと幸せになれる日がくるかも…?