iptables使用详解( 二 )


否则, 该包会走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 表示给规则进行编号处理 。编号能方便我们后续对规则进行修改、删除等操作
iptables使用详解

文章插图
如图所示,表头有以下信息:
  • 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使用详解

文章插图
iptables -t filter -D FOWARD 1 //表示删除filter表中的FORWARD链的第一条规则

推荐阅读