OSPFでのdistribute-listを使った経路フィルタリング方法と注意点(Cisco)

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の特性や設計上の注意点を理解し、適用範囲を慎重に検討する必要があります。

コメント