我已经在 dyndns 域中注册了动态更改的公共 IP 地址,以便与 iptable 规则一起使用。在服务器上,我在 iptables 配置中允许此域的一些端口,如下面的条目:
-A INPUT -s mycompany.dyndns.com -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s mycompany.dyndns.com -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s mycompany.dyndns.com -p tcp -m tcp --dport 21 -j ACCEPT
但是,当我的调制解调器重新启动时,我无法连接到这些允许的端口,因为公共 ip 会随着调制解调器重新启动而更改,并且不会在服务器上的 iptables 中更新。是否有任何选项可以自动更新服务器上的 iptable 规则。
简而言之:不,更新
iptables
规则的唯一方法是替换它 (iptales -R ...
) 或删除它并使用更新的 IP 地址添加一个新规则 (iptables -D ...
后跟iptables -A ...
)。这篇博文讨论了这个问题并提出了一个解决方案。
即使您使用域名应用规则,iptables 也会在此时解析给定域的公共 IP,并使用该公共 IP 应用规则。因此,每次调制解调器重新启动或 ISP IP 租用时间到期时,您都必须使用新分配的公共 IP 更新 iptables。
如果您列出 iptables 规则,那么它会令人困惑,因为您可以看到您使用确切域名应用的规则。
为了清楚起见,请将 iptables 规则保存到一个文件并验证。您可以找到您的域的解析 IP 而不是域名。
你可以通过许多不同的方式实现你想要的。例如,挖掘你的 Dyndns ip:
然后使用 $YOURIP 变量定期检查您的 IP 并通过 cron 命令添加防火墙规则
Dig 是一个众所周知的查询 DNS 服务器的实用程序,如果它不可用,您可以轻松地将它安装在您的 Linux 发行版中