iptables规则在添加的时候并不会检查该规则是否已经存在,即便已经存在,它还时会再次添加一遍.然而 iptables的匹配规则是按顺序的,这对性能是有一定的影响的。 这里网上找了两种方式来处理这种问题
# 1. 添加时用iptables -C
测试是否存在规则
#!/bin/bash
function check_iptables(){
check=$(echo $@ | sed -e 's/-A/-C/g')
echo $check
iptables $check ;ret=$?
if [ "$ret" -eq 0 ]; then
# exit 0;
echo "a";
else
echo 'b'
#xtables-multi iptables $@;
fi
}
check_iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# 2. shell处理iptables
文件去重复,然后导入生效
#!/bin/bash
cat /etc/sysconfig/iptables|sed -n "G;s/\\n/&&/;/^\\(.*\\n\\).*\\n\\1/d; s/\\n//;h;P">/tmp/iptables
iptables-restore</tmp/iptables
# /etc/init.d/iptables save
iptables-save>/etc/sysconfig/iptables
参考: