OpenWrt 是一个基于 Linux 的开源固件项目,广泛用于嵌入式设备如路由器。在 OpenWrt 中,网络流量管理和过滤主要通过 Netfilter 和 iptables 实现,这些工具使用表(tables)和链(chains)来组织和处理网络流量规则。在 OpenWrt 中,"三表五链"是一个常见的术语,用于描述 iptables 中最基本的表和链结构。
三表(Tables)
在 iptables 中,表是用来集合特定类型的规则的。每个表包含一组链,用于处理不同类型的数据包。OpenWrt 中常用的三个表是:
- Filter Table:
○ 默认表,用于决定数据包的命运,如允许或阻止(接受、拒绝、丢弃)数据包。
○ 主要用于控制网络访问和流量过滤。 - NAT Table:
○ 用于网络地址转换(NAT),如地址重写、端口转发等。
○ 主要处理进出设备的数据包,如改变源或目标地址。 - Mangle Table:
○ 用于修改数据包的服务类型(QoS)、路由标记等特殊操作。
○ 可以用于高级路由功能和流量控制。
五链(Chains)
每个表中包含多个预定义的链,这些链定义了数据包在网络栈中的处理点。五个最基本的链是: - INPUT Chain(输入链):
○ 处理进入本机的数据包。
○ 在 Filter 和 Mangle 表中使用。 - OUTPUT Chain(输出链):
○ 处理从本机发出的数据包。
○ 在 Filter、Mangle 和 NAT 表中使用。 - FORWARD Chain(转发链):
○ 处理经过本机转发到其他设备的数据包。
○ 在 Filter 和 Mangle 表中使用。 - PREROUTING Chain(预路由链):
○ 处理到达本机之前的数据包,用于决定数据包的路由目的地。
○ 在 NAT 和 Mangle 表中使用。 - POSTROUTING Chain(后路由链):
○ 处理即将离开本机的数据包。
○ 在 NAT 和 Mangle 表中使用。
这些表和链的组合提供了强大的网络流量管理和控制功能,使得 OpenWrt 可以灵活地处理各种网络环境和需求。通过配置这些表和链中的规则,用户可以实现复杂的网络策略,如防火墙规则、NAT设置、流量监控和路由优化等。
好的,我将为您详细介绍OpenWrt中的三表五链:
三表 (Tables)
- Filter 表
○ 主要功能: 数据包过滤,防火墙规则
○ 包含的链: INPUT, FORWARD, OUTPUT
○ 详细说明:
■ 这是最常用的表,用于控制数据包是否允许通过防火墙
■ 可以设置规则来允许或阻止特定IP、端口或协议的流量
■ 例如,可以在INPUT链中设置规则阻止来自特定IP的访问
■ 在FORWARD链中可以控制不同网络接口之间的流量转发 - NAT 表 (Network Address Translation)
○ 主要功能: 网络地址转换
○ 包含的链: PREROUTING, POSTROUTING, OUTPUT
○ 详细说明:
■ 用于修改数据包的源或目标地址
■ PREROUTING链用于目标NAT (DNAT),如端口转发
■ POSTROUTING链用于源NAT (SNAT),如共享互联网连接
■ 可以实现内网IP到公网IP的映射,使内网设备能访问互联网
■ 也可以设置端口转发,将外部请求转发到内网特定设备 - Mangle 表
○ 主要功能: 数据包修改
○ 包含的链: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
○ 详细说明:
■ 用于修改数据包的服务类型、TTL等特殊字段
■ 可以用于实现高级路由和流量控制功能
■ 例如,可以标记特定类型的流量以进行QoS (服务质量)控制
■ 也可以用于修改数据包的TOS (服务类型)字段以影响路由决策
五链 (Chains) - INPUT 链
○ 处理目标为本机的数据包
○ 存在于: Filter表, Mangle表
○ 详细说明:
■ 控制所有发往本地系统的数据包
■ 常用于设置防火墙规则,如允许或阻止特定端口的访问
■ 例如,可以设置规则允许SSH连接,但阻止其他未授权的访问 - OUTPUT 链
○ 处理本机发出的数据包
○ 存在于: Filter表, NAT表, Mangle表
○ 详细说明:
■ 控制所有从本地系统发出的数据包
■ 可以用于限制系统对外的连接
■ 例如,可以阻止系统访问特定的外部网站或服务 - FORWARD 链
○ 处理经过本机转发的数据包
○ 存在于: Filter表, Mangle表
○ 详细说明:
■ 控制所有通过系统转发的数据包
■ 在路由器功能中非常重要,用于控制不同网络间的流量
■ 可以设置规则允许或阻止特定网络间的通信
■ 例如,可以允许内网访问外网,但阻止外网直接访问内网 - PREROUTING 链
○ 处理刚到达本机,还未进行路由决策的数据包
○ 存在于: NAT表, Mangle表
○ 详细说明:
■ 在进行路由决策之前处理数据包
■ 主要用于DNAT (目标地址转换)
■ 可以用于实现端口转发,将外部请求重定向到内网服务器
■ 也可以用于修改数据包的TOS等字段,影响后续的路由决策 - POSTROUTING 链
○ 处理即将离开本机的数据包
○ 存在于: NAT表, Mangle表
○ 详细说明:
■ 在路由决策之后,数据包离开系统之前处理
■ 主要用于SNAT (源地址转换)
■ 常用于实现网络地址伪装(Masquerade),使多个内网设备共享一个公网IP
■ 也可以用于最后修改数据包的某些字段
这些表和链共同构成了OpenWrt中强大的网络流量控制和管理系统。通过在不同的表和链中设置规则,可以实现复杂的网络策略,如防火墙保护、网络地址转换、流量控制、负载均衡等功能。理解这个结构对于配置OpenWrt的网络功能至关重要。