否则, 该包会走INPUT链
FORWARD 链FORWARD在各表中生效的优先顺序是:mangle(FORWARD) ----> filter(FORWARD)处理路由决策派发发过来的包 , 到这里的包一般目标网络地址在PREROUTING链被修改过
INPUT 链其生效顺序是: mangle(INPUT) ----> filter(INPUT)处理路由决策派发发过来的包,到这里的包一般目标网络地址在PREROUTING链没有被修改过 。
OUTPUT 链在目标进程端口接收到输入数据包后,输出的数据包,将在这里进行规则应用 。OUTPUT链在各表中生效的先后顺序是:raw(OUTPUT) ----> mangle(OUTPUT) ----> nat(OUTPUT) ----> filter(OUTPUT)
规则详解前面铺垫了那么多,主要讲解了链的复杂生效时机,毕竟如果包最终都到不了这个链,那其中的规则配置也就没有意义 。接下来,我们需要讲解 , 链中具体规则的设置和使用 。
一个规则一般分为两大部分:
- 匹配: 即哪些数据包会命中这个规则,比如一个指定的ip , 即是一个匹配规则
- 动作: 匹配到规则之后,需要做什么动作,是放行,还是拒绝 。
- ACCEPT: 直接接受该数据包,不会再走其他链条和规则 。比如filter中的input表中的某个规则命中后 , 动作是ACCEPT,那么该数据包将被直接送达目标进程端口 。
- DROP: 直接抛弃该数据包 , 并且没有任何返回 。且不会再走其他链和规则
- REJECT: 跟DROP类似,但好歹还是会跟请求方返回一些拒绝信息,比如我们拒绝掉ICMP协议后,ping该主机 , 会返回“destination host unreachable”
- RETURN: 当前规则不做任何处理,返回 。让给下一个规则处理
- LOG : 同RETURN类似,但只是会将请求信息记录到系统日志中 , 记录路径为:
/var/log/syslog
or/var/log/messages
iptables -t nat -nvL --line-numbers
-t
表示想要查看那个表,这里查看的是nat表 。iptables的所有命令,如果不指定-t
,如果不写默认是filter表 。-L
表示列出该表所有链和所有规则-v
详细显示 , 会将规则匹配的进出网口也列出来--line-numbers
表示给规则进行编号处理 。编号能方便我们后续对规则进行修改、删除等操作文章插图
如图所示,表头有以下信息:
- num 表示当前规则编号,从1开始
- in 表示该规则会匹配那些的输入网口,如果包是由该网口输入,则会被匹配
- out 表示该规则会匹配的目标网口,如果包的目标网口是该网口,则会被匹配
- source 表示该规则匹配的具体源ip范围
- destination 表示该规则匹配的具体目标ip范围
在已知链末尾添加规则(举例 , 拒绝某个ip的访问)
iptables -t filter -A INPUT -s 59.45.175.62 -j REJECT
-A
表示Append,其后紧跟的是链的名称,表示该条规则要被添加到哪个链中 。-s
表示包的来源ip即source 。除了指定固定的ip外,我们还可以指定ip范围,比如59.45.175.0/24
-j
表示jump 也即是我们最终的动作,这里的动作是拒绝在已知链链首插入规则链尾的规则匹配优先级最低,如果前面有规则被匹配后,并将数据包进行了终态处理(比如:ACCEPT, DROP, REJECT),那么链尾的规则将永远不会被使用 。
如果我们想要该规则优先匹配,可以选择将其放入链首 , 使用
-I
参数,表示insert 。举例:iptables -t filter -I INPUT -s 59.45.175.62 -j REJECT
删除规则想要删除已配置的规则,可以使用-D
参数,参数iptables -t filter -D INPUT -s 59.45.175.62 -j REJECT
这种删法,要我们明确知道当初添加进去的规则是怎么写的 。如果忘了 , 我们可以通过规则编号进行删除 。在查看规则时使用参数--line-numbers
(例如:iptables -nvL --line-numbers
),可以对规则进行编号,然后基于编号进行删除文章插图
iptables -t filter -D FOWARD 1 //表示删除filter表中的FORWARD链的第一条规则
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 渐变维度 使用 Apache Hudi 实现 SCD-2
- 华为车载智慧屏值得买吗_华为车载智慧屏使用评测
- Pytest进阶使用
- RAID5 IO处理之条带读代码详解
- RAID5 IO处理之写请求代码详解
- RAID5 IO处理之重构代码详解
- RAID5 IO处理之replace代码详解
- 如何使用 pyqt 读取串口传输的图像
- 数据科学学习手札144 使用管道操作符高效书写Python代码
- 你们觉得华为手机卡不卡,使用体验如何(华为加装nm卡缺点)