【prefix-list】の適用範囲について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 | 投稿日時 2015-10-3 16:19 | 最終変更
platina30  半人前   投稿数: 8
R1-3間をarea 0、R1-2間をarea 12、R1のLoopback0-3 をarea 22 と設定し、Lo0のみをR2へアドバタイズしないようにフィルタしたいところ、うまくフィルタできません。
GNS3 c7200 IOS ver.15系を使用しています。


【質問1】
R1で下記のprefix-listを適用したのにR2では反映されません。

【適用したprefix-list】
router ospf 100
area 12 filter-list prefix exceptLo0 in

ip prefix-list exceptLo0 seq 5 deny 161.67.7.16/28
ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0 le 32

【適用前後のR2のルーティングテーブル(設定前も後も変化なし)】
R2#sh ip route ospf | b Ga
Gateway of last resort is not set

10.0.0.0/24 is subnetted, 1 subnets
O IA 10.0.0.0 [110/2] via 161.7.12.1, 00:13:33, FastEthernet0/0
161.67.0.0/32 is subnetted, 4 subnets
O IA 161.67.7.17 [110/2] via 161.7.12.1, 00:13:37, FastEthernet0/0
O IA 161.67.7.33 [110/2] via 161.7.12.1, 00:13:37, FastEthernet0/0
O IA 161.67.7.49 [110/2] via 161.7.12.1, 00:13:37, FastEthernet0/0
O IA 161.67.7.65 [110/2] via 161.7.12.1, 00:13:37, FastEthernet0/0

設定は正しいと思うのですが、原因がさっぱり分かりません…。


【質問2】
R1で下記のprefix-listにするとLoopback0-3までの全てのOSPFルートがルーティングテーブルから消えます。

ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0

0.0.0.0/0 = 0.0.0.0/0 le32 じゃないのですか?
prefix-list は le やge の有無で動作が異なるので
10.0.0.0/24 だけだと 10.0.0.0〜10.0.0.255 の範囲になると
0.0.0.0/0 = 0.0.0.0〜255.255.255.255 の範囲で
0.0.0.0/0 le32 と同じだと思ったのですが…。

【R2のルーティングテーブル】
R2#sh ip route ospf | b Ga
Gateway of last resort is not set


R1-3のconfigは下記の通りです。
【R1】
interface Loopback0
ip address 161.67.7.17 255.255.255.240
!
interface Loopback1
ip address 161.67.7.33 255.255.255.248
!
interface Loopback2
ip address 161.67.7.49 255.255.255.240
!
interface Loopback3
ip address 161.67.7.65 255.255.255.224
!
interface FastEthernet0/0
ip address 161.7.12.1 255.255.255.0
speed auto
duplex auto
!
interface FastEthernet0/1
ip address 10.0.0.1 255.255.255.0
speed auto
duplex auto

router ospf 100
area 12 filter-list prefix exceptLo0 in
network 10.0.0.0 0.0.0.255 area 0
network 161.7.12.0 0.0.0.255 area 12
network 161.67.7.0 0.0.0.127 area 22
!
ip prefix-list exceptLo0 seq 5 deny 161.67.7.16/28
ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0 le 32

【R2】
interface FastEthernet0/0
ip address 161.7.12.2 255.255.255.0
speed auto
duplex auto

router ospf 100
network 161.7.12.0 0.0.0.255 area 12

【R3】
interface FastEthernet0/0
ip address 10.0.0.2 255.255.255.0
speed auto
duplex auto
!
router ospf 100
network 10.0.0.0 0.0.0.255 area 0
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-10-3 17:56
antares01  長老   投稿数: 690
まずフィルタ適用前のR2のルーティングテーブルを見てみてください。

R1でループバック使って/28とか/29を設定しました。
正しく、/28とか/29でR2は受信してますか?


platina30さんがやりたいことに対して、R1での準備が不足しているかもしれませんよ。もう一度、フィルタ適用前が想定している状況かを確認してみましょう
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-10-3 18:19
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
【質問1】
R1で下記のprefix-listを適用したのにR2では反映されません。

設定は正しいと思うのですが、原因がさっぱり分かりません…。
だって
R2#sh ip ro 161.67.7.17
Routing entry for 161.67.7.17/32
  Known via "ospf 100", distance 110, metric 2, type inter area
  Last update from 161.7.12.1 on FastEthernet0/0, 00:00:23 ago
  Routing Descriptor Blocks:
  * 161.7.12.1, from 1.1.1.1, 00:00:23 ago, via FastEthernet0/0
      Route metric is 2, traffic share count is 1
ですから、
ip prefix-list exceptLo0 seq 5 deny 161.67.7.16/28
ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0 le 32
ではあわないですよね。このまま行くなら
ip prefix exceptLo0 seq 6 deny 161.67.7.17/32
を追加するか、または
interface Loopback0
 ip ospf network-type point-to-point
でしょうか。これで
R2#sh ip ro os | b Gate
Gateway of last resort is not set

      10.0.0.0/24 is subnetted, 1 subnets
O IA     10.0.0.0 [110/2] via 161.7.12.1, 00:09:04, FastEthernet0/0
      161.67.0.0/32 is subnetted, 3 subnets
O IA     161.67.7.33 [110/2] via 161.7.12.1, 00:09:04, FastEthernet0/0
O IA     161.67.7.49 [110/2] via 161.7.12.1, 00:09:04, FastEthernet0/0
O IA     161.67.7.65 [110/2] via 161.7.12.1, 00:09:04, FastEthernet0/0
となりますよ

こちらのFAQをどうぞ

OSPF:FAQ - Cisco Systems
Q. なぜ OSPF ではループバックが /32 ホスト ルートとしてアドバタイズされるのですか。
http://www.cisco.com/cisco/web/support/JP/100/1006/1006421_9-j.html#qone

それから
引用:
【質問2】
R1で下記のprefix-listにするとLoopback0-3までの全てのOSPFルートがルーティングテーブルから消えます。
「下記のprefix-list」がついてないみたいですよ
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-10-3 18:21
arashi1977  長老 居住地: 広島  投稿数: 1715
追加で。

161.67.0.0/16はスペインの大学が保有するグローバルアドレスのようです。
検証環境だからといってグローバルアドレスを使うのは好ましくないかと思いますよ
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-10-4 19:36
platina30  半人前   投稿数: 8
antares01さん
arashi1977さん

ご丁寧にありがとうございます。
point-to-pointでないと/32なのを完全に忘れてました。
事前にルーティングテーブルを見るべきでしたね…。
次から活かせるように肝に銘じます。

【質問2】の下記…が抜けておりました。
正しくは、次のとおりです。

ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0

le を省くとルーティングテーブルがキレイに消えてしまいます。
prefix-list は 最後に le や ge がある場合とない場合ではどのように変化するのかイマイチ理解できていないからだと思います…。

この2つの違いをよろしければご教授頂けますでしょうか。
お手数ですが、よろしくお願いいたします。

追記
グローバルIPアドレスの件、ご指摘ありがとうございます。
以後気をつけます。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-10-4 20:09
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
【質問2】の下記…が抜けておりました。
正しくは、次のとおりです。

ip prefix-list exceptLo0 seq 10 permit 0.0.0.0/0

le を省くとルーティングテーブルがキレイに消えてしまいます。
prefix-list は 最後に le や ge がある場合とない場合ではどのように変化するのかイマイチ理解できていないからだと思います…。

この2つの違いをよろしければご教授頂けますでしょうか。
まず、R1で以下のコマンドを入れてみます。
router ospf 100
  default-information originate always
こうすると、R2のルーティングテーブルは以下のようになります。
R2#sh ip ro os | b Gate
Gateway of last resort is 161.7.12.1 to network 0.0.0.0

O*E2  0.0.0.0/0 [110/1] via 161.7.12.1, 00:02:16, FastEthernet0/0
で、これをみるとわかるのですが、
R2#sh ip ro 0.0.0.0
Routing entry for 0.0.0.0/0, supernet ←ここ
  Known via "ospf 100", distance 110, metric 1, candidate default path
  Tag 100, type extern 2, forward metric 1
  Last update from 161.7.12.1 on FastEthernet0/0, 00:02:28 ago
  Routing Descriptor Blocks:
  * 161.7.12.1, from 1.1.1.1, 00:02:28 ago, via FastEthernet0/0
      Route metric is 1, traffic share count is 1
      Route tag 100
「0.0.0.0/0」ってなってますよね?

leとかgeとかがどういうものかはまずコマンドヘルプを見てみます。
R2(config)#ip prefix A perm 0.0.0.0/0 ?
  ge  Minimum prefix length to be matched
  le  Maximum prefix length to be matched
  <cr>
ge:マッチする最小のプレフィックス長=Greater than Equal(以上)
le:マッチする最大のプレフィックス長=Less than Equal(以下)
のことなので、これがつくということはプレフィックスリストがマッチする対象を範囲指定(複数)しているということです。
逆に、leやgeを使わないということはexact match(厳密なマッチ)となるため、
permit 0.0.0.0/0
とした時点で、「0.0.0.0/0」にしかマッチしないのです。逆に
permit 0.0.0.0/0 le 32
というのは、0.0.0.0/0 〜 0.0.0.0/32のことなので、「全て」のプレフィックスを意味します。

これでどうでしょうか?
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-10-10 12:20
platina30  半人前   投稿数: 8
arashi1977さん

返信が遅くなり申し訳ありません。
ご丁寧にありがとうございます。

お陰さまですっと理解することができました!
どこの解説サイトよりも分かりやすかったです。
この度は本当にありがとうございます。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.