みなさんこんにちは。ミライネット技術部 開発チームの篠田です。
かなり久しぶりの登場となりますが、今回はJANOG51で開催されましたNETCONに
問題作成者として参加しましたので、作成した問題の解説を記事として作成します。
私の作成した問題は以下の2問です。
Level 2-3 NTPによる時刻同期問題 (本エントリー)
Level 2-4 OSPF経路調整問題 ※別記事にて解説します
本エントリーでは Level 2-3 について解説を行いたいと思います。
問題
R1にはNTPSV1をNTPサーバーとして時刻同期する設定がされていますが、
時刻同期できていません。
原因を調査し、R1がNTPSV1に同期するように修正しなさい。
制限事項
- コンフィグを修正できるのは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サーバーをコンテナ上で実行し問題を作成してみました。
多くの人に挑戦していただけたのですごく楽しかったです。