![带有动态 IP 列表的 Iptables](https://linux22.com/image/645395/%E5%B8%A6%E6%9C%89%E5%8A%A8%E6%80%81%20IP%20%E5%88%97%E8%A1%A8%E7%9A%84%20Iptables.png)
我们在欧盟数据中心有 5 台服务器,在美国数据中心有 5 台服务器。所有服务器都安装了一些 Redis 实例,并且为列表中的 IP 地址打开了 Redis 端口(通过iptables
)。所有服务器上的所有 Redis 实例都在相互通信。
添加新服务器确实很麻烦,因为我应该授予所有服务器上新 IP 地址对 Redis 端口的访问权限。
有什么方法可以避免执行此例行操作?第一种简单的方法是获取一些 IP 地址列表并iptables
根据此列表刷新规则。或者也许有更优雅的解决方案?
答案1
只是我的一点想法:
创建一个 ipset,在 iptables 中创建所需的规则并匹配该集合,然后只需更新该集合以添加新 ip,而无需再次修改 iptables 规则。最后一步可以通过脚本轻松自动完成,但手动完成也很快。(我使用它来下载和过滤坏 ip 列表)。
ipset -N myiplist chooseYourType
-A INPUT -m set --match-set myipslist src -j ACCEPT
ipset add myipslist 1.2.3.4
并且不要忘记,ipset 就像 iptables 规则一样,它们需要在服务器重启后重新加载。
答案2
这看起来就像是 Chef 或 Puppet 要做的工作。下面是它的 puppet 库:https://forge.puppetlabs.com/puppetlabs/firewall以下是 Chef 的介绍:https://github.com/opscode-cookbooks/iptables
一旦你开始使用 Chef 或 Puppet 这样的工具,你就会发现很多其他事情都可以用它自动化。所以如果你现在没有这样的工具,那么花点时间和精力去弄一个,标准化你的配置、部署、修补等,是非常值得的。这确实需要一点时间,但就像我说的,从长远来看,这是值得的。