规则查询
规则查询
指定表查看
查看 filter 表中的规则
-t
选项,指定要操作的表,当没有使用-t
选项指定表时,默认为操作 filter 表-L
选项,查看-t
选项对应的表的规则
例如
> iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
CILIUM_INPUT all -- anywhere anywhere /* cilium-feeder: CILIUM_INPUT */
KUBE-FIREWALL all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
CILIUM_FORWARD all -- anywhere anywhere /* cilium-feeder: CILIUM_FORWARD */
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
CILIUM_OUTPUT all -- anywhere anywhere /* cilium-feeder: CILIUM_OUTPUT */
KUBE-FIREWALL all -- anywhere anywhere
INPUT 链、FORWARD 链、OUTPUT 链都拥有” 过滤” 的能力,所以,当要定义某条” 过滤” 的规则时,会在 filter 表中定义
同样的,查看其他表中的规则
指定链查看
还可以只查看指定表中的指定链的规则,比如,只查看 filter 表中 INPUT 链的规则
查看结果为
> iptables -t filter -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
CILIUM_INPUT all -- anywhere anywhere /* cilium-feeder: CILIUM_INPUT */
KUBE-FIREWALL all -- anywhere anywhere
展示详细信息
使用 -v
选项后,iptables 展示的信息更多
查看的结果为
> iptables -t filter -L INPUT -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
6995M 5039G CILIUM_INPUT all -- any any anywhere anywhere /* cilium-feeder: CILIUM_INPUT */
6945M 5035G KUBE-FIREWALL all -- any any anywhere anywhere
- pkts: 对应规则匹配到的报文的个数
- bytes: 对应匹配到的报文包的大小总和
- target: 规则对应的 target,往往表示规则对应的”动作”,即规则匹配成功后需要采取的措施
- prot: 表示规则对应的协议,是否只针对某些协议应用此规则
- opt: 表示规则对应的选项
- in: 表示数据包由哪个接口(网卡)流入,即从哪个网卡来
- out: 表示数据包将由哪个接口(网卡)流出,即到哪个网卡去
- source: 表示规则对应的源头地址,可以是一个 IP,也可以是一个网段
- destination: 表示规则对应的目标地址。可以是一个 IP,也可以是一个网段
表中的每个链的后面都有一个括号,括号里面有一些信息
- policy 表示当前链的默认策略
-
policy ACCEPT 表示 INPUT 的链的默认动作为 ACCEPT,换句话说就是,默认接受通过 INPUT 关卡的所有请求,所以在配置 INPUT 链的具体规则时,应该将需要拒绝的请求配置到规则中;说白了就是” 黑名单” 机制,默认所有人都能通过,只有指定的人不能通过;当把 INPUT 链默认动作设置为接受 (ACCEPT),就表示所有人都能通过这个关卡,此时就应该在具体的规则中指定需要拒绝的请求,就表示只有指定的人不能通过这个关卡,这就是黑名单机制
-
packets 表示当前链(上例为 INPUT 链)默认策略匹配到的包的数量,0 packets 表示默认策略匹配到 0 个包
-
bytes 表示当前链默认策略匹配到的所有包的大小总和
可以把 packets 与 bytes 称作”计数器”,计数器记录了默认策略匹配到的报文数量与总大小,”计数器”只会在使用 -v
选项时,才会显示出来
当被匹配到的包达到一定数量时,计数器会自动将匹配到的包的大小转换为可读性较高的单位
如果想要查看精确的计数值,而不是经过可读性优化过的计数值,那么可以使用 -x
选项,表示显示精确的计数值
示例输出
> iptables -t filter -L INPUT -v -x
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
6995106934 5039606444098 CILIUM_INPUT all -- any any anywhere anywhere /* cilium-feeder: CILIUM_INPUT */
6944919118 5035188550830 KUBE-FIREWALL all -- any any anywhere anywhere
不使用名称解析
注意到源地址与目标地址都为 anywhere,iptables 默认进行了名称解析,但是在规则非常多的情况下如果进行名称解析,效率会比较低,所以,在没有此需求的情况下,可以使用 -n
选项,表示不对 IP 地址进行名称反解,直接显示 IP 地址
查看的结果为
> iptables -t filter -L INPUT -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
6995M 5040G CILIUM_INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 /* cilium-feeder: CILIUM_INPUT */
6945M 5035G KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0
如上所示,规则中的源地址与目标地址已经显示为 IP,而非转换后的名称
显示行号
使用 --line-numbers
即可显示规则的编号
查看的结果为
> iptables -t filter -L INPUT -v -n --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 6995M 5040G CILIUM_INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 /* cilium-feeder: CILIUM_INPUT */
2 6945M 5035G KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0
缩写成 --line
时,centos 中的 iptables 也可以识别