distribute-listコマンドを使用することで、ルーティングテーブルにインストールされる経路情報をフィルタリングできます。OSPFでは、同一エリア内のLSDB(Link State Database)が完全に同期される必要があるため、LSDBそのものを直接フィルタすることはできません。しかし、LSDBからルーティングテーブルに情報をインストールする際にdistribute-listを適用することで、特定の経路をルーティングテーブルに反映させないように制御することが可能です。
基本設定
以下のネットワーク構成で、R1から1.1.1.1/32の経路をOSPFで広告し、R2でこの経路をdistribute-listを使ってフィルタリングします。
ネットワーク構成
- R1: 広告元
- R2: フィルタリングを実施
- R3: フィルタリング後の結果を確認
OSPFの基本設定
各ルータにOSPF設定を行います。
R1(config)#router ospf 1 R1(config-router)#network 1.1.1.1 0.0.0.0 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0
R2(config)#router ospf 1 R2(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config-router)#network 192.168.23.0 0.0.0.255 area 0
R3(config)#router ospf 1 R3(config-router)#network 192.168.23.0 0.0.0.255 area 0
R2、R3のルーティングテーブルを確認します。全てのルータで1.1.1.1/32が学習されています。
R2#show ip route ospf O 1.1.1.1 [110/2] via 192.168.12.1, 00:32:15, FastEthernet0/0.12
R3#show ip route ospf O 1.1.1.1 [110/3] via 192.168.23.2, 00:32:12, FastEthernet0/0.23 O 192.168.12.0/24 [110/2] via 192.168.23.2, 00:32:12, FastEthernet0/0.23
R2での経路フィルタ(distribute-list)設定
R2で1.1.1.1/32の経路のみをフィルタリングするように設定します。
アクセスリストの作成
1.1.1.1/32の経路を拒否するアクセスリストを作成し、それ以外の経路は許可します。
R2(config)# access-list 1 deny 1.1.1.1 R2(config)# access-list 1 permit any
distribute-listの適用
作成したアクセスリストを、OSPFプロセスにおいてdistribute-listで適用します。
R2(config)# router ospf 1 R2(config-router)# distribute-list 1 in
フィルタの動作確認
R2とR3のルーティングテーブルをそれぞれ確認します
R2のルーティングテーブル
R2では1.1.1.1/32の経路が存在しないことがわかります。
R2# show ip route ospf
Codes: L - local, 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, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
R2# show ip route 1.1.1.1
% Network not in table
R3のルーティングテーブル
R3では1.1.1.1/32が引き続きルーティングテーブルに存在しています。
R3# show ip route ospf O 1.1.1.1 [110/3] via 192.168.23.2, 00:41:14, FastEthernet0/0.23 O 192.168.12.0/24 [110/2] via 192.168.23.2, 00:41:14, FastEthernet0/0.23 R3# show ip route 1.1.1.1 Routing entry for 1.1.1.1/32 Known via "ospf 1", distance 110, metric 3, type intra area Last update from 192.168.23.2 on FastEthernet0/0.23, 00:41:31 ago Routing Descriptor Blocks: * 192.168.23.2, from 1.1.1.1, 00:41:31 ago, via FastEthernet0/0.23 Route metric is 3, traffic share count is 1
R3はルーティングテーブルに1.1.1.1/32が存在します。R2で経路フィルタしても、R3には反映されません。
R3が1.1.1.1/32を学習している理由は、R2でのdistribute-listはLSDBには影響を与えず、あくまでルーティングテーブルへの反映を制御するためです。
R2のLSDBを確認すると、1.1.1.1/32が存在していることがわかります。
R2# show ip ospf database
OSPF Router with ID (2.2.2.2) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
1.1.1.1 1.1.1.1 723 0x80000004 0x004ADA 2
2.2.2.2 2.2.2.2 748 0x80000005 0x00D544 2
3.3.3.3 3.3.3.3 719 0x80000003 0x000210 1
Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.12.2 2.2.2.2 748 0x80000002 0x008D20
192.168.23.3 3.3.3.3 719 0x80000002 0x004055
OSPFエリア内では、LSDBは必ず同期される必要があるので、distribute-listのフィルタはLSDBからルーティングテーブルへの反映時に適用されます。
注意点:OSPFでのdistribute-listの制限事項とリスク
distribute-listをOSPFで使用する場合、いくつかの注意が必要です。
LSDBの同期性
OSPFプロトコルでは、エリア内の全ルータが同じLSDB(Link State Database)を共有することが基本要件です。distribute-listはLSDB自体をフィルタリングするのではなく、あくまでLSDBからルーティングテーブルへ経路をインストールする際に制御を加えるため、他のルータに影響を与えないという特徴があります。これが、R2で1.1.1.1/32をフィルタしても、R3では依然としてその経路が存在している理由です。
ループ発生のリスク
フィルタリングされた経路が他のルータで引き続き利用可能な場合、ルーティングループが発生するリスクがあります。これは、特に複数ルータ間で異なるフィルタリングポリシーを適用している場合に問題となります。フィルタリングの影響は、単に経路の遮断にとどまらず、ネットワーク全体のトラフィックフローにも影響を及ぼすことがあります。
トラブルシューティングの難易度
特定の経路がフィルタされることで、ネットワーク内の到達性や経路選択に予期しない影響が出る場合があります。これにより、トラブルシューティングが難しくなる可能性があります。
トレースルートによる到達性の確認
設定が適用されたR2を経由してR3から1.1.1.1への到達性を確認するために、R3でトレースルートを実行します。R3はR2を経由して1.1.1.1/32に到達しようとしますが、R2での経路フィルタによりパケットは遮断されます。
R3# traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.23.2 12 msec 24 msec 20 msec
2 192.168.23.2 !H !H !H
ここで表示されている!Hは、ICMPのHost Unreachable(ホスト到達不可)メッセージを示しています。これは、R2で1.1.1.1/32がフィルタされており、R2が1.1.1.1へのルートを保持していないため、R3からその宛先へのパケットがR2を越えて到達できないことを意味します。
※ !H は ICMP Type=3/Code=1の Host Unreachable を意味します。
まとめ
distribute-listを使ったOSPFの経路フィルタリングは、特定の経路がネットワークに流れるのを制御する際に有効です。しかし、OSPFの特性や設計上の注意点を理解し、適用範囲を慎重に検討する必要があります。
コメント