Linux iptables检测是否已存在规则避免重复插入规则

项目中需要用脚本去插入链规则,但是重复调用shell脚本可能导致重复插入,新版本可以用-C选项进行检测,老版本可以筛选判断一下再做处理。

一、检测方式

1、iptables新版本中有 -C 选项进行检测。

# iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT
iptables: Bad rule (does a matching rule exist in that chain?).
# echo $?
1
# iptables -A INPUT -p tcp --dport 8080 --jump ACCEPT
# iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT
# echo $?
0

2、对于早期的iptables可以用下面命令来检测

# iptables-save | grep -- "-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT"

二、避免重复插入方法

为了 通用性,采用早期iptables能使用的方式,具体操作如下,先用iptables-save命令获取,做判断不存在再插入就可以避免重复插入

local client_limit_deal=`iptables-save | grep -- "-A PREROUTING -i br-lan -j CLIENT_LIMIT_DEAL"`
if [ -z client_limit_deal ] ;
then
	iptables -t mangle -I PREROUTING -i br-lan -j CLIENT_LIMIT_DEAL
fi

三、其他

可以删除后再插入,如果不知道删除的规则可以使用iptables-save查看,根据规则删除即可,如:

c 复制代码
//mangle表的PREROUTING链中规则如下:
Chain PREROUTING (policy ACCEPT 4127 packets, 345K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 2109  188K PACKAGE_PRI_DEAL  all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           
 4127  345K fwmark     all  --  *      *       0.0.0.0/0            0.0.0.0/0  
 
//iptables-save查到对应的规则为
-A PREROUTING -i eth1 -j PACKAGE_PRI_DEAL
//删除可以按照如下写法:$DEV为对应的网口
iptables -t mangle -D PREROUTING -i $DEV -j PACKAGE_PRI_DEAL
相关推荐
188_djh6 天前
# VirtualBox中安装的CentOS 6.5网络设置为NAT模式时,怎么使用SecureCRT连接CentOS6.5系统?
iptables·nat模式·centos6.5·virtualbox·securecrt·centos-6.5
G皮T2 个月前
【Kubernetes】虚拟 IP 与 Service 的代理模式
iptables·kubernetes·代理模式·service·clusterip·ipvs·kube-proxy
祈心无尘3 个月前
Netfilter之连接跟踪(Connection Tracking)和反向 SNAT(Reverse SNAT)
服务器·网络·iptables·apache·netfilter·网络空间
Tassel_YUE3 个月前
iptables配置实现NAT(随手记)
linux·运维·服务器·网络·iptables
Monster✺◟(∗❛ัᴗ❛ั∗)◞✺3 个月前
firewalld(7)NAT、端口转发
linux·运维·服务器·网络·iptables·nat·firewalld
XH722DF3 个月前
iptables防火墙
linux·iptables
Monster✺◟(∗❛ัᴗ❛ั∗)◞✺3 个月前
firewalld(6)自定义server、ipset
linux·运维·服务器·网络·iptables·防火墙·firewalld
tonyhi64 个月前
Ubuntu server 24 (Linux) Snort3 3.2.1.0 Guardian IPtables 联动实战 主动防御系统(ids+ips)
linux·ubuntu·iptables·ips·guardian·snort·ids联动
明月登楼4 个月前
使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单
iptables·白名单·ip地址·ipset·cdn ip节点
敲得码黛4 个月前
Docker桥接网络分析
运维·网络·docker·容器·iptables