JANOG55 NETCON Level3-10 問題解説
問題文
あなたは学生でDataCenterのネットワークに興味を持って勉強をしてみようと環境を作ってみました。
IP AnycastとしてSV-01, SV-02, SV-03に20.5.5.5/32を割り当て、SV-04, SV-05, SV-06に20.110.1.1/32を割り当てました。
しかし、SV-01, SV-02, SV-03のどの端末からも20.110.1.1/32へPingが通らず、SV-04, SV-05, SV-06のどの端末からも20.5.5.5/32へのPingが通りません。
なので、SV-01, SV-02, SV-03のどの端末からでも20.110.1.1/32へPingが通るようにしてください。また同様に、SV-04, SV-05, SV-06のどの端末からでも20.5.5.5/32へのPingが通るようにもしてください。
全ての機器でFRRを利用しており、vtyshでCLIに入ることができます。
bash-5.1# vtysh
Hello, this is FRRouting (version 8.4.1_git).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
RT-S-01#
達成条件
SV-01, SV-02, SV-03から20.110.1.1へのPingが通ること
SV-04, SV-05, SV-06から20.5.5.5へのPingが通ること
制約
Static Routeを設定するのは禁止です。
Serverの数が増えても一台ずつにNeighborの設定を入れなくて大丈夫なようにしてください。
解説
この問題では、2つの問題が起こっています。一つ目はRT-T-01,02にぶら下がっているSV-01~06との間でBGPのPeerが上がっていないことでIP Anycastのアドレスがルーテングテーブルに載っていないこと。2つ目はSVの実アドレスを広報していないことでPingが戻ってこないことにあります。
1つ目の問題であるBGPのPeerが上がっていないことは、SVのshow ip route
によるルーティングテーブルの確認やshow ip bgp summay
によって分かるかと思います。
SV-01# show ip bgp summary
IPv4 Unicast Summary (VRF default):
BGP router identifier 192.168.11.111, local AS number 65031 vrf-id 0
BGP table version 1
RIB entries 1, using 192 bytes of memory
Peers 1, using 717 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
192.168.11.100 4 0 0 4 0 0 0 never Active 0 N/A
Total number of neighbors 1
Activeの状態になっていますが、SV側の設定は大丈夫なようです。
次にRT-T-01の方を見ていきます。
RT-T-01# sh ip bgp summary
IPv4 Unicast Summary (VRF default):
BGP router identifier 10.1.0.21, local AS number 65021 vrf-id 0
BGP table version 4
RIB entries 7, using 1344 bytes of memory
Peers 2, using 1434 KiB of memory
Peer groups 2, using 128 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
RT-L-01(eth1) 4 65011 12 12 0 0 0 00:00:15 3 4 N/A
RT-L-02(eth2) 4 65012 12 12 0 0 0 00:00:15 3 4 N/A
Total number of neighbors 2
SVとのBGPの状態が一つも出てきていません。設定が入っていないのかな?とコンフィグを見てみます。
SVとのBGPの設定で関係ありそうな部分を抜粋してきました。
bgp listen limit 20
bgp listen range 192.168.11.0/26 peer-group SERVERS
上に示す設定を調べてみると、Dynamic Neighborの設定のようです。
Dynamic Neighborとは、特定のIP範囲からの接続要求を自動的に受け入れることで、BGPピアを動的に形成する機能のことです。
今回の問題の制約には、「Serverの数が増えても一台ずつにNeighborの設定を入れなくて大丈夫なようにしてください。」とあるので、Dynamic NeighborでBGPの設定をしてください。
Dynamic Neighborで間違っているのはrangeの範囲になります。
SVのIPアドレス:192.168.11.111/26
を考えた時に、rangeに指定するべきアドレスは192.168.11.64/26
になります。SVのIPアドレスのネットワーク部とホスト部を考えた時に何かおかしいなと気づけるかがポイントです。一見正しそうに見えるでしょう?(見えてくれていたら嬉しいです)
Dynamic Neighborの修正方法を以下になります
RT-T-01(config-router)# no bgp listen range 192.168.11.0/26 peer-group SERVERS
RT-T-01(config-router)# bgp listen range 192.168.11.64/26 peer-group SERVERS
これでSVとのBGPのピアを張ることができました。Dynamic Neighborの場合は少し表記が異なっています。
RT-T-01# show ip bgp summary
IPv4 Unicast Summary (VRF default):
BGP router identifier 10.1.0.21, local AS number 65021 vrf-id 0
BGP table version 7
RIB entries 11, using 2112 bytes of memory
Peers 5, using 3585 KiB of memory
Peer groups 2, using 128 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
RT-L-01(eth1) 4 65011 123 123 0 0 0 00:05:42 4 6 N/A
RT-L-02(eth2) 4 65012 123 123 0 0 0 00:05:42 4 6 N/A
*SV-01(192.168.11.111) 4 65031 6 5 0 0 0 00:00:06 1 1 N/A
*SV-02(192.168.11.112) 4 65032 6 5 0 0 0 00:00:06 1 1 N/A
*SV-03(192.168.11.113) 4 65033 9 8 0 0 0 00:00:14 1 1 N/A
Total number of neighbors 5
* - dynamic neighbor
3 dynamic neighbor(s), limit 20
RT-T-02の方もrangeの範囲が間違っているので修正します。
RT-T-02(config-router)# no bgp listen range 192.168.22.0/26 peer-group SERVERS
RT-T-02(config-router)# bgp listen range 192.168.22.192/26 peer-group SERVERS
2つ目の問題であるSVの実アドレスが広報されていないことは、BGPの確立後にIP Anycastのアドレスに対して通信を行った際に、届かない時にあれ?って思うことで気づくかと思います。
SV-01からIP AnycastのアドレスへPingを打った時のPing RequestとPing replayのパケットの気持ちになった時にIP Anycastのアドレスへの経路は広報されて届きますが、戻りの経路であるSV-01への経路が広報されていないことに気づくと思います。
なので、SV01~06までの経路を広報するための設定を追加していきましょう。
やり方は色々あると思いますが、おそらく1番簡単な設定を紹介したいと思います。
RT-T-01,02に以下の設定を追加します。
ip prefix-list DC_LOCAL_SUBNET seq 10 permit 192.168.0.0/16 ge 26
このprefix-list DC_LOCAL_SIBNETはroute-map ACCEPT_DC_LOCALにて許可されています。さらに、ACCEPT_DC_LOCALはredistribute connectedのroute-mapとして使われており、RT-T-01,02のconnected経路は以下の3つがあります。
C>* 10.1.0.21/32 is directly connected, lo, 00:45:31
C>* 172.20.20.0/24 is directly connected, eth0, 00:45:32
C>* 192.168.11.64/26 is directly connected, eth3, 00:45:31
eth3の192.168.11.64/26
はSVとネットワークを共有している部分なので上の設定を入れて経路の広報をすることが1番簡単かなと思います。また、RT-T-02にも同様の問題が起きていることや、DateCenterのネットワークを模したということで設定作業の効率化という意味で同じ設定内容にして自動化することまで考えると、上記の設定が良いのかなと考えています。
SVのアドレスがBGPで広報されていることが確認でき、Pingが通るようになります。
RT-T-01# show ip route
B>* 192.168.22.192/26 [20/0] via fe80::a8c1:abff:fe6b:f1e5, eth2, weight 1, 00:01:18
* via fe80::a8c1:abff:feff:e913, eth1, weight 1, 00:01:18
RT-T-02# show ip route
B>* 192.168.11.64/26 [20/0] via fe80::a8c1:abff:fe47:c049, eth2, weight 1, 00:02:07
* via fe80::a8c1:abff:fe52:febf, eth1, weight 1, 00:02:07
Discussion