专栏首页linux百科小宇宙iptables删除命令中的相关问题
原创

iptables删除命令中的相关问题

最近在做一个V*P*N中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。

iptables: Bad rule (does a matching rule exist in that chain?).

我就纳闷了,怎么会出现这个问题,按照官方的文档也有错?

官方文档地址

解决方法:

1. 按行删除

如果按照行号删除,就不会有这篇文章了,当然如果你删除前就知道了行号,那么就可以使用一下命令

iptables -t $table -D POSTROUTING 2

-t: 后面接的是要操纵的表。表包括四个,

注意默认的可能不是你的table

,具体看官方文档地址

-D: 代表删除

POSTROUTING: 用于源地址转换(SNAT),这里需要填你的规则连接。

然后后面接行号

iptables -t $table -L -n --line-numbers

2. 根据匹配规则删除

官方文档中采用的的

精确匹配删除

。所以你不能只制定一个筛选条件。必须给出规则的每一个细节,

和你当初添加该规则时一样,和添加动作唯一不同的是,你要把-A改成-D

。这种精确匹配删除的成功依赖的就是用户提供的所有match字段,target字段必须和内核中保存的一模一样,精确到字节级别的匹配。如果哪怕有一个字节不匹配,就会有二义性,删除失败。

3. 整表整链删除

这个太极端了,

慎用

iptables -t $table -F

4. 使用Python-iptables进行操作

本来我这接口就是用python写的,所以自然就想到使用python-iptables来进行规则的删除。这样就可以

不用精确匹配了

。但问题是无法在阻塞态的时候使用

==

但是可以重启一个单独的脚本运行

==

python-iptables的官方文档

import iptc

table = iptc.Table(iptc.Table.NAT)

table.autocommit = False # 不加亦可,会自动提交,此处是手动

chain = iptc.Chain(table, "POSTROUTING")

for rule in chain.rules:

if rule.src == f"{network_segment}/255.255.255.0":

chain.delete_rule(rule)

table.commit()

table.autocommit = True

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker 删除&清理容器和镜像相关命令

    在 Docker 构建镜像过程产生的临时镜像,或者遗留下来的垃圾镜像,可以通过以下命令删除。

    雪梦科技
  • iptables安全使用指南

    修改iptables之前,好的习惯是先备份(为什么?你尝试过修改iptables后无法登录,或者重启iptables服务后原规则丢失吗?)

    zero000
  • lnmp 添加-列出-删除虚拟主机相关命令

    魏艾斯博客www.vpsss.net
  • linux中iptables配置文件及命令详解详解

    直接改iptables配置就可以了:vim /etc/sysconfig/iptables。

    拓荒者
  • Linu命令行:iptables设置详细

    无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。

    用户5640963
  • [译]使用iptables控制网络流量

    iptables是一个允许用户配置特定规则的应用程序,这些规则由将由内核netfilter框架强制执行。它充当数据包过滤器和防火墙,可根据端口,协议和其他标准检...

    杜逸先
  • iptables交叉编译记事

    为了确认生出的.config文件合适,使用diff命令,不做更改保存.config,确定.config文件是否一致。

    嘘、小点声
  • Ubuntu与Debian下apt-get软件安装与删除的相关命令

    安装软件 命令: apt-get install softname1 softname2 softname3…… 卸载软件 命令: apt-get rem...

    98k
  • Linux下iptables 禁止端口和开放端口

    1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。 下面是命令实现:

    拓荒者
  • Linux中移除(删除)符号链接的命令

    你可能有时需要在 Linux 上创建或者删除符号链接。如果有,你知道该怎样做吗?之前你做过吗?你踩坑没有?如果你踩过坑,那没什么问题。如果还没有,别担心,我们将...

    砸漏
  • linux中iptables如何删除一条规则

    linux中iptables删除一条规则的方法:1、打开linux终端;2、在终端命令行中输入“iptables -L -n”命令查看出当前的防火墙规则;3、输...

    用户4988085
  • Linux之防火墙服务和rpm管理及光盘挂载

    兮动人
  • iptables命令 原

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

    拓荒者
  • 教大家在如何Centos7系统中安装JDK、Tomcat、Mysql

    1、jdk的安装 2、tomcat的安装 3、mysql的安装 远程工具:SSH Secure File Transfer Client

    Java学习
  • Iptables 介绍与使用

    连接跟踪是许多网络应用的基础。例如,Kubernetes Service、ServiceMesh sidecar、 软件四层负载均衡器 LVS/IPVS、Doc...

    Se7en258
  • Linux网络相关

    ifconfig命令在CentOS6是自带有的,但是在CentOS7默认是没有的,需要安装net-tools这个包。

    端碗吹水
  • Linux-iptables命令

    netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以...

    小小工匠
  • docker 相关问题和快速使用命令

    外部虽然修改了时区和时间,但是docker容器中的时间并没有修复,所以需要将外部的文件引入到内部里。

    solate
  • 系统日常管理-01

    1. linux系统下的抓包工具 工具tcpdump 格式: tcpdump -nn -i eth0 tcp and host 192.168.0.1 and...

    老七Linux

扫码关注云+社区

领取腾讯云代金券