对于我的住宅服务,我将 ISP 更改为 Zoom/Armstrong。 此后不久,我的 NTP 守护进程停止工作。 我深入挖掘并诊断出问题所在:
非特权端口正在退出。例如,当我运行“ntpdate”时,我会从高权限的非特权端口退出,并在 UDP 123 上获得响应。这很好。但是,“ntpd”守护进程希望从 123 退出并在那里获得回复。这肯定是一个常见问题,因为它直接在NTP 故障排除指南。
为了看看会发生什么,我给 Armstrong 的一般支持地址写了一封详细的电子邮件。他们几乎立即回复了完整的技术答案!他们封锁了所有 <1024 端口,除了几个支持出站 VPN 的端口。
因此,问题是:
我可以使用 IPtables 将我的出站 UDP 123 重写为 2123 或类似的东西吗?如果这样做,是否需要有相应的 2123->123 规则来转换回复?这看起来像 NAT,但使用端口,而不是地址。我试过了,但似乎无法让 iptables 做我想做的事。我不确定这是我的技能不足,还是我尝试了错误的解决方案。
没错,我可以从 cron 运行 ntpdate,但这会失去 NTP 的所有调整智能。
答案1
尝试此规则(未经测试):
iptables -t nat -A POSTROUTING -p udp --sport 123 -j MASQUERADE --to-ports 1025-65535
答案2
您可能可以使用 mangle 表来实现这一点,但更常见的情况是,为什么不使用 state 模块呢?我认为这是一种具有以下规则的标准 iptables 配置:
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
这样,防火墙上就会出现漏洞,以阻止返回的流量......
编辑:
哦,我错过了那是你的 ISP 阻止,好吧,那只是一个垃圾 ISP,保留这个答案以防它可以帮助其他发现类似问题(但不是你的特定问题)的人。