-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在负责NAT的OpenWrt上使用tun中的auto-route和auto-redir会让原有防火墙规则失效 #2167
Comments
试试 0ef4f80 |
感动,这么快就patch了。但是我目前暂时没有测试条件,只好蹲一个有缘人或者等我回家了 看起来改动不大,要是能合并到某个带预编译的分支就好了,不仅是nft苦手更是编译苦手🥲 |
|
试了一下,问题依旧。 测试用例是从公网连接运行在OpenWrt的wg(wireguard),运行sing-box后wg不能成功握手,客户端侧只有发送流量,没有接收流量。关掉sing-box后立刻握手成功,VPN通信正常。推测是如之前所述sing-box使开放wg端口的防火墙规则失效导致的。 使用的sing-box是以beta.12为基础patch上述commit后自编译的版本
|
update: wg测试用例的推测不完整,似乎不是防火墙的入站规则失效,更像是出站数据包被过滤掉。 理由是开启sing-box的情况下,尝试从公网连接wg,可以看到wg0接口会有随时间步进为1的数据包计数增长,疑似是在尝试握手。 其它条件不变,使用release的1.10.1版本复现现象一致,因此 0ef4f80 似乎没有解决问题 |
依然通过wirguard测试,开启sing-box后依然可以通过 @nekohasekai 有时间的话帮忙看一下,之前 0ef4f80 试过了并不能解决问题 |
操作系统
Linux
系统版本
OpenWrt 23.05.3 内核版本5.15.150
安装类型
sing-box 原始命令行程序
如果您使用图形客户端程序,请提供该程序版本。
No response
版本
描述
在负责NAT的OpenWrt上使用sing-box做透明网关代理,会导致原本设置的路由规则(包括通信规则和端口转发)失效。
似乎是sing-box一刀切接管了所有接口流量导致的,具体原理迫于nft/iptables苦手整不清楚。
据我观察openclash的解决方法是通过init.d运行脚本,在启动前获取OpenWrt的防火墙配置,去做额外的规则RETURN跳过打标进行规避。
跟sing-box有一点不同的是openclash中将流量重定向到clash内核是启动脚本实现的,而非像sing-box一样auto-redir。
从命名推测是在firewall_redirect_exclude和firewall_rule_exclude这两个函数中实现的。
如果网关和NAT分离在两个host,sing-box只在网关上运行就不需要考虑防火墙,sing-box无疑是目前最易于使用的透明网关代理实现。
虽然严格来说这并不是sing-box的问题,但还是希望在NAT的OpenWrt上也可以简单地开启网关代理。突然想到这种OS特化的适配好像更应该通过特定的软件包,例如[luci-app-]sing-box,在init.d启动脚本中实现。
重现方式
/usr/bin/sing-box run -c /etc/sing-box/config.json -D /usr/share/sing-box
以下是删除了无关项目的配置文件
/etc/sing-box/config.json
日志
支持我们
完整性要求
The text was updated successfully, but these errors were encountered: