如何在不中断现有连接的情况下重新加载IPTable?

我将自动添加和删除条目到脚本(添加不同IP地址的端口80/443)。 如果我运行这个脚本,我假设连接将不间断,除非我删除一个IP。 我在这个想法中纠正了吗?

这是我的脚本:

iptables --flush iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp --dport ssh -j ACCEPT iptables -A INPUT -p tcp --dport 80 -s 1.2.3.4 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -s 1.2.3.4 -j ACCEP iptables -A INPUT -p tcp --dport 80 -j DROPT iptables -A INPUT -p tcp --dport 443 -j DROP iptables -A INPUT -j DROP iptables -A OUTPUT -j ACCEPT iptables -A INPUT -j LOG iptables -A INPUT -j REJECT 

有几种方法可以将新的规则添加到当前的链中。 例如;

  • 你应该写一个shell脚本来读取文件中的ip地址,并将它们插入到链中。

     #!/bin/bash for ip in `cat ipadresses.txt` do iptables -I INPUT -p tcp -s $ip -m multiport --dports80,443 -j ACCEPT done 
  • 您应该将当前规则保存到文件中,并直接在文件中添加规则,并再次从该文件恢复规则。

     /sbin/iptables-save > /path/to/save/iptables.rules or /sbin/iptables save > /path/to/save/iptables.rules 

    使用任何文本编辑器编辑iptables.rules后,您应该复制任何行并更改源IP地址。

      # Generated by iptables-save v1.4.14 on Tue Aug 19 00:22:21 2014 *mangle :PREROUTING ACCEPT [9809:4375246] :INPUT ACCEPT [9809:4375246] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4718:585599] :POSTROUTING ACCEPT [4718:585599] COMMIT # Completed on Tue Aug 19 00:22:21 2014 # Generated by iptables-save v1.4.14 on Tue Aug 19 00:22:21 2014 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 1.2.3.4/32 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j DROP -A INPUT -j DROP -A INPUT -j LOG -A INPUT -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -j ACCEPT COMMIT # Completed on Tue Aug 19 00:22:21 2014 # Generated by iptables-save v1.4.14 on Tue Aug 19 00:22:21 2014 *nat :PREROUTING ACCEPT [6:352] :POSTROUTING ACCEPT [70:4526] :OUTPUT ACCEPT [70:4526] COMMIT # Completed on Tue Aug 19 00:22:21 2014 

编辑文件后,您应该通过恢复规则

  iptables-restore < /path/to/save/iptables.rules 

结论是;

  • 你不需要刷新所有的规则来添加新的IP,只需插入新的规则。
  • 你有一个普遍的下降规则,所以你不需要更多的规则放弃有80和443目标端口的口袋里。
  • 你不需要每次都执行iptables -I命令。