🛡️OpenWRT IPv6防火墙规则:如何放行客户端地址及端口

2024-9-8|2025-1-1
Yawatasensei
Yawatasensei
type
status
date
slug
summary
tags
category
icon
password
😀
旁路由架构的家庭网络环境在开启IPv6之后,默认情况下,流量会经过主路由的防火墙,在非内网环境下,如果想访问家庭局域网内的服务默认是会被防火墙阻断,所以我们需要在主路由的防火墙中增加放行规则,从而使我们可以在非内网环境下使用家庭局域网内的服务,例如WireGuard、Jellyfin、Sunshine远程串流等等。

📝 配置方法

由于OpenWRT旁路由没有wan口,所以默认所有的流量都是通过lan区域进行本地交换,一般来说不用单独在旁路由上进行防火墙配置,只需要在唯一与外网进行连接的主路由进行配置即可。
同时,不建议关闭IPv6防火墙,尽管IPv6地址和端口扫描难度很大,但是依旧存在被扫风险,届时所有的局域网服务均可能暴露在外网,即便不会遭到攻击,运营商也会因为你在家庭宽带提供公共网络服务给你打电话,因为存在可访问的界面。

LUCI界面配置方式

打开OpenWRT路由器管理页面,进入网络 - 防火墙 - 通信规则 ,点击添加 来新增一条规则,在通信规则中所添加的规则在默认规则上方,所以不用担心于默认路由器防火墙规则冲突,不能生效,但需要注意与同页面的其他通信规则是否冲突,如果有,需要可以通过拖拽的方式,调整OpenWRT防火墙通信规则优先级。
notion image
名称:根据自己需要填写,建议填写具有明显标识的规则名称,例如Sunshine IPv6 这样。
协议:根据需要放行的协议进行选择,如果不确定可以选择TCP和UDP,基本涵盖大多数应用使用协议。
源区域:即流量入口所泽的防火墙区域,选择wan区域。
源地址:不选择。
源端口:不填写
出口区域:即流量出口所在的防火墙区域,选择lan区域。
目标地址:通过ip -6 neigh show 查看需要进行放行的客户端的Link-local IPv6 Address ,也就是本地IPv6地址,一般来说以fe80::开头。选择地址后,删除link-local ipv6地址的前缀部分,例如我的地址为fe80::65e8:ee2a:10b3:b2d5 ,那么删除后就是::65e8:ee2a:10b3:b2d5 ,然后在后面添加/::ffff:ffff:ffff:ffff ,意思是匹配所有后缀为::65e8:ee2a:10b3:b2d5 的本地IPv6地址,将完整地址::65e8:ee2a:10b3:b2d5/::ffff:ffff:ffff:ffff 填入目标地址中。这样无论运营商下发的IPv6前缀如何变动,我们通过固定的后缀即可进行客户端的匹配。
目标端口:即放行端口,建议使用哪个端口,就填写哪个端口,可以填写端口范围,例如80-443 这种。不填写则默认全部端口放行,存在很大安全隐患,不建议。
操作:接受。
notion image
高级设置中,我们仅需要对地址族进行修改及限制。
地址族限制:修改为IPv6
其他无特殊需要不用填写和修改,进行保存即可。然后可以尝试通过外网进行本地服务访问,如果在OpenWRT的状态 - 防火墙规则容器链 "forward_wan" 看到对应规则及计数,即表示放行成功。

NFT命令方式

新手小白不建议采用nft命令方式进行防火墙放行配置。这里仅供参考。
例如我们需要对刚刚的::65e8:ee2a:10b3:b2d5/::ffff:ffff:ffff:ffff 这个客户端进行80端口的放行,则在SSH登录OpenWRT系统后输入:
即通过nft add rule添加规则,操作fw4表与forward链,匹配目标地址为::65e8:ee2a:10b3:b2d5/::ffff:ffff:ffff:ffff的目标地址及tcp 80端口,允许防火墙区域wan的流量进行转发。
如果需要添加udp协议的流量,则为:

🤗 其他

关于后缀匹配规则

理论上,::65e8:ee2a:10b3:b2d5/::ffff:ffff:ffff:ffff 可以简写为::/64:65e8:ee2a:10b3:b2d5 ,即都表示该IPv6地址的前64位为可变动,后64位为固定地址。不可简写为::65e8:ee2a:10b3:b2d5/0 ,因为/0表示整个IPv6地址空间,意味着没有任何掩码,所有128位地址的匹配都符合条件,实际上匹配整个IPv6地址范围(即"所有地址")

关于固定后缀

IPv6与旁路由共存:实现策略代理与原生地址的完美平衡 这篇文章中,我建议在主路由的lan口和wan_6口,旁路由的lan口和lan_6口的高级设置中,将IPv6后缀设置为EUI64,这样将客户端的IPv6地址生成与设备的MAC地址形成一对一的绑定,只要设备的MAC地址不变,那么设备的IPv6地址后缀也就不变,从而在防火墙配置、路由配置等操作中更为方便。

📎 参考文章

 
💡
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
在OpenWRT旁路网关上通过Caddy实现Homelab反向代理自用无泄露MosDNS规则分享
Loading...