现在,我想为 iptables 动态加载一个 ip 列表文件。该 ip 列表文件是接受主机,默认丢弃。例如,
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 列表是动态的,我是否可以像下面这样操作,
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,将规则插入到链的头部。如何实现动态加载ip列表文件?
答案1
您不能简单地向参数提供文件名-s
。如果您只有几个地址(大约 10 个),则可以使用脚本添加多个规则:
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