tym78さんの投稿一覧
まず、経路学習のAD値についてのご認識が間違っていると思いますので、訂正させて頂きますね。
①RCではRIP⇔OSPF,RIP⇔EIGRP間で経路情報を再配送する設定がされていることから、RCは192.168.51.0/24の経路情報をRA,RBそれぞれに伝える。
(このとき、RA,RBが受け取るAD値は120)
・RC-RA間ではEIGRPで経路学習が行われるため、RAがRCから学習する192.168.51.0/24のAD値は170です。
(192.168.51.0/24の経路情報は、RIPエリアの情報なので外部EIGRPの170)
・RC-RB間ではOSPFで経路学習が行われるため、RBがRCから学習する192.168.51.0/24のAD値は110です。
(OSPFのAD値は外部、内部に関わらず110)
②RBは、受け取った192.168.1.0/24の経路情報をRAに伝える。
(このとき、RA,RBが受け取るAD値は110)
・RB-RA間ではEIGRPで経路学習が行われるため、RAが受け取る経路情報のAD値は170です。
次にこの問題の構成における経路学習について説明します。
解説の3つ目の図の水色の矢印が示しているような順で経路学習が行われて、ルーティングループが発生してしまいます。
ループが発生する経路学習の流れは以下のような感じです。
①RCが「192.168.51.0/24」の経路情報をRBへOSPFで送信する(RBが学習する情報のAD値はOSPFの110)
②RBが①で学習した「192.168.51.0/24」の経路情報をRAのEIGRPへ再配送する(RAが学習する情報のAD値は外部EIGRPの170)
③RAが②で学習した「192.168.51.0/24」の経路情報をRCのEIGRPへ送信する(RCが学習する情報のAD値は95)
※「distance eigrp 90 95」によってRCでは外部EIGRPで学習する経路情報のAD値を95にするよう設定しているため、RCが受け取る情報のAD値は95となります。
また、「distance」コマンドによるAD値の変更はローカルのみで有効なので、他のルータにこれが通知されることはありません。
RCがRDからRIPで受け取る情報(転送先がRDとなる経路)のAD値は120ですが、③でEIGRPで学習した情報(転送先がRAとなる経路)のAD値95の方が小さくなります。
このことから、RCは「192.168.51.0」宛のパケットをRAに転送してしまうので、ループが発生します。
この問題と同じような構成を作ってみたので参考までに、各ルータの「show ip route 192.168.51.0」の出力結果を載せておきます。
①RBは「192.168.51.0」の経路情報をRCからOSPFで学習
RB#sh ip route 192.168.51.0
Routing entry for 192.168.51.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 1 ←OSPFで学習していて、AD値は110であることがわかります
Redistributing via eigrp 1
Advertised by eigrp 1 metric 1000000 1 255 1 1500
Last update from 172.16.1.3 on GigabitEthernet0/2, 00:20:37 ago
Routing Descriptor Blocks:
* 172.16.1.3, from 192.168.1.3, 00:20:37 ago, via GigabitEthernet0/2 ←ネクストホップはRCの172.16.1.3でRC(192.168.1.3)からこの経路を学習していることがわかります
Route metric is 20, traffic share count is 1
②RAは「192.168.51.0」の経路情報をRBからEIGRPで学習
RA#sh ip route 192.168.51.0
Routing entry for 192.168.51.0/24
Known via "eigrp 1", distance 170, metric 3072, type external ←EIGRPで学習していて、AD値は170であることがわかります
Redistributing via eigrp 1
Last update from 10.1.1.2 on GigabitEthernet0/0, 00:21:42 ago
Routing Descriptor Blocks:
* 10.1.1.2, from 10.1.1.2, 00:21:42 ago, via GigabitEthernet0/0 ←ネクストホップはRBの10.1.1.2でRB(10.1.1.2)からこの経路を学習していることがわかります
Route metric is 3072, traffic share count is 1
Total delay is 20 microseconds, minimum bandwidth is 1000000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
③RCは「192.168.51.0」の経路情報をRAからEIGRPで学習
RC#sh ip route 192.168.51.0
Routing entry for 192.168.51.0/24
Known via "eigrp 1", distance 95, metric 3328, type external ←EIGRPで学習していて、AD値は95であることがわかります
Redistributing via eigrp 1, rip, ospf 1
Adve ospf 1 subnets
Last update from 10.1.2.1 on GigabitEthernet0/1, 00:20:47 ago
Routing Descriptor Blocks:
* 10.1.2.1, from 10.1.2.1, 00:20:47 ago, via GigabitEthernet0/1 ←ネクストホップはRAの10.1.2.1でRA(10.1.2.1)からこの経路を学習していることがわかります
Route metric is 3328, traffic share count is 1
Total delay is 30 microseconds, minimum bandwidth is 1000000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2rtised by rip metric 1
再配送とAD値について詳しく解説してくれているサイトがありましたので、良かったら参考に見てみてください。
https://hirotanoblog.com/cisco-administrative-distance/3068/
「正規のルータを全てのセカンダリVLANと通信可能なプロミスキャスポートに接続し、他のポートはプライマリVLANとしか通信できない独立ポートにします。」
の部分から空いている他のポートに不正なルータが接続されても通信できないように正規のルータを接続するポート以外のポートはプロミスキャスポートにせずにプライマリVLANとしか通信できない独立ポートにするということだと思います。
「不正なルータがプロミスキャスポートに接続された場合はほかのポートと通信できてしまうので」とおっしゃっていますが、例えば正規のルータを外して、もともと正規のルータが接続されていたプロミスキャスポートに対して不正なルータを繋ぐということを想定されていますか?
空いているポートに不正なルータが接続されてしまっても通信できないように独立ポートにしておくのがプライベートVLANを使ったファーストホップセキュリティの仕組みだと思うので、このような場合への対策は別の手段でセキュリティを確保する必要が出てくるんじゃないでしょうか。
(そもそも攻撃者を物理的に近づけないとか、RAガードとか、ポートに接続できるMACアドレスの制限とか)
EIGRPのメトリック = 256 ×~
と
帯域幅 = 10,000,000 ÷~
と
遅延 = ~ ÷ 10の式の値についてはデフォルトで決まっているものなのでしょうか
はい。メトリックを計算する際の公式の定数として覚えてしまって大丈夫です。
なぜこのような定数を使用するかというと、少し数学的な話になりますが、正規化して帯域幅や遅延を簡単な数字で表すことができるようになるためです。
例えば、帯域幅や遅延に(Kbps)とか(μ秒)のような単位接頭辞がついていますが、これを外して数字だけで表現すると、数字が大きくなりすぎたり小さくなりすぎたりしてわかりにくいですよね。
経路上の最小帯域幅(Kbps)= 100000 (Kbps)=100000000(bps)
経路上の遅延合計(μ秒)= 1110(μ秒)= 0.00111(秒)
[計算の例]
帯域幅 = 10000000÷100000(Kbps) = 100
遅延 =(1000(μ秒)+100(μ秒)+10(μ秒))÷10 = 111
EIGRPのメトリック = 256 ×( 100 + 111 ) = 54016
上記は解説に載っている計算式の一例ですが、公式にあてはめて定数を使って計算することで帯域幅100、遅延111のように簡単な数字になっています。
もともと、100000000(bps)、0.00111(秒)のように全然異なる値だったものが、帯域幅=100、遅延=111のように近い値になって計算しやすくなっていることがわかります。
256の数値についてはwikiより
「複合メトリック値はIGRPでは24ビットの値だが、EIGRPでは32ビットの値になっている。
したがって、24ビットの値を256倍することで8ビット左へシフトしたのと同じことになり、
値が32ビットに拡張される。」とありますがいまいち理解できませんでした
IGRPはEIGRPの前に開発されたCisco独自のプロトコルで、複合メトリックの計算においてEIGRPとIGRPの後方互換性を保つ必要があったみたいですね。
内部的にIGRPの複合メトリックは24ビット、EIGRPでは32ビットとなっています。
EIGRPのメトリックは、内部的には32ビット値として表現されていますが、32ビットのうち実際にメトリック計算で使用されるのは上位24ビットだけです。(じゃあEIGRPも最初から24ビットにしとけば良かったんじゃないのと思ってしまいますが...)
なのでEIGRPでは上位24ビットを使用する32ビットのメトリック値(上位24ビットには値が入っていて使用しない下位8ビットは全部0)を用意するために、24ビットの値を8ビット左へシフト(2の8乗で256倍)する必要があるということになります。
シフト演算については以下が参考になると思います。
https://tech.pjin.jp/blog/developer/2022/09/28/kihonjoho_2_5/
参考になりましたら幸いです。
この設定の場合「distribute-list 10 in GigabitEthernet0/1」の意味は以下の通りです。
・RAからOSPFでアドバタイズされる「192.168.10.0/24」の経路情報をGi0/1でブロック
in GigabitEthernet0/1 となっているのでGi0/1のインバウンド方向(受信する経路情報)にディストリビュートリストが適用されていることを意識するといいと思います。
なので、
①RAからOSPFでアドバタイズされる「192.168.10.0/24」の経路情報を、RBとRDがOSPF側のインターフェースであるGi0/1でブロックする
②RBとRDがOSPFで受信時に「192.168.10.0/24」の経路情報をブロックしたので、この経路情報がOSPFエリアからRIPエリアへ再配送されることもなくなる
という流れでRIPへの再配送をブロックしています。