社員ブログ

2023.02.01 技術部情報 展示会その他

【MiraiNET】JANOG51 NETCON問題解説 Level 2-3

みなさんこんにちは。ミライネット技術部 開発チームの篠田です。
かなり久しぶりの登場となりますが、今回はJANOG51で開催されましたNETCONに
問題作成者として参加しましたので、作成した問題の解説を記事として作成します。
私の作成した問題は以下の2問です。
Level 2-3 NTPによる時刻同期問題 (本エントリー)
Level 2-4 OSPF経路調整問題 ※別記事にて解説します
本エントリーでは Level 2-3 について解説を行いたいと思います。

問題

R1にはNTPSV1をNTPサーバーとして時刻同期する設定がされていますが、
時刻同期できていません。
原因を調査し、R1がNTPSV1に同期するように修正しなさい。

コンフィグ
R1
R2

技術要素

  • static route
  • NTP
  • ACL

制限事項

  • コンフィグを修正できるのはR1のみ
  • R2は設定変更不可(実行できるコマンドの制限あり)
  • NTPSV1へのSSH接続はできません

問題解説

この問題ではR2のACLによりR1がNTPSV1に時刻同期できないのを修正する問題となっております。


R1の設定は下記の通り

R1#sh run | se ntp
ntp server 192.168.2.123 maxpoll 3

トポロジー内の機器のIPを確認すると下図の通り設定されています。

R1からNTPSV1に対してpingを実行すると応答が返ってきます

R1#traceroute 192.168.2.123
traceroute to 192.168.2.123 (192.168.2.123), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 1.548 ms 1.444 ms 1.426 ms
2 192.168.2.123 (192.168.2.123) 1.468 ms 1.456 ms 1.853 ms

R1#
R1#ping 192.168.2.123
PING 192.168.2.123 (192.168.2.123) 72(100) bytes of data.
80 bytes from 192.168.2.123: icmp_seq=1 ttl=63 time=0.997 ms
80 bytes from 192.168.2.123: icmp_seq=2 ttl=63 time=0.824 ms
80 bytes from 192.168.2.123: icmp_seq=3 ttl=63 time=0.721 ms
80 bytes from 192.168.2.123: icmp_seq=4 ttl=63 time=0.718 ms
80 bytes from 192.168.2.123: icmp_seq=5 ttl=63 time=0.676 ms

— 192.168.2.123 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4ms
rtt min/avg/max/mdev = 0.676/0.787/0.997/0.117 ms, ipg/ewma 1.020/0.885 ms

R2以降で問題が発生していないか確認すると、R2に怪しいACLが設定されていることが分かります


RP/0/RP0/CPU0:R2#sh run
(省略)
ipv4 access-list j51
10 deny udp 192.168.1.0/24 any eq ntp
20 deny tcp 192.168.1.0/24 any eq 123

30 permit ipv4 any any
!
interface MgmtEth0/RP0/CPU0/0
ipv4 address 172.20.20.4 255.255.255.0
!
interface GigabitEthernet0/0/0/0
ipv4 address 192.168.1.2 255.255.255.0
ipv4 access-group j51 ingress
!
interface GigabitEthernet0/0/0/1
ipv4 address 192.168.2.2 255.255.255.0
!

R2のGi0/0/0/0で192.168.1.0/24からのNTP用通信がフィルタリングされている為
R1が送信したパケットがNTPSV1に届かず、R1はNTPSV1に同期できていないようです。
R2は設定変更ができないので、R1の設定変更だけで何とかするしかありません。
R2のACLを見ると192.168.1.0/24からのNTP用通信以外は制限されていないようなので、
このACLをパスする方法を考えます。

R2のルーティングテーブルを確認すると

RP/0/RP0/CPU0:R2#sh ip ro
(省略)
Gateway of last resort is not set

C 172.20.20.0/24 is directly connected, 00:21:34, MgmtEth0/RP0/CPU0/0
L 172.20.20.4/32 is directly connected, 00:21:34, MgmtEth0/RP0/CPU0/0
S 192.0.2.1/32 [1/0] via 192.168.1.1, 00:21:33 
C 192.168.1.0/24 is directly connected, 00:21:33, GigabitEthernet0/0/0/0
L 192.168.1.2/32 is directly connected, 00:21:33, GigabitEthernet0/0/0/0
C 192.168.2.0/24 is directly connected, 00:21:33, GigabitEthernet0/0/0/1
L 192.168.2.2/32 is directly connected, 00:21:33, GigabitEthernet0/0/0/1

R1のE1をnext-hopにした192.0.2.1/32のstatic routeが設定されています。
R1側にこのIPは設定されていませんが、このIPを使ってNTP用の通信をすることができれば、
先ほどのACLをパスすることができそうなので
R1にLoopbackインターフェースを作成し、先ほどのIPを設定します
R1#conf t
R1(config)#int lo0
R1(config-if-Lo0)#ip add 192.0.2.1/32

R1#ping 192.168.2.123 source 192.0.2.1
PING 192.168.2.123 (192.168.2.123) from 192.0.2.1 : 72(100) bytes of data.
80 bytes from 192.168.2.123: icmp_seq=1 ttl=63 time=0.871 ms
80 bytes from 192.168.2.123: icmp_seq=2 ttl=63 time=0.663 ms
80 bytes from 192.168.2.123: icmp_seq=3 ttl=63 time=0.739 ms
80 bytes from 192.168.2.123: icmp_seq=4 ttl=63 time=0.750 ms
80 bytes from 192.168.2.123: icmp_seq=5 ttl=63 time=0.667 ms

— 192.168.2.100 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4ms
rtt min/avg/max/mdev = 0.663/0.738/0.871/0.075 ms, ipg/ewma 1.001/0.802 ms

Loopbackインターフェースに設定したIPからNTPSV1(192.168.2.100)宛にpingを実行すると
ちゃんと応答が返ってくるので、ルーティングの問題はなさそうです。
ACLのフィルタ対象である192.168.1.0/24以外のIPでNTPSV1と通信できることまで確認できたので、
あとはこのIPを使ってNTPSV1に同期する設定を行います。
現在の設定だとNTPSV1(192.168.2.123)宛の通信はR1のE1インターフェースからR2のGi0/0/0/0インターフェースへと送信される為、
NTP通信用パケットのソースアドレスは192.168.1.1になります。
このソースアドレスを192.0.2.1に変更する為、下記の設定を行います。
R1#conf t
R1(config)#ntp local-interface lo0

これでNTP通信用のソースアドレスは192.0.2.1になり、R2のACLをパスすることができます。

ということで状態を確認すると・・・・

R1#sh ntp associations

remote refid st t when poll reach delay offset jitter
======================================================================
*192.168.2.123 210.173.160.57 3 u 6 8 377 1.151 0.719 0.198

無事に時刻同期できました。
※別解ですがR1の管理用インターフェースを使って時刻同期を実現された方が1名いらっしゃいました
(なるほどと思いました)
最後に
本問題ではルータ自身が発信するパケットのソースアドレスをテーマにしたのと、
今回のNETCONからcontainerlabが採用されたので、コンテナを活用した問題を作ってみたい!
ということからNTPサーバーをコンテナ上で実行し問題を作成してみました。
多くの人に挑戦していただけたのですごく楽しかったです。