iptables去重规则

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

参考:

  1. http://bbs.chinaunix.net/thread-1932330-1-1.html
  2. http://blog.csdn.net/dog250/article/details/17886583

--EOF--


>看不到评论?GFW!!!