iptables之四表五链

iptables与Netfilter详解
本文深入解析了iptables作为Linux防火墙管理工具的核心作用,以及其与Netfilter内核组件的关系。详细介绍了四表五链的概念,包括filter表、nat表、mangle表和raw表的功能,以及它们如何在数据包过滤、网络地址转换、服务类型修改和状态跟踪中发挥作用。

 

iptables可谓是SA的看家本领,需要着重掌握。随着云计算的发展和普及,很多云厂商都提供类似安全组产品来修改机器防火墙。

 

iptables概念

iptables只是Linux防火墙的管理工具而已。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。

 

iptables具体是如何去过滤各种规则的呢?请看下面的四表五链

四表五链概念

  • filter表——过滤数据包
  • Nat表——用于网络地址转换(IP、端口)
  • Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
  • Raw表——决定数据包是否被状态跟踪机制处理
  • INPUT链——进来的数据包应用此规则链中的策略
  • OUTPUT链——外出的数据包应用此规则链中的策略
  • FORWARD链——转发数据包时应用此规则链中的策略
  • PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
  • POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

 

 

再来一张十分形象的netfilter图:

 

 

上图十分清晰的表明数据包的流向。由于四表中我们常用的就只有filter和nat,所以再来一张鸟哥版精简图:

默认4种规则表
raw表:是自1.2.9以后版本的iptables新增的表,debug测试,确认是否对该数据包进行状态跟踪,对应的内核模块为iptable_raw,包含两个链:PREROUTING - OUTPUT

mangle表:主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time ToLive,生存周期)值以及为数据包设置Mark标记,以实现Qos (Quality of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。对应的内核模块为iptable_mangle,包含五个链:

nat表:(Network Address Translation,网络地址转换)主要用于修改数据包的IP地址、端口号等信息。修改数据包中源地址和目标ip地址或端口,这是我们要学的重点,内核模块为iptable_nat,在nat表中定义的有PREROUTING - POSTROUTING - OUTPUT三个规则链.

filer表:对数据包进行过滤,准许什么数据包通过,不许什么数据包通过.并且这个规则表也是默认的.这也是重点,对应的内核模块为iptable_ filter,在filter中 有INPUT - FORWARD - OUTPUT三个规则链.

### iptables的口诀记忆方法 iptables 是 Linux 系统中用于配置防火墙规则的强大工具,其核心概念围绕“”展开。以下是关于的记忆口诀及详细说明: #### **一、功能概述** iptables分别是: - **filter **:负责过滤数据包,决定是否允许数据包通过。 - **nat **:负责网络地址转换(NAT),主要用于端口转发和 IP 地址映射。 - **mangle **:用于修改数据包的内容或标记数据包,适用于 QoS(服务质量)控制。 - **raw **:用于指定数据包是否参与连接跟踪机制。 | 名 | 功能描述 | |---------|------------------------------------------| | filter | 过滤数据包(默认) | | nat | 网络地址转换(如端口转发、IP伪装) | | mangle | 修改数据包内容(如TTL、QoS标记) | | raw | 禁用连接跟踪 | #### **二、功能概述** 分别是: - **PREROUTING **:数据包进入路由前处理。 - **INPUT **:目标地址是本机的数据包处理。 - **FORWARD **:目标地址不是本机的数据包处理。 - **OUTPUT **:本机生成的数据包处理。 - **POSTROUTING **:数据包离开路由后处理。 | 名 | 触发条件 | |-----------------|-------------------------------------| | PREROUTING | 数据包到达网卡后立即触发 | | INPUT | 数据包的目标地址是本机 | | FORWARD | 数据包的目标地址不是本机 | | OUTPUT | 数据包由本机生成 | | POSTROUTING | 数据包即将离开本机 | #### **三、记忆口诀** 为了方便记忆 iptables,可以使用以下口诀: - **口诀**: **过(filter)、转(nat)、改(mangle)、生(raw)** - “过”代 filter ,用于过滤数据包。 - “转”代 nat ,用于地址转换。 - “改”代 mangle ,用于修改数据包内容。 - “生”代 raw ,用于控制数据包是否参与连接跟踪。 - **口诀**: **进前(PREROUTING)、入内(INPUT)、转发(FORWARD)、出外(OUTPUT)、走后(POSTROUTING)** - “进前”示数据包在进入路由前触发 PREROUTING 。 - “入内”示目标地址为本机的数据包触发 INPUT 。 - “转发”示目标地址非本机的数据包触发 FORWARD 。 - “出外”示本机生成的数据包触发 OUTPUT 。 - “走后”示数据包离开路由后触发 POSTROUTING 。 #### **、实际应用示例** 以下是一个简单的端口转发规则,展示如何结合 nat 和 PREROUTING 实现外网访问公网 IP:8080 转发到内网服务器 192.168.1.100:80[^2]: ```bash iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80 ``` #### **、总结** 通过以上口诀,用户可以快速记住 iptables及其功能。此外,理解每个的具体应用场景对于实际操作至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值