OpenWrt 防火墙配置入门指南

OpenWrt 路由器作为网关设备时,防火墙的管理也是日常需要接触的部分,OpenWrt 的防火墙规则可以通过界面进行直观的管理,无需熟记复杂的命令行操作,下面介绍最常见的防火墙使用示例。

端口转发

当想从互联网访问某个局域网设备上的服务时,则需要配置防火墙端口转发,将公网 IP 的某个端口转发给局域网 IP,以达到内网服务对外公开的效果。在“网络”-“防火墙”-“端口转发”界面按需配置即可。

注意:“端口转发” 规则仅适用于 IPv4 地址,IPv6 地址对公网开放端口请使用 “通信规则”。

通信规则/打开端口

当你想把部署在路由器上的服务对外公开时,则需要配置“通信规则”,按需打开端口,例如你在路由器上安装了amule,想对外开放这个软件监听的端口。在“网络”-“防火墙”-“通信规则”界面按需配置即可。

如果要打开多个不连续的端口,可以使用空格分隔。
如果要打开一个连续的端口范围,可以使用横杠分隔,例如:10000-11000

OpenWrt 开放局域网设备的 IPv6 端口

如果想开放局域网设备的 IPv6 端口,则不能使用“端口转发”规则,只能添加 “通信规则”,一般直接在目标地址中按需选择 IPv6 客户端即可。

如果客户端获得的是动态 IPv6 地址,则可以手动输入设备 ID 作为目标地址,即 IPv6 地址中的最后四段,

使用设备 ID 地址示例:::b963:6572:af97:9cf9/0

Windows 10 启用固定 IPv6 设备 ID 地址

出于安全考虑,Window 默认情况下使用的是随机设备地址(SLAAC 无状态),如果你希望通过 IPv6 地址对外开放 Windows 的端口,那么需要先关闭默认的随机标识符功能,使得 Windows 启用 EUI-64 规范的固定设备 ID,然后再去路由器上添加防火墙规则。

1、打开 Windows PowerShell ,输入命令:Set-NetIPv6Protocol -RandomizeIdentifiers Disabled

2、断开网络重新连接,即可获得固定设备 ID 的 IPv6 地址。

NAT1 转发模式

通过路由器上网都是属于转发模式(NAT),一般为 NAT3 模式(PortRestrictedCone),绝大多数情况下都没有任何问题,但有时一些特殊软件,比如一些游戏程序可能需要 NAT1 模式(FullCone),允许无限制对外公开 UDP 端口,以此获得更好的联机体验。

提示:NAT 上网方式只存在于 IPv4 网络,因为通常都是整个局域网的设备共用一个公网 IPv4 地址来上网,所以需要 NAT 地址转换。

如果想要为所有局域网设备启用 NAT1 转发模式,勾选防火墙中 WAN 口的“完全锥型”选项即可。

提示:如果想用 NAT 测试软件验证,而上网客户端是 Windows 之类的系统,则还需要关闭系统自带的防火墙,才能正确检测 NAT1 是否生效,中国用户建议使用测试地址:stun.qq.com

注意:启用 NAT1 模式可能导致高网络风险,请酌情启用。

NAT 问题解决实例

某用户反馈其使用 Windows 10 系统,Xbox 游戏联机体验差,在运行 Xbox 网络测试后,总是提示有问题。

技术人员上门排查后,其使用的是家用宽带,有公网 IP 地址,但其电脑连接的是二级路由器,所以任何尝试解决 NAT 问题的操作均无效。

经过技术人员反复验证后,已确认该 NAT 问题的正确解决办法:将这台 Windows 电脑连接至主路由即可,并不需要任何其它操作。

在全方位的测试中,我们发现 Xbox 游戏联机并不需要主路由开启 “NAT1 模式”,而 Windows 系统自带的防火墙也不能关闭,否则 Xbox 的网络测试会一直提示 “服务器连接:已阻止”。

DMZ 端口转发

DMZ 全称 Demilitarized Zone,用于设置一个内网 IP 对外部网络完全公开,便于提供各类公共网络服务。

一般常见的路由器系统有专门的 DMZ 配置项,OpenWrt 系统并未设立专门的 DMZ 配置项,如需使用 DMZ 功能请手动配置“端口转发”参数,参照下图示例即可。

注意:当网关 OpenWrt 系统配置了 DMZ 功能的端口转发规则后,如果想让部分端口转发至其它局域网 IP ,应将其端口转发规则移动到 DMZ 规则前面。

阻止局域网 IP 访问内网

例如想阻止被设为 DMZ 的 IP 访问局域网,需在“防火墙”-“通信规则”添加一个规则,则参照下图设置即可。

重定向 DNS 查询(DNS劫持)

有时不希望上网客户端自行使用其它的 DNS 服务器,则可以在网关路由器上使用防火墙规则对所有 DNS 查询进行重定向,以将所有 DNS 查询转发至特定的 DNS 服务器,这样即使上网设备自行配置了其它 DNS 服务器,也是没有任何效果的。

打开“网络”-“防火墙”-“自定义规则”,按需添加防火墙规则即可。

# 将所有发往外网 53 端口的数据包重定向至此设备的 53 端口,即劫持所有通过此网关转发的 DNS 查询数据包。

# IPv4
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

# IPv6
ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53