ルートマップをディストリビュートリストで適用する
ルートマップを利用したルートフィルタは、以前のIOSでは再配送時のみ使えました。再配送するルートをルートマップで指定するとともに、シードメトリックのセットなど追加の制御が可能です。ところが、いまではdistribute-listコマンドのオプションにroute-mapが追加されています。つまり、アクセスリストやプレフィクスリストだけでなく、ルートマップを適用してディストリビュートリストのフィルタが可能になっています。
ただし、RIPでは使えません。また、OSPFもルータ間で交換するのはLSAなので、設定はできても意図したような動作にはなりません。EIGRPでルートを送信したり受信するときにルートマップでより細かい制御ができます。ルートを単純にpermit/denyするだけでなく、メトリックの変更が可能です。
(config)#router eigrp ‹AS›
(config-router)#distribute-list route-map ‹route-map-name› {in|out} [‹interface›]
‹AS›:EIGRP AS番号
‹route-map-name›:適用するルートマップ名
‹internface›:インタフェースの指定
※そのうち、RIPやOSPFでも使えるようなるかもしれません。
ルートマップをディストリビュートリストで適用した設定
メールマガジンVol.1007 「ルート制御の問題【CCIEレベル】 のネットワーク構成をあらためて載せておきます。
R1で192.168.23.0/24のルートとしてR3を優先するようにします。そのために、R2から192.168.23.0/24のルートを受信したときに、メトリックを増やします。オフセットリストでは、ルートの送信元までの指定はできませんでした。ルートマップを利用すれば、match ip route-sourceの条件でルートの送信元の指定もできます。R1での設定は、次のようになります。
R1 ルートマップを適用したディストリビュートリスト
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ router eigrp 1 distribute-list route-map ADD_metric in FastEthernet0/0.123 ! access-list 1 permit 192.168.23.0 access-list 2 permit 192.168.123.2 ! route-map ADD_metric permit 10 match ip address 1 match ip route-source 2 set metric 90000 10 255 1 1500 ! route-map ADD_metric permit 100 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
この設定は、「ADD_metric」という名前でルートマップを作成しています。各シーケンスの内容を詳しく考えます。
‹シーケンス10›
シーケンス10はpermitです。matchの条件に一致したルート情報を許可します。match ip address 1 にて、ルート情報のネットワークアドレスを指定しています。この「1」はアクセスリスト1です。つまり、match ip address 1 は、ネットワークアドレスが「192.168.23.0」のルートが対象です。そして、match ip route-source 2 でルート情報の送信元の指定です。「2」とはアクセスリスト2で、ルートの送信元が192.168.123.2が対象です。この2つのmatch条件をまとめると、
- R2から受信した(match ip route-source 2)
- ネットワークアドレス 192.168.23.0 (match ip address 1)
がシーケンス10でpermitされる対象です。
そして、シーケンス10にはsetコマンドがあります。set metricによってpermitされた対象にメトリックの指定を行っています。ただ、BGPルートや再配送時のときのset metricとは動作が違います。指定したメトリック値になるわけではありません。
EIGRPは、ネイバーから受信したルートのメトリックに受信インタフェースのメトリックを足します。(単純な足し算ではないこともありますが・・・)このときのset metricは足し合わせるメトリックの指定です。R3から受信する192.168.23.0/24のルートよりも、R2から受信する192.168.23.0/24のルートの方がメトリックが大きくなるようにしています。
‹シーケンス100›
シーケンス100は、暗黙のdenyを回避するためのシーケンスです。R2から受信したネットワークアドレス192.168.23.0以外のすべてのルートをpermitするためのシーケンスです。このシーケンス100がないと、R3から受信するルートが暗黙のdenyでフィルタされてしまいます。
設定後のR1のEIGRPトポロジテーブルは次のようになります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R1#show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.123.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 192.168.123.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/0.123
P 192.168.23.0/24, 1 successors, FD is 30720
via 192.168.123.3 (30720/28160), FastEthernet0/0.123
via 192.168.123.2 (30976/28160), FastEthernet0/0.123
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R2から受信したルート「28160」というメトリックです。それにルートマップのset metricの処理を行うことで、メトリック値は「30976」になっています。R3から受信したルートの最終的なメトリックは「30720」です。そのため、192.168.23.0/24に対するサクセサルートはR3経由のルートです。R2経由のルートはフィージブルサクセサとなります。
図 ルートマップを適用したディストリビュートリストとトポロジテーブル
その結果、ルーティングテーブルにはサクセサ、つまりR3をネクストホップとするルートが登録されます。R1のルーティングテーブルは次のようになっています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.123.0/24 is directly connected, FastEthernet0/0.123
D 192.168.23.0/24
[90/30720] via 192.168.123.3, 00:09:40, FastEthernet0/0.123
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━







