iptables的删除命令中的相关问题
最近在做一个VPN中间件的配置工作,在配置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来进行规则的删除。这样就可以不用精确匹配了。但问题是无法在阻塞态的时候使用
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
iptables的删除命令中的相关问题的更多相关文章
- MySQL删除命令_DELETE
单表删除语句: DELETE [LOW_PRIORITY][IGNORE] FROM tbl_name [WHERE where_definition] [ORDER BY ...] ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- CentOS中防火墙相关的命令(CentOS7中演示)
CentOS中防火墙程序主要是firewall和iptables,CentOS7中firewall服务已经默认安装好了,而iptables服务需要自己用yum install iptabes-se ...
- SQLServer 命令批量删除数据库中指定表(游标循环删除)
DECLARE @tablename VARCHAR(30),@sql VARCHAR(500)DECLARE cur_delete_table CURSOR READ_ONLY FORWARD_ON ...
- Redis字符串(STRING)中BIT相关命令
上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令. 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解 ...
- 如何使用CAD删除命令?怎么删除图纸中线段
大家经常使用CAD制图软件来绘制图纸,那在绘制图纸的过程中有时候会出现一些问题,就是图纸中不小心多绘制了一个线段,那要怎么办呢?如何使用CAD删除命令?怎么删除图纸中线段呢?那下面小编就来教教大家具体 ...
- 震惊,当我运行了这条Linux命令后,服务器竟然... (Linux中的删除命令)
震惊,当我运行了这条Linux命令后,服务器竟然... 0X00 写在前面 大家都听说过删库命令rm -rf /*,但是谁又真正实践过呢?但作为一个程序员,不看看这条命令执行后会发生什么,怎么能甘心呢 ...
- 『学了就忘』vim编辑器基础 — 96、末行模式中的相关命令
目录 1.在文档中显示行号 2.是否显示文档内容相关颜色 3.是否将查找的字符串高亮显示 4.是否显示右下角的状态栏 5.是否在左下角显示如"--INSERT--"之类的状态栏 6 ...
- JSON相关知识,转载:删除JSON中数组删除操作
一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = ...
随机推荐
- JSP引擎、JSP容器、Web服务器
JSP引擎与JSP容器指的都是同一样的东西,他们都是用来同一管理和运行Web引用程序的“软件”.常见的JSP引擎有Tomcat.JRun.Resin 广义上来说,JSP引擎是用来管理和运行Web应用程 ...
- k8s云集群混搭模式,可能帮你节省50%以上的服务成本
现在大部分中小企业或团队都是使用云平台来部署自己的服务,如阿里云,亚马逊云等.一般来说,业务的负载都具备一定的规律,比如每天集中在某几个小时,或呈现时间段周期性波峰.波谷交替的现象,如下图 如果使用E ...
- web 前端开发学习路线
初级 HTML 5 HTML 5 与 HTML 4 的区别 HTML 5 新增的主体结构元素 HTML 5 新增的非主体结构元素 HTML 5 表单新增元素与属性 HTML 5 表单新增元素与属性(续 ...
- springboot项目中的普通Session和使用redis存储session
普通session: session store type使用来存放session的存储方式,目前Spring boot中只支持Redis方式, 由于本应用暂无需将session放入redis的需求, ...
- Unity/C#基础复习(5) 之 浅析观察者、中介者模式在游戏中的应用与delegate原理
参考资料 [1] <Unity 3D脚本编程 使用C#语言开发跨平台游戏>陈嘉栋著 [2] @张子阳[C#中的委托和事件 - Part.1] http://www.tracefact.ne ...
- 怎样才算精通Linux
1.掌握至少50个以上的常用命令(包括grep.awk.sed.ps.find等等吧,熟练使用,基础的选项不用man) 2.熟悉Gnome/KDE等X-windows桌面环境操作 3.掌握.tgz.. ...
- Django之静态文件,中间件,admin后台管理
静态文件 静态文件的使用 在 网页使用的css文件,js文件和图片等叫做静态文件.1)在项目下新建静态文件夹 static. 2) 配置静态文件所在的物理目录.Settings.py STATIC_U ...
- 设计模式(C#)——07装饰者模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 在一款战斗类的游戏中,随着故事情节的发展,玩家(即游戏中的主角,下文统一为主角)通常会解锁一些新技能.最初主角只有使 ...
- Java集合框架之TreeSet浅析
Java集合框架之TreeSet浅析 一.TreeSet综述: 1.1TreeSet简介: TreeSet是Java集合框架的重要成员,先来看看TreeSet在jdk1.8中的定义吧: public ...
- 【spring-boot 源码解析】spring-boot 依赖管理
关键词:spring-boot 依赖管理.spring-boot-dependencies.spring-boot-parent 问题 maven 工程,依赖管理是非常基本又非常重要的功能,现在的工程 ...