![编辑多个 iptables 规则](https://linux22.com/image/143024/%E7%BC%96%E8%BE%91%E5%A4%9A%E4%B8%AA%20iptables%20%E8%A7%84%E5%88%99.png)
我正在使用 iptables 来允许某些 IP(用户)允许特定端口。就像这样——
ACCEPT tcp -- 1.2.3.4 anywhere tcp dpts:4358:4362
因此,对于每个 IP 地址,我都允许使用多个端口范围。
问题是一些用户拥有动态 IP,我尝试让他们注册动态 dns 服务,但 iptables 会自动将该域解析为他们当前的 IP,所以现在我坚持使用裸 IP。
问题是,如何更新多个规则IP?比如在 notpad 中查找和替换)
答案1
iptables
只能在内核表中存储 IP 地址,这就是它在运行时将主机名解析为当前 IP 地址的原因。
处理 IP 地址更新的唯一方法是删除旧规则并添加新规则。我建议将这些规则添加到单独的表中,以便仅需要清除并重新加载单独的表。就像是:
设置:
iptables -N DYNUSERS
iptables -A INPUT -j DYNUSERS
构建 DYNUSERS 表:
iptables -F DYNUSERS
iptables -A DYNUSERS -s dyndns1.example.com -p tcp --dport 4358:4362 -j ACCEPT
iptables -A DYNUSERS -s dyndns2.example.com -p tcp --dport 4358:4362 -j ACCEPT
当 IP 地址发生变化时,只需再次运行最后一部分即可。也许每隔一小时左右安排一次。