【OSPF】distribute-listによる経路フィルタ

 distribute-listコマンドを使用することで、経路情報をフィルタすることができます。OSPFの場合、同一エリア内でLSDBが同期されている必要があるため、LSDB自体をフィルタリングの対象にできません。ただし、distribute-listコマンドで、LSDBからルーティングテーブルへ反映するところでフィルタリングが可能です。

 以下の構成で、R1の1.1.1.1/32をOSPFで広告し、R2でdistribute-listを使用し、フィルタリングします。

スポンサーリンク

基本設定

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

 R2で上のアクセスリスト1に対して、distribute-listを適用します。

R2(config)# router ospf 1
R2(config-router)# distribute-list 1 in
スポンサーリンク

確認

 R2のルーティングテーブルを確認します。

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

 1.1.1.1/32が学習されていません。R3のルーティングテーブルを確認します。

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には反映されません。

 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を使用する際は、ルータ間のルーティングテーブルの整合性は取れないため、ルーティングループなど発生する可能性があり、十分に注意する必要があります。

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 Type=3/Code=1の Host Unreachable を意味します。

コメント