iptables详解(2)表中规则管理(增删改查)
我们定义了四张表:raw表、mangle表、nat表、filter表,不同的表有不同的功能
filter表用来过滤,允许哪些ip、端口访问,禁止哪些ip、端口访问,表中会有很多链
①禁止ip地址访问我们主机------>发往本机的经过PREROUTING,但是PREROUTING不在filter表中,因此PREROUTING没有过滤能力,只能定义在INPUT链
②转发到另一个地方 则需要在FORWARD链或者OUTPUT链中定义
一、基本操作
1、查看
iptables -t表名 -nvL –line-number
iptables --line -t filter -nvxL INPUT
-t 加表名-L加链名
-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数 -L加上链名
-n 不对ip地址进行反查,直接显示ip地址,加上这个参数显示速度会快很多
-v 输出详细信息,verbose显示详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
-x精确计算
参数解释:
root@ROUTER:~# iptables --line -nvL INPUT
Chain INPUT (policy ACCEPT 6177 packets, 579K bytes)
num pkts bytes target prot opt in out source destination
1 14778 1394K wan_input_chain all -- * * 0.0.0.0/0 0.0.0.0/0
2 14778 1394K lan_input_chain all -- * * 0.0.0.0/0 0.0.0.0/0
policy 表示链的默认策略,默认是ACCEPT,该策略收到了6177个包,iptables -nvxL 可以将省略的k信息显示出来

2、添加
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
1 Append
在指定表的指定链的指定尾部添加一条规则,-A表示在对应链的末尾添加规则,省略-t选项,表示默认操作filter表
命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
2 Insert
在指定链的指定首部添加一条规则,-I默认是表示在对应链的开头添加规则,加上序号后则表示为在当前的序号位置添加一条规则,则底下的规则会往下移一位
命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT
示例操作:
步骤①加入append
iptables -A INPUT -s 192.168.23.242 -j DROP
步骤② 插入insert
iptables -I INPUT 2 -s 192.168.23.242 -j ACCEPT

3、删除
1 具体匹配规则删除
命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作
示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP
2 按--line按删除规则,-D表示删除对应链中的规则
命令语法:iptables -t 表名 -D 链名 规则序号
示例:iptables -t filter -D INPUT 3
3 清空指定表和链中的所有规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
4 清空表中的所有规则
命令语法:iptables -t 表名 -F
示例:iptables -t filter -F 或者
iptables –flush
示例操作:
步骤① 删除匹配条件的规则
iptables -D INPUT -s 192.168.23.242 -j ACCEPT
步骤② 按照 --line 的行号去删除(省去写一大串规则的时间)
iptables -D INPUT 3

4、修改
1 修改指定表中指定链的指定规则,-R要指定对应的链和规则对应的序号和原本匹配的条件
命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
示例:iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT
注意:如果省略-s 等条件则当前的规则的源地址会变成0.0.0.0/0
也可先删掉当前规则,再在同样的位置再 添加同不一样的规则
2 修改指定表的指定链的默认策略(默认动作),并非修改规则
命令语法:iptables -t 表名 -P 链名 动作
示例:iptables -t filter -P FORWARD ACCEPT
示例操作
步骤① 修改规则
iptables -R INPUT 3 -j ACCEPT

注意 如果要进行更改规则一定要指定-s 源地址 ,如果有多个匹配规则 则都需要指定
因为在前面的-R 没有指定对应的地址,所以当前的修改地址都变成0.0.0.0/0
DROP动作直接是卡住没有响应,然后REJECT则会给出Destination Port Unreachable的回应
②修改默认规则
每张表的每条链中都有自己的默认策略,当报文没有被链中任何规则匹配,或者链中没有任何规则,则当前按照默认动作处理报文
iptables -t filter -P FORWARD DROP
-t 加表名 -P加链名

DROP(丢弃) 和 REJECT(拒绝) 有什么不同的呢?REJECT的时候会显示Destination Port Unreachable 但是DROP则会直接卡在那边不动
5、保存规则-----永久生效
在默认的情况下我们对防火墙所做的修改都是临时的,当服务器重启或者iptables服务重启后,所有的规则操作都会消失。
① CentOS6, RedHat
# 保存iptables规则
service iptables save
# 重启iptables服务
service iptables stop
service iptables start/restart
查看当前规则:
cat /etc/sysconfig/iptables
② Centos7
不使用init风格的脚本启动服务,使用unit文件,yum源安装iptables和iptables-services
#配置好yum源以后安装iptables-service
# yum install -y iptables-services
#停止firewalld
# systemctl stop firewalld
#禁止firewalld自动启动
# systemctl disable firewalld
#启动iptables
# systemctl start iptables
#将iptables设置为开机自动启动,以后即可通过iptables-service控制iptables服务
# systemctl enable iptables
上述配置只需要一次,以后即可在centos7中愉快地使用service iptables save命令保存iptables规则
============通用方法=============
iptables-save 可以把之前修改的命令输出到屏幕但是并不能保存命令
所以要使用 iptables-save > /etc/sysconfig/iptables 将修改的规则重定向到这个文件中
iptables详解(2)表中规则管理(增删改查)的更多相关文章
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- 详解数据库引擎与SQL语句增删改查(非常详细,带例)
数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...
- mysql--对行(表中数据)的增删改查
一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...
- Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查
一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...
- mysql对库,表及记录的增删改查
破解密码 #1.关闭mysqlnet stop mysqlmysql还在运行时需要输入命令关闭,也可以手动去服务关闭 #2.重新启动mysqld --skip-grant-tables跳过权限 #3m ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)
一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈 node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...
- Oracle学习总结_day01_day02_表的创建_增删改查_约束
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...
- 数据库中简单的增删改查(CRUD)
一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...
随机推荐
- MySQL修改表名示例
首先,我们新建一个名为test_table的表: drop table if exists test_table; create table test_table select TABLE_SCHEM ...
- linux如何找回已经删除的文件?lsof
简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...
- 高级UI-FloatingActionButton
FloatingActionButton为悬浮按钮,就是常见的那种悬浮在控件上,可以调出其他菜单的按钮 FloatingActionButton的特有属性 app:backgroundTint 按钮的 ...
- [转帖]微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同
微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同 https://www.cnbeta.com/articles/tech/903507.htm 微软Azure的胜利 国防部证实,美国政府已向 ...
- java当中JDBC当中Scrollable和Updatable ResultSet的用法和Helloworld例子
[学习笔记] 在前面的jdbc的Helloworld程序当中,我们接触了最简单的 Statement.那种Statement的光标只能向前移.意思就是访问完2,只能继续访问3,不能再回过头来访问1.还 ...
- Python中的if语句——参考Python编程从入门到实践
条件测试 1. 检查是否相等 一个等号表示赋值,两个等号用于判断等号左右两边是否相等,返回值为True或者False. 2. 检查是否相等是需考虑大小写 大小写不同的值视为不相等,例如继续写入代码:c ...
- 【leecode】 Course Schedule
class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>&am ...
- 【C#】课堂知识点#3
1.讲解了实验1中,利用Char.is***来进行判断字符类型. using System; using System.Collections.Generic; using System.Linq; ...
- PowerBuilder学习笔记之根据新PBL文件替换pbd文件的方法
在程序目录上右键,选择Build Runtime Library 在Build Runtime Library 页面点击OK,注意,会将全部的文件重新编译
- VS2015按钮方法
protected void btnRoleMemberAdd_Click(object sender ,EventArgs e) { txtEmpID.Text=Coeno.utility.stri ...