質問
コマンド ntpdate でntpサーバーを照会する場合、 -u 引数を使用して、ソースポートを無制限ポート(ポート1024以上)にできます。
バックグラウンドで実行することを意図したntpdでは、このオプションをオンにする方法を見つけることができないようです。そのため、ソースポートは常に123です。ファイアウォールの設定でひどく遊んでいます。
ランダムソースポートを使用するための ntp.conf に構成オプションはありますか?
解決
これは可能だとは思わない... ntpトラブルシューティングページ:
ntpdを実行する場合、ntpdが双方向でUDPポート123に完全に無制限にアクセスできるように、network / firewall / NATを修正する必要があります。
これが不可能な場合は、ファイアウォール自体でntpdを実行し、双方向でUDPポート123に完全に無制限にアクセスし、内部クライアントに時間を提供できるようにする必要があります。
それが不可能な場合は、必要なハードウェアを購入して自分のコンピューターに接続し、独自のStratum 1タイムサーバーを実行するか、あらかじめパッケージ化されたStratum 1タイムサーバーを購入するしかありません。
他のヒント
私は公式のNTPDをOpenNTPDに置き換えることでこれを解決することができました。公式のNTPDはUDPポート123に固定されていますが、OpenNTPDは非特権ポートを使用します。
以前にこの問題が発生したことがあり、解決策が見つかりませんでした。最終的には、ntpdateを1時間に1回実行するエントリをcrontabに追加するだけになりました。私の時計は1時間に1秒以上ドリフトすることはないので、これは私が行うあらゆることに十分な解像度を与えます。
NTPポートを変更することはできませんが、iptables cmdを追加してVPNポート経由でリダイレクトすることはできます。
詳細: http://openvpn.net/archive/openvpn- users / 2007-11 / msg00223.html
@Andy_Whitfieldが書いたように、ntpdはこれを行うことができません。しかし、 OpenNTPD やクロニー。私の知る限り、ChronyはAndroidでも使用されています。
私の設定では、chronyを使用しています。リモートサーバーへの問い合わせに非特権ポートを使用します。この手法では、NATを渡す可能性がはるかに高くなります。 ntpdate -q
もサーバーへのクエリに使用する方法と同じメカニズムですが、非特権ユーザーとして呼び出された場合のみです。
たまに動作しない主な問題は、多くのルーターがNTPを実装して内部クロックを設定していることです。これらのデバイスでは、ポートが使用されているため、NATを使用できません。これは、デバイスがNTPクエリに応答しない場合にも当てはまります。
ntpdを実行しているホストでソースNATを使用して、123のソースポートを1024を超えるポート番号に置き換えることができます。