ACLとPrefix-list


初期設定&確認

iosv-4(config)#int lo1  
iosv-4(config-if)#ip add 
*Sep 11 10:57:08.165: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
iosv-4(config-if)#ip add 169.254.100.4 255.255.255.0
iosv-4(config-if)#exit
iosv-4(config)#router ospf 1
iosv-4(config-router)#net 169.254.100.0 0.0.0.255 area 0

iosv-3#sh ip ro ospf | b Gate
Gateway of last resort is not set

O     1.0.0.0/8 [110/2] via 13.1.1.1, 06:33:01, GigabitEthernet0/1
      4.0.0.0/32 is subnetted, 1 subnets
O        4.4.4.4 [110/2] via 34.1.1.4, 08:07:14, GigabitEthernet0/2
O     5.0.0.0/8 [110/3] via 34.1.1.4, 06:33:01, GigabitEthernet0/2
      45.0.0.0/24 is subnetted, 1 subnets
O        45.1.1.0 [110/2] via 34.1.1.4, 06:33:01, GigabitEthernet0/2
      46.0.0.0/24 is subnetted, 1 subnets
O        46.1.1.0 [110/2] via 34.1.1.4, 08:07:14, GigabitEthernet0/2
      169.254.0.0/32 is subnetted, 1 subnets
O        169.254.100.4 [110/2] via 34.1.1.4, 00:00:02, GigabitEthernet0/2

検証用にiosv-4にてLoopback1を作成(169.254.100.4/24)し、OSPFに所属させる。

ACL設定&確認

iosv-3(config)#access-list 1 deny 169.254.100.0 0.0.0.255
iosv-3(config)#access-list 1 permit any
iosv-3(config)#router ospf 1
iosv-3(config-router)#distribute-list 1 in gi0/2
iosv-3(config)#do sh ip ro ospf | b Gate
Gateway of last resort is not set

O     1.0.0.0/8 [110/2] via 13.1.1.1, 00:00:37, GigabitEthernet0/1
      4.0.0.0/32 is subnetted, 1 subnets
O        4.4.4.4 [110/2] via 34.1.1.4, 00:00:37, GigabitEthernet0/2
O     5.0.0.0/8 [110/3] via 34.1.1.4, 00:00:37, GigabitEthernet0/2
      45.0.0.0/24 is subnetted, 1 subnets
O        45.1.1.0 [110/2] via 34.1.1.4, 00:00:37, GigabitEthernet0/2
      46.0.0.0/24 is subnetted, 1 subnets
O        46.1.1.0 [110/2] via 34.1.1.4, 00:00:37, GigabitEthernet0/2

とりあえずprefix-listと比較してみよう。

Prefix-list設定&確認

1) 例外問題

iosv-3(config)#ip prefix-list PRE deny 169.254.100.0/24 le 28
iosv-3(config)#ip prefix-list PRE permit 0.0.0.0/0 le 32
iosv-3(config)#
iosv-3(config)#router ospf 1
iosv-3(config-router)#distribute-list prefix PRE in gi0/2
iosv-3(config-router)#
iosv-3(config-router)#do sh ip ro ospf | b Gate
Gateway of last resort is not set

O     1.0.0.0/8 [110/2] via 13.1.1.1, 00:00:09, GigabitEthernet0/1
      4.0.0.0/32 is subnetted, 1 subnets
O        4.4.4.4 [110/2] via 34.1.1.4, 00:00:09, GigabitEthernet0/2
O     5.0.0.0/8 [110/3] via 34.1.1.4, 00:00:09, GigabitEthernet0/2
      45.0.0.0/24 is subnetted, 1 subnets
O        45.1.1.0 [110/2] via 34.1.1.4, 00:00:09, GigabitEthernet0/2
      46.0.0.0/24 is subnetted, 1 subnets
O        46.1.1.0 [110/2] via 34.1.1.4, 00:00:09, GigabitEthernet0/2
      169.254.0.0/32 is subnetted, 1 subnets
O        169.254.100.4 [110/2] via 34.1.1.4, 00:00:09, GigabitEthernet0/2

"deny 169.254.100.0/24 le 28"
これは、169.254.100.が合致していて、第四オクテットはなんでもよくて、さらにプレフィックスが28よりも少ない場合にdenyするという意味。
初期設定時に「ip add 169.254.100.4/24」でiosv-4 lo1にアドレスを設定した。これは上記denyの条件を満たしている。
つまり、ルーティングテーブルには載らないはずなのに存在している。
な~ぜだ。

2) 答え

iosv-4(config)#int lo1
iosv-4(config-if)#ip o net point-to-point

iosv-3(config)#do sh ip ro ospf | b Gate
Gateway of last resort is not set

O     1.0.0.0/8 [110/2] via 13.1.1.1, 00:00:07, GigabitEthernet0/1
      4.0.0.0/32 is subnetted, 1 subnets
O        4.4.4.4 [110/2] via 34.1.1.4, 00:00:07, GigabitEthernet0/2
O     5.0.0.0/8 [110/3] via 34.1.1.4, 00:00:07, GigabitEthernet0/2
      45.0.0.0/24 is subnetted, 1 subnets
O        45.1.1.0 [110/2] via 34.1.1.4, 00:00:07, GigabitEthernet0/2
      46.0.0.0/24 is subnetted, 1 subnets
O        46.1.1.0 [110/2] via 34.1.1.4, 00:00:07, GigabitEthernet0/2

iosv-4 Loopback1のネットワークタイプがLoopbackになっていたため。
Loopbackだと必ず/32でアドバタイズするので、「le 28」に引っかからなくなる。

とりあえず総括

169.254.100.4/24というアドレスがあったとして

・ACLでdeny 169.254.100.0 0.0.0.255を設定するときは、第一~三オクテットまでが169.254.100と一致しているかをチェックする
・ACLでdeny 169.254.100.0/24 ge 28と設定するときは、ACLの時の条件に加え、プレフィックスが28以上かどうかもチェックする

したがって上記の場合、ACLはdenyが通るが、prefix-listは通らない(対象アドレスのプレフィックスが/24なのに対してprefix-listの条件文はge 28、つまり28以上でないといけなく、不一致)

このようにACLはネットワーク部のアドレスだけをチェックするが、プレフィックスリストはネットワーク部のみならずプレフィックスもチェックする。

睡魔に負けた午前1時。本当はもっと面白いコンフィグがあったのに……明日以降やる。おやすみなさい。

この記事が気に入ったらサポートをしてみませんか?