Ciscoルータ PAT(NAT)環境でのNTPのポート変換について

CiscoルータでのPAT(NAT)環境で配下のPCからNTPを使おうとしたらハマったのでそのメモです。

PAT(NAT)環境でのポート変換でなぜかウェルノウンポートにして外に通信してしまう事象が発生しました。

構成

NTPサーバ(NICTやmfeedなど)ーーインターネットーーCiscoルーターーーークライアント(PCなど)複数台

  • NTPサーバのIP : 1.1.1.1(仮)
  • GlobalIP(NAT後のIP) : 2.2.2.2(仮)
  • クライアントのIP : 10.0.0.1-100

グローバルIPは1つしかないのでクライアントからNTPサーバ宛のアクセスは全てマスカレードしています。

普通のPAT(NAT)の挙動

show ip nat translationsで確認

Inside globalInside local備考
1.1.1.1:4728910.0.0.1:47289ポートが空いていれば内部ローカルと同じポート番号で外に出ていく
1.1.1.1:4729010.0.0.2:47289ポートが埋まっている場合は別のポート番号(ウェルノウンポート以外)で出ていく

NTPアクセス時の挙動

show ip nat translationsで確認

Inside globalInside local備考
1.1.1.1:12310.0.0.1:123ポートが空いていれば内部ローカルと同じポート番号で外に出ていく
1.1.1.1:2010.0.0.2:123ポートが埋まっている場合は別のポート番号(ウェルノウンポート)で出ていってしまう

問題点

クライアントの送信元ポートが123(NTP)の場合なぜかウェルノウンポートに変換されます。
このウェルノウンポートを使って出ていくのが結構やっかいで、場所によっては時間を取らせてくれません。
今回の例で20番ポートに変換されてしまったクライアントはNATテーブルが空くまでひたすらエラーを繰り返します。

結論

Ciscoルータの動作仕様とのことです。
これの対策はStatic NATを使用するしかないため、PAT環境では対処ができません。

ワークアラウンド

NATテーブルの保持時間がデフォルトで10分(6000秒)なので、これを10秒など極端に短くすることでクライアント同士のNTP取得タイミングがかぶる確率を減らすくらいしかなさそうです。

最新情報をチェック!