使用 ntpdate 命令查询ntp服务器时,我可以使用 -u 参数使源端口成为不受限制的端口(端口1024及以上)。
使用ntpd,它意味着在后台运行,我似乎无法找到启用此选项的方法。所以源端口总是123.它在我的防火墙配置中可怕地玩。
ntp.conf 中是否有配置选项使其使用随机源端口?
答案 0 :(得分:11)
听起来不可能......请参阅ntp troubleshooting page:
如果您要运行ntpd,则需要修复网络/防火墙/ NAT,以便ntpd可以在两个方向上完全无限制地访问UDP端口123.
如果无法做到这一点,您可能需要在防火墙本身上运行ntpd,以便它可以在两个方向上完全无限制地访问UDP端口123,然后让它为您的内部客户端提供时间。
如果无法做到这一点,那么您唯一的其他选择可能是购买必要的硬件以连接到您自己的一台或多台计算机并运行您自己的Stratum 1时间服务器或购买预先打包的Stratum 1时间服务器。
答案 1 :(得分:6)
我设法通过用OpenNTPD替换官方NTPD来解决这个问题。官方NTPD固定为UDP端口123,而OpenNTPD使用非特权端口。
答案 2 :(得分:2)
之前我遇到过这个问题,但找不到解决方法。我最后只是在每小时运行一次ntpdate的crontab中添加一个条目。对于我所做的任何事情都能提供足够好的分辨率,因为我的时钟每小时不会超过1秒钟。
答案 3 :(得分:1)
您无法更改NTP端口,但可以添加iptables命令以通过VPN端口重定向。
详细信息:http://openvpn.net/archive/openvpn-users/2007-11/msg00223.html
答案 4 :(得分:1)
正如@Andy_Whitfield所写,ntpd无法做到这一点。但也有OpenNTPD和Chrony等替代方案。 AFAIK,Chrony也被Android使用。
在我的设置中,我使用chrony。它使用非特权端口来询问远程服务器。这种技术有更多机会通过NAT。它也是ntpdate -q
用于查询服务器的方式相同的机制,但仅在被称为非特权用户时才使用。
我认为,为什么它有时不起作用的主要问题是很多路由器都有NTP实现自己设置内部时钟。在这些设备上,端口正在使用中,因此无法进行NAT操作。如果设备不响应NTP查询,甚至可能是这种情况。
答案 5 :(得分:0)
您可以在运行ntpd的主机上使用源NAT来替换端口号大于1024的123源端口。