10.31.2012

Prefix-listを極める











prefix-listはBGPでよく使用されるACLの高機能版のようなものです。

ip prefix-list [permit | deny] [ge VALUE] [le VALUE]

で設定することができます。

それぞれに例を挙げて解説していきます。
ip prefix-list TEST permit 192.168.0.0/16 ge 16 le 24

この場合まず、192.168.0.0/16の条件に合うかどうかが判断されます。
10.0.0.0/8
172.16.0.0/16
192.168.0.0/16
192.168.1.0/24
192.168.2.0/25
193.16.2.0/16

この中で条件にmatchするのは192.168.0.0/16と192.168.1.0/24,192.168.2.0/25だけですので、他のprefixはprefix-list TESTの条件から外されます。

次にge値、le値の条件に合わせていきます。

ge 16ですので、prefix長が16bit以上の値が条件にmatchします。
ge 16の条件から言うと、192.168.0.0/16,192.168.1.0/24,192.168.2.0/25はmatchすることになります。

次にle 24の条件で言うとprefix長が24 以下の値がmatchするということになります。
マスク長が24bit以下のprefixは192.168.0.0/16,192.168.1.0/24だけということになります。

つまり条件を総合すると、192.168.が第二オクテットまで同じで、さらに16~24bitのマスク長の人を探しているということになりますので、この例でいくと、192.168.0.0/16と192.168.1.0/24が条件にmatchします。

192.168.1.0/25はマスク長が/25ですので、このprefix-list条件にはmatchしません。

ip prefix-list TEST permit 192.168.0.0/16 ge 16 le 24
NG 10.0.0.0/8
NG 172.16.0.0/16
OK 192.168.0.0/16
OK 192.168.1.0/24
NG 192.168.2.0/25
NG 193.16.2.0/16



では、match条件がgeのみ、あるいはleのみの場合はどうなるでしょうか。
192.168.0.0/16 ge 16の場合で確認してみます。

ip prefix-list TEST2 per 192.168.0.0/16 ge 16

ge16しか設定されない場合は、マスク長/16のもののみを示すわけではなく、16ビット以上のものを示すことになります。


10.0.0.0/8
172.16.0.0/16
192.168.0.0/16
192.168.1.0/24
192.168.2.0/25
193.16.2.0/16

先ほどと同じサンプルprefixで確認すると、まずは192.168.0.0/16に合致する192.168.0.0/16,192.168.1.0/24と192.168.2.0/25以外は対象から外れることになります。

そして、16bit長マスク以上のprefixを持つものが対象ということですので、192.168.0.0/16,192.168.1.0/24と先ほどは対象外であった192.168.2.0/25も対象ということになります。

つまり、以下ということになります。

ip prefix-list TEST2 per 192.168.0.0/16 ge 16

NG 10.0.0.0/8
NG 172.16.0.0/16
OK 192.168.0.0/16
OK 192.168.1.0/24
OK 192.168.2.0/25
NG 193.16.2.0/16

次にle24のみが指定された場合はどうなるでしょうか。

ip prefix-list TEST3 per 192.168.0.0/16 le 24

le24しか設定されない場合は、先ほどのgeのみの場合と逆の動きです。
マスク長/24のもののみを示すわけではなく、24ビット以下のものを示すことになります。

つまり、
ip prefix-list TEST3 per 192.168.0.0/16 le 24

NG 10.0.0.0/8
NG 172.16.0.0/16
OK 192.168.0.0/16
OK 192.168.1.0/24
NG 192.168.2.0/25
NG 193.16.2.0/16

ここまでのことを踏まえて、以下のprefix-listだとどのprefixが当てはまるでしょうか。

ip prefix-list TEST4 per 192.168.0.0/16 ge 17 le 23

先ほどと同じように192.168.0.0/16にmatchするのは192.168.0.0/16、192.168.1.0/24, 192.168.2.0/25ですので、それ以外のprefixは除外されます。

次のmatch条件ですが、ge 17です。つまりマスク長が17bit以上のものが対象になりますので、192.168.1.0/24と192.168.2.0/25が対象となります。

次の条件はle23ですので、23以下のマスク長を持つprefixを確認すると、この例題リストの中には存在しないことがわかります。

NG 10.0.0.0/8
NG 172.16.0.0/16
NG 192.168.0.0/16
NG 192.168.1.0/24
NG 192.168.2.0/25
NG 193.16.2.0/16

ip prefix-list TEST5 per 192.168.0.0/16


この条件の場合はどうでしょうか。ge, le双方ともに設定がされていません。
これはACLと同様で192.168.0.0/16のみを示すということになります。
つまり、192.168.0.0/16のみが条件にマッチします。

NG 10.0.0.0/8
NG 172.16.0.0/16
OK 192.168.0.0/16
NG 192.168.1.0/24
NG 192.168.2.0/25
NG 193.16.2.0/16

最後の例題ですが、以下の設定の場合だとどうなるでしょうか。

ip prefix-list TEST6 per 192.168.0.0/16 ge 24 le 24

同じように192.168.0.0/16にmatchするのは192.168.0.0/16、192.168.1.0/24, 192.168.2.0/25ですので、それ以外のprefixは除外されます。

次のmatch条件ですが、ge 24です。つまりマスク長が24bit以上のものが対象になりますので、192.168.1.0/24と192.168.2.0/25が対象となります。

次の条件はle24ですので、24以下のマスク長を持つprefixを確認すると、192.168.1.0/24のみが条件にmatchすることがわかります。

NG 10.0.0.0/8
NG 172.16.0.0/16
NG 192.168.0.0/16
OK 192.168.1.0/24
NG 192.168.2.0/25
NG 193.16.2.0/16

ge24 le 24の条件ですが、この例題のみを確認すると不要な条件のような気がします。しかし、この例題prefix以外ではどのようなものが条件にマッチするでしょうか。

たとえば、192.168.2.0/24, 192.168.100.0/24, 192.168.128.0/24などもマッチします。これは192.168がベースprefixとして使用されている場合に非常に有効です。

ちなみに、prefix-listでデフォルトルートを引っかけるとすれば、以下のように書きます。

ip prefix-list xx seq 5 per 0.0.0.0/0



2 件のコメント:

  1. 匿名7/21/2014

    >ちなみに、prefix-listでデフォルトルートを引っかけるとすれば、以下のように書きます。
    >ip prefix-list xx seq 5 per 0.0.0.0/0 le32

    デフォルトルートだけを引っかけたい場合は、「ip prefix-list xx seq 5 permit 0.0.0.0/0」ですね。

    返信削除
  2. コメントありがとうございます!
    かなり返信が遅れてしまい、申し訳ありません。

    ご指摘ありがとうございます。助かりました!
    記事を修正させて頂きました。

    返信削除

コメントを投稿

Related Posts Plugin for WordPress, Blogger...