如何dynamic地将地址列表加载到iptables中?

现在我想为iptablesdynamic加载一个ip列表文件,ip列表文件是accept主机,默认是drop。 例,

iptables -A INPUT -p tcp --dport 1111 -s 2.2.2.2 -j ACCEPT iptables -A INPUT -p tcp --dport 1111 -j DROP iptables -A INPUT -j ACCEPT 

我的意思是打开一个端口,但IP列表是dynamic的,我是否可以像下面这样做,

 iptables -A INPUT -p tcp --dport 1111 -s ip-list-file -j ACCEPT iptables -A INPUT -p tcp --dport 1111 -j DROP iptables -A INPUT -j ACCEPT ip-list-file: 2.2.2.2 3.3.3.3 

有什么想法? 谢谢 。

=========================================

我看Iptables规则有时会自动重置 ,我可以使用-I,将规则插入到链的头部。 如何实现dynamic加载ip列表文件?

你不能简单地给-s参数提供一个文件名。 如果您只有几个地址(大约10s),则可以使用脚本添加多个规则:

 while read IP; do iptables -A INPUT -p tcp --dport 1111 -s $IP -j ACCEPT done < ip-list-file 

如果你有很多的地址,你应该使用ipset机制:

 ipset create list0 iphash while read IP; do ipset add list0 $IP done < ip-list-file iptables -A INPUT -p tcp --dport 1111 -m set --match-set list0 src