再配布を利用したネットワークでは,ルーティング・ループを防止するためにアップデート(経路情報の通知)を止めたいケースが出てきます。その場合,アップデートをフィルタリングすることができます。今回は,フィルタリングの手法として,distribute-listを学びましょう。また,管理距離(アドミニストレイティブ・ディスタンス)の変更方法についても押さえましょう。
ルーティングアドバタイズの制御
再配布を使ったネットワークでは,ルーティングアドバタイズのフィードバックによるループが発生することがあります(図1)。
図1 再配布によるループの発生
こうしたループの防ぐ手段としては,OSPF-AS内に再配布されたRIP-ASの経路情報を,ルータBがもう一度RIP-ASへアドバタイズすることを禁止する方法があります(図2)。
図2 フィルタによるループの防止
Ciscoルータには,フィルタリングの手段としてアクセスリスト(ACL)があります。ただしACLはトラフィックのフィルタリングに使うものであり,ルータのインタフェース自身が発する経路情報には適用されません。経路情報をフィルタリングするには,ディストリビュートリスト(distribute-list)を使います。
ディストリビュートリストを設定した場合のルーターの経路情報の処理は,次の手順になります。
- ルーティングプロセスにより経路情報が生成され,発信インタフェースが決まる。もしくはアップデートを受信したインタフェースが決まる
- ディストリビュートリストが設定されていない場合,通常の処理が実施される
- ディストリビュートリストが設定されており,リストに一致するエントリがない場合,経路情報は破棄される
- ディストリビュートリストが設定されており,リストに一致するエントリがある場合,エントリの内容にしたがって処理される
ディストリビュートリストもACLと同じように,一致するエントリを探して一致するものがなかった場合,最終的にその経路情報は破棄されます。
ディストリビュートリストを設定する
ACLの設定はグローバル設定モードで設定しますが,ディストリビュートリストはルーティング設定モードで行います。例えば,OSPFのアドバタイズの送受信をフィルタした場合は,OSPFのルーティング設定モードで設定します。distribute-listコマンドは,送信時と受信時でコマンドが異なります。送信時は次のようになります。
- (config-router)# distribute-list [ACL番号 | ACL名前] out [インタフェース | プロトコル]
- [ACL番号 | ACL名前]
- フィルタを実施するネットワークをACLで指定する
- [インタフェース | プロトコル]
- フィルタリングを実施するインタフェース,またはルーティングプロトコル名
- [ACL番号 | ACL名前]
プロトコルを指定する場合,再配布などで特定のプロトコルでの配信をフィルタリングできます。プロトコルの指定には,rip,eigrpなどに加え,static,connectedが使用できます(図3・4)。以下は,RouterAで特定のネットワーク(10.0.0.0/24)の経路情報をフィルタする例です。
図3 ネットワーク構成図
図4 distribute-listによるアドバタイズのフィルタ(その1)
再配布を実行しているルーターで,特定のプロトコルを指定してフィルタする場合は,プロトコルパラメータを使用します。以下は,RouterAがOSPFで受け取った特定のネットワークをフィルタする例です(図5・6)。
図5 ネットワーク構成図
図6 distribute-listによるアドバタイズのフィルタ(その2)
ただし,OSPFでは送信インタフェースを使ったフィルタリングは出来ません(図7)。
図7 OSPFでのdistribute-list適用エラー
受信時におけるフィルタリングの設定コマンドは,次のようになります(図8)。
- (config-router)# distribute-list [ACL番号 | ACL名前] in インタフェース
- [ACL番号 | ACL名前]
- フィルタを実施するネットワークをACLで指定する
- インタフェース
- フィルタリングを実施するインタフェースを指定
- [ACL番号 | ACL名前]
図8 distribute-listによるアドバタイズのフィルタ(その3)
なお,フィルタリングが設定されていることは,show ip protocolsで確認できます(図9)。
図9 show ip protocols
管理距離(アドレミニストレーティブディスタンス)の変更
シスコ・ルーターは,ルーティングプロトコルによって経路情報に優先順位を付けるための「管理距離」(アドレミニストレーティブディスタンス)呼ばれる値を使ってベストパスを選択します。再配布によって,意図したルータがネクストホップとして選ばれない場合,経路情報の管理距離(アドレミニストレーティブディスタンス)の値が小さいことが原因である場合があります。この場合,管理距離を変更することにより,適切なルートをベストパスとして選択させることができます。管理距離の変更は,distanceコマンドを使用します。distanceコマンドはEIGRPとBGPは多少コマンドの詳細が異なります。まず,EIGRPとBGP以外のルーティングプロトコルの変更コマンドは次になります(図10)。
- (config-router)# distance 管理距離 { IPアドレス ワイルドカードマスク | ACL番号 | ACL名前 } { ip }
- 管理距離
- 指定する管理距離
- { IPアドレス ワイルドカードマスク }
- アドバタイズを送信したルータのIPアドレスを指定
- { ACL番号 |名前 }
- 適用するネットワークをACLで指定
- { ip }
- IS-ISでIPを使用する場合に指定
- 管理距離
図10 管理距離の変更
ちなみに,EIGRP,BGPの場合はそれぞれ次のコマンドになります。
- (config-router)# distance eigrp 内部距離 外部距離
- 内部距離
- EIGRP内部ルートの管理距離
- 外部距離
- EIGRP外部ルートの管理距離
- 内部距離
- (config-router)# distance bgp 外部距離 内部距離 ローカル距離
- 外部距離
- eBGPの管理距離
- 内部距離
- iBGPの管理距離
- ローカル距離
- BGPローカルルートの管理距離
- 外部距離