iptables 允许 dyndns 域名和自动更新规则

iptables 允许 dyndns 域名和自动更新规则

我已在 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 规则。

答案1

简而言之:不,更新iptables规则的唯一方法是替换它(iptales -R ...)或删除它并使用更新的 IP 地址添加一个新规则(iptables -D ...后跟iptables -A ...)。

这篇博文讨论该问题并提出解决方案。

答案2

但是当我的调制解调器重新启动时,我无法连接到这些允许的端口,因为公共 IP 会随着调制解调器重新启动而改变,并且不会在服务器上的 iptables 中更新。

即使您正在使用域名应用规则,iptables 也会解析到给定域的公共 IP,并使用该公共 IP 应用规则。因此,每次调制解调器重启或 ISP IP 租约到期时,您都必须使用新分配的公共 IP 更新 iptables。

如果列出 iptables 规则,那么就会造成混淆,因为您会看到使用精确域名应用的规则。

iptables -L

为了更清楚起见,请将 iptables 规则保存到一个文件中并进行验证。您可以找到域名的解析 IP,而不是域名。

iptables-save > /tmp/iptables.rules

答案3

你可以用很多不同的方法来实现你想要的。例如,挖掘你的 Dyndns IP:

YOURIP="$(dig yourdomain.ddns.net +short A)"

然后使用 $YOURIP 变量定期检查你的 IP,并通过 cron 命令添加防火墙规则

Dig 是一款著名的查询 DNS 服务器实用程序,如果它不容易获得,您可以轻松地将其安装在您的 Linux 发行版中

相关内容