在之前的文章中,我们已经总结过,iptables 为我们预定义了4张表,他们分别是raw 表,mangle表,nat表,filter表,不同的表拥有不同的功能。

filter 负责过滤功能,比如允许那些IP 地址访问,拒绝那些IP地址访问,允许访问那些端口,禁止访问那些端口,filter表会根据我们定义的规则进行过滤,filter表应该是我们最常用到的表了,所以此处,我们一filter表为例,开始学习怎样实际操作iptables。

一. 查看filter 表的规则

[root@localhost ~]# iptables -t filter -L -nv --line
Chain INPUT (policy ACCEPT 78 packets, 5830 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion        
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion        
Chain OUTPUT (policy ACCEPT 51 packets, 5100 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion 

上例中我们使用 –t 选项,指定要操作的表,使用-L 选项,查看-t 选项对应的表的规则,-L选项的意思是列出规则,所以,上述命令的含义为列出filter表的所有规则。上图中显示了3条链,INPUT 链,FORWARD 链,OUTPUT 链,每条链中都有“过滤”的能力,所以,当我们要定义某条“过滤”的规则时,我们会在filter 表定义,但是具体在那条“链”上定义规则,这取决于我们的工作场景。比如,我们需要禁止某个IP地址访问我们的主机,我们则需要在INPUT 链上定义规则。因为,我们在理论总结中已经提到过,报文发往本机时,会经过PREROUTING 链于INPUT 链,所以,如果我们想要禁止某些报文发往本机,我们只能在PREROUTING链和INPUT链中定义规则,但是PREROUTING 链并不存在于filter 表中,换句话说就是,PREROUTING 关卡天生就没有过滤的能力,所以,我们只能在IPNPUT链中定义,当然,如果是其他工作场景,可能需要在FORWARD链或者OUTPUT链中定义过滤规则。其实,我们可以省略 –t filter当没有使用使用-t 选项指定表时,默认认为操作filter表,即iptables –L  表示列出filter 表中的所有规则。

我们还可以只查看指定表中的指定链的规则,如下,我们只查看filter表中的INPUT 链的规则:

[root@localhost ~]# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

我们可以使用 –v 来选项,查看出更多的,更详细的信息;使用 –n 表示不对ip地址进行名称反解,直接显示IP地址,实例如下:

[root@localhost ~]# iptables -L -nv
Chain INPUT (policy ACCEPT 393 packets, 33975 bytes)
 pkts bytes target     prot opt in     out     source               destination        

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 200 packets, 18176 bytes)
pkts bytes target     prot opt in     out     source               destination

pkts: 对应规则匹配到的报文的个数

bytes: 对应匹配到的报文包的大小总和

target:规则对应的target,往往表示规则对应的“动作”,即规则匹配成功后需要采取的措施。

prot:表示规则对应的协议,是否只针对某些协议应用次规则。

opt:表示规则对应的选项。

in:表示数据包由那个接口(网卡)流入,我们可以设置通过那块网卡流入的报文需要匹配当前规则。

out:表示数据包由那个接口(网卡)流出,我们可以设置通过那块网卡流出的报文需要匹配当前规则。

source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。

destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

使用 --line-numbers 可显示规则的编号,--line-numbers 选项可以缩写成 --line,iptables也可以识别

[root@localhost ~]# iptables -L -nv --line
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1       34  2556 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 24 packets, 2256 bytes)
num   pkts bytes target     prot opt in     out     source               destination

聪明的你,一定会注意到括号里的内容 policy ACCEPT   packets  bytes,他们表示的意思如下:

policy 表示当前链的默认策略,policy ACCEPT 表示上图中INPUT的链的默认动作为ACCEPT,换句话说就是,默认接受通过INPUT 关卡的所有请求,所以我们在配置INPUT 链的具体规则时,应该将需要拒绝的请求配置到规则中,说白了就是“黑名单”机制,默认所有人都能通过,只有指定的人不能通过,当我们把INPU 链默认动作设置为接受(ACCEPT),就表示所有人都能通过这个关卡,此时就应该在具体的规则中指定需要拒绝的请求,就 表示只有指定的人不能通过这个关卡,这就是黑名单机制,但是,你一定发现了,上图中所显示出的规则,大部分都是接受请求(ACCEPT),并不是想象中的拒绝请求(DROP或者REJECT),这与我们所描述的黑名单机制不符啊,按照道理俩说,默认动作为接受,就应该在具体的规则中配置需要拒绝的人,但是上图中并不是这样的,之所以出现上图中的情况,是因为iptables 的工作机制导致的,上例其实是利用了这些“机制”,完成了所谓的“白名单”机制,并不是我们所描述的“黑名单”。此处我们只要明白policy 对应的动作为链的默认动作即可,或者换句话说,我们只要理解,policy为链的默认策略即可。

packets 表示当前链(上例为INPUT 链)默认策略匹配到的包的数量,0 packets 表示策略匹配到0个包。

bytes 表示当前链默认策略匹配到的所有包的大小总和。

其实我们可以把packets 和bytes 称作“计数器”,上图中的计数器记录了默认策略匹配到的报文数量与总大小,“计数器”只会在使用 –v 选项时,才会显示出来。当被匹配到包达到一定数量是,计数器会自动将匹配到的包的大小转换为可读性较高的单位,如下图所示。

[root@localhost ~]# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 55578 packets, 332K bytes)

如果你想要查看精确的计数值,而不是经过可读性优化过的计数值,那么你可以使用-x 选项,表示显示精确的计数值,示例如下。

[root@localhost ~]# iptables -nvxL INPUT
Chain INPUT (policy ACCEPT 380 packets, 33500 bytes)
    pkts      bytes target     prot opt in     out     source               destination        
     127     9448 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22

二. 命令小结

1. iptable –t 表名 –L

查看对应表的所有规则,-t 选项指定要操作的表,省略“-t 表名” 时,默认表示操作filter表,-L 表示列出规则,即查看规则。

2. iptables –t 表名 –L 链名

查看指定表的指定链中的规则

3. iptables –t 表名 –v –L

查看指定表的所有规则,并且显示更详细的信息(更多字段),-v 表示 verbose,表示详细的,冗长的,当使用 –v 选项时,会显示出“计数器” 的信息,由于上例中使用的选项都是短选项,所以一般简写成为iptables –t 表名 –vL

4. iptables –t 表名 –n –L

表示查看表的所有规则,并且在显示规则时,不对规则中的IP 或者端口进行名称反解,-n 选项表示不解析IP 地址。

5. iptables –lin-number –t 表名 –L

表示查看表的所有规则,并且显示规则的序号,—line-numbers 选项表示显示规则的序号,注意,此选项为长选项,不能与其他短选项合并,不过此选项可以简写为 –line 注意,简写后仍然是两条横杠,仍然是长选项。

6. iptables –t 表名 –v –x –L

表示查看表中的所有规则,并且显示更详细的信息 (-v 选项),不过,计数器中的信息显示为精确的计数值,而不是显示为经过可读优化的计数值,-x 选项表示显示计数器的精确值。

7. iptables –line –t filter –nvxL

为了方便会将短选项进行合并,将选项粘合在一起,写成如上命令。

8. iptables –line –t filter –nvxL INPUT

可以只查看某张表中的某条链,此处一filter 表的INPUT 链为例

iptables 实际操作 之 规则查询 2的更多相关文章

  1. iptables(二)iptables实际操作之规则查询

    如果你是一个新手,在阅读如下文章时,请坚持读到最后,读的过程中可能会有障碍,但是在读完以后,你会发现你已经明白了. 在进行iptables实验时,请务必在测试机上进行. 之前在iptables的概念中 ...

  2. iptables详解(2):iptables实际操作之规则查询

    所属分类:IPtables  Linux基础 在阅读这篇文章之前,请确保你已经阅读了如下文章,如下文章总结了iptables的相关概念,是阅读这篇文章的基础. 图文并茂理解iptables 如果你是一 ...

  3. iptables规则查询

    iptables规则查询 之前在iptables的概念中已经提到过,在实际操作iptables的过程中,是以"表"作为操作入口的,如果你经常操作关系型数据库,那么当你听到" ...

  4. spring data jpa 使用方法命名规则查询

    按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写.框架在进行方法名解析时,会先把方法名多余的前缀 ...

  5. SpringData_02_JPQL查询、SQL查询和方法命名规则查询

    1.使用JPQL的方式查询 JPQL查询:Hibernate提供的是HQL查询,而JPA提供的是JPQL查询语言 使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于 ...

  6. Android Linux自带iptables配置IP访问规则

    利用Linux自带iptables配置IP访问规则,即可做到防火墙效果

  7. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  8. mysql 数据操作 多表查询 目录

    mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多 ...

  9. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

随机推荐

  1. Solr报错Index locked for write for core '***'. Solr now longer supports forceful unlocking via 'unlockOnStartup'

    unlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制.在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新.将其设置为 true ...

  2. Python下opencv使用笔记(二)(简单几何图像绘制)

    简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...

  3. 使用MyEclipse创建可执行jar

    MyEclipse请从这里下载: http://pan.baidu.com/s/1o6Jm5vk 具体步骤: 右键点工程->Export->选择Java下面的Runnable Jar Fi ...

  4. mac重置蓝牙模块

    升级系统后蓝牙鼠标无法连接,蓝牙模块也无法关闭,通过重置 PRAM和SMC解决 PRAM 重置 关机,拔掉所有外设,接上电源. 启动时同时按住 Command, Option, p, r , 听到三次 ...

  5. seo关键字优化条例

    SEO 第一: 标题关键字分析 分析和选择行业热门的关键字,并合理的应用于网站标题内及分布到各栏目页面和内页. 其实个人觉得标题.内容.以及与内容相关性链接必须要足.还有就是出现的层次感,例如: a) ...

  6. HDU 3917 Road constructions(最小割---最大权闭合)

    题目地址:HDU 3917 这题简直神题意... 题目本身就非常难看懂不说..即使看懂了.也对这题意的逻辑感到无语...无论了.. 就依照那题意上说的做吧... 题意:给你n个城市,m个公司.若干条可 ...

  7. IOS 应用程序路径

    -- 获取资源文件目录 .app/下的图片,音频等资源文件 print("bundlePath" + NSBundle.mainBundle().bundlePath) //以下是 ...

  8. JAVA的IO操作:内存操作流

    掌握内存操作流 输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteArrayOutputStream ByteArrayInpu ...

  9. 使用python-nmap 搭建基本端口扫描器

    代码地址如下:http://www.demodashi.com/demo/13255.html 一.前言 注意: 本文相关教程仅供个人学习使用,切勿用于非法用途,否则造成的相关损失及影响,作者不承担任 ...

  10. objective-c的观察者模式

    addObserver即添加消息响应函数.postNotificationName即发消息.