特别说明:此系列博文根据 朱双印博客-iptables系列博文,个人实践后总结,此为个人笔记精简版,更通俗易懂请参考 朱双印博客-iptables系列博文 原文内容,诸君必能有所收获
02 iptables实际操作之规则查询
之前提到iptables是以"表"作为操作入口的,和数据库中表差不多,iptables的表也是可以增删改查的,我们定义规则,实际上就是在进行"增删改查",现在,我们以filter表作为起始,去了解iptables
我们怎样查看filter表的规则呢?试着输入iptables -t filter -L
上图中,我们使用 -t 选项,指定了要操作的表,使用 -L 选项,列出规则,所以上述命令就是列出表filter的所有规则,绿色框内的是iptables的filter表的INPUT链的规则,我们进行定义的规则将会出现在里面;再看看图里的信息,共有3条链,INPUT、FORWARD、OUTPUT,它们都有过滤的能力,当我们要定义某条"过滤"规则时,我们会在filter表中定义,但是具体在那条链上定义,需要更加工作场景来选择。如禁止某个IP访问我们的主机,想想之前的防火墙流程图,是不是只有在PREROUTING和INPUT链上进行定义规则才能拒绝相应的数据报文呢?由于我们是在filter表上进行规则定义,filter表并没有PREROUTING链,所以只有在INPUT链上进行定义规则了
同样的,举一反三,其他表查看规则,也是使用 iptables -t 表名 -L
来查看
如果只想查看filter表中某条链上的规则怎么办?使用如下命令
iptables -t filter -L INPUT
看起来还不错,但总觉得信息不够全,是的,我们可以使用 -v 选项来查看规则的详细信息
iptables -vL INPUT
可以注意到,使用 -v 选项后的确多了些东西,可是这些都是什么意思呢?具体参考如下:
- pkts:对应规则匹配到的报文的个数
- bytes:对应匹配到的报文包的大小总和
- target:规则对应的target(目标,对象),往往表示规则对应的"动作",即规则匹配成功后需要做的事情
- port:表示规则对应的协议,是否只针对某些协议应用此规则
- opt:表示规则对应的选项
- in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前的规则
- out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前的规则
- source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段
- destination:表示规则对应的目标地址,可以是一个IP,也可以是一个网段
并且,我们可以发现,在destination处是anywhere,看来,iptables可能对我们进行了名称解析;在规则很少的情况下还好,一旦规则较多,名称解析效率就变得很低了,所以,我们可以使用 -n 选项,表示显示IP地址,不进行IP地址的名称解析
iptables -nvL
如果我们想看规则前有序号,方便之后的"增删改查",可以使用 --line-number 选项
iptables --line-number -vnL
这样,是否多出了一个num列,那里就是序号了;同时,我们可以发现每条链后都有一个括号,里面的内容如上图红线划出的,包括了 policy ACCEPT,25 packets,7046 bytes;
- policy:表示当前链的默认策略,policy ACCEPT表示当前默认动作为ACCEPT,也就是说,INPUT链是默认通过所有经过的请求,所以想达到防火墙的功能,需要将不符合我们要求的数据包丢弃,这需要我们自定义规则
- packets:表示当前链默认策略匹配到的包的数量,25 packets表示默认策略匹配到了25个包
- bytes:表示当前链默认策略匹配到的所有包的大小总和
以上这些信息,只有在使用了 -v 选项后才会出现,当匹配到的包很多时,还会进行单位转换为更高的单位,这时如果想查看精确的计数值,可以使用 -x 选项,即 iptables -nvxL
【Iptables】iptables目录、
【Iptables】03 Iptables规则管理