今回はEIGRPのdistribute-listを学習します。
現在、下図のR1からR5はEIGRPで経路情報を交換しています。
ルータR1からR2へEIGRPで経路情報をアドバタイズするのですが、
10.1.2.0のセグメントは隠したいとします。
このようにアドバタイズを制限したいときに使うのが
distribute-listです。
これはaccess-listを用いて、アドバタイズを制限することができるコマンドです。
以下をR1にて打ち込みます。
R1#(config)access-list 1 deny 10.1.2.0 0.0.0.255
R1#(config)access-list 1 permit any
R1#(config)router eigrp 1
R1#(config-router)distribute-list 1 out serial 0/0
distribute-listでoutを指定すると、アドバタイズの送信を制限、
inを指定すると、アドバタイズの受信を制限します。
拒否用のアクセスリストを作成する際は、最後にpermit anyを忘れない事。
access-listは最後に暗黙のdenyが入ってますから、すべてのアドバタイズを
拒否してしまいます。
上記を設定後、R2からR4へpingをしてみたのですが、成功してしまいました・・・。
おかしいと思い、R2でshow ip routeを実行してみると、
10.0.0.0/8を学習していました。
EIGRPはデフォルトで経路集約が有効になっています。
クラスフル境界のルータはクラスフルアドレスに従い、
自動経路集約します。
今回10.0.0.0/8のクラスAと192.168.1.0/24のクラスBがあり、
ちょうどその境界にルータR1がいます。だから自動集約されます。
今回10.1.1.0と10.1.2.0はともにクラスAのネットワークですから、
集約されて10.0.0.0としてアドバタイズされたようです。
ということで、自動集約を無効かするため、R1で以下を実行。
R1#(config-router)no auto-summary
これで自動集約は無効になりました。
ちなみにR1にてeigrpに参加させるネットワークをnetworkで指定する場合は、
R1#(config-router)network 10.0.0.0
とクラスフルに指定しても、
R1#(config-router)network 10.1.1.0 0.0.0.255
R1#(config-router)network 10.1.2.0 0.0.0.255
と分けて
指定してもどちらでも大丈夫です。
クラスフルで指定したからと言って、経路集約を強制されるという
わけではありません。
R2のルーティングテーブルを確認すると
(上がR1、下がR2のコンソールです。)
10.1.1.0しか学習していないことがわかります。
R2からR4へのpingも失敗しました。
distribute-listでのアドバタイズ制限が無事成功しました。
これにて今回は終了です。
余談。
ネットワーク構築中、疎通確認でpingを実行したところ
ping 10.2.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.1.2, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
U.U.Uってなんだ?
調べてみると、あて先が存在しない場合に出るそうです。
この場合は、10.1.2.2にpingしようとして間違えて
10.2.1.2と存在しないIPを指定しまったわけです。