iptables 介绍
Write by lyc at 2018-01-29
Modify by lyc at 2020-8-28
参考博文:
iptables概念
一、iptables 介绍
1.iptables
- Netfilter/Iptables(简称iptables)是unix/linux自带的一款优秀且源代码完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出的服务器的数据包进行很精细的控制。
- iptables是linux 2.4及2.6内核中集成的服务。其功能与安全性比老一辈的ipfwadm,ipchains强大的多。
- iptables主要工作在OSI七层模型的二、三层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)
2.什么是Netfilter/iptables?
Netfilter
是表(tables)的容器,iptables包含4张表tables:fliter
,nat
,mangle
,raw
iptables
是链(chains)的容器,链(chains):INPUT
进入主机链OUTPUT
流出主机链FORWARD
转发链PREROUTING
进入路由,预备路由POSTROUTING
邮寄出路由
- 链(chains)是规则(rule)的容器,规则(rule)就是一条条过滤的语句
3. iptables的工作原理
- 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后过滤的。
- 如果匹配上规则,即明确表明是阻止还是通过,数据包就不再向下匹配新规则了。
- 如果规则中没有明确表明是阻止还是通过,也就是没有匹配规则,再向下进行匹配,知道匹配默认规则得到明确的阻止还是通过。
- 防火墙默认规则是所有规则执行完才会执行的。
二、iptables 四表五链
1.四张表(tables)
tables | description |
---|---|
filter |
filter 表是iptables默认使用的表,主要和主机自身相关,真正负责主机防火墙功能的,过滤流入流出主机的数据包。filter 表包含3条链:INPUT , OUTPUT , FORWARD |
nat |
负责网络地址转换,即源地址与目的地址的IP,port转换。 一般用于局域网上网或者特殊的端口转换服务相关。 nat 功能就相当于网络的ACL控制,和网络交换机的ACL类似。nat 表定义了3条链:OUTPUT , PREROUTING , POSTROUTING |
mangle |
主要负责修改数据包中特殊的路由标记,如TTL , TOS , MARK 等。mangle 表定义了5条链:INPUT , OUTPUT , FORWARD , PREROUTING , POSTROUTING |
raw |
不常用,略。 |
2.五条链(chains)
chains | description |
---|---|
INPUT |
负责过滤所有目标地址是本机地址的数据包。 通俗的讲,就是过滤进入主机的数据包。 |
OUTPUT |
处理所有源地址是本机地址的数据包。 通俗的讲,就是处理主机发出去的数据包。 |
FORWARD |
负责转发流经主机的数据包。其转发的作用,和NAT关系很大。 一般需要开启内核转发 net.ipv4.ip_forward = 1 |
PREROUTING |
在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等。 (比喻:收信时,根据规则重写收件人的地址) |
POSTROUTING |
在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等。 (比喻:寄信时,写好发件人的地址,要让人家回信时能够有地址可回) |
3.表(tables)和链(chains)的对应关系
表iptables | INPUT | FORWARD | OUTPUT | PREROUTING | POSTROUTING |
---|---|---|---|---|---|
filter | yes | yes | yes | ||
nat | yes | yes | yes | ||
mangle | yes | yes | yes | yes | yes |