1
povsister 78 天前
因为路由不对称,普通家用路由器的 tcp 是需要看到双向的数据报文才会被 conn-track 到。
在你的配置下 TCP inbound (发送 SYN ):WAN 访问 - 主路由(Port forwarding ,可以认为是 DNAT+SNAT)- PS5 TCP outbound (回复 SYN ACK ):PS5 -(这里就直接当 invalid 丢了)- 旁路由( SNAT )- 主路由 旁路由连 TCP SYN 都看不到,你回复一个 SYN ACK 被旁路由的 SNAT netfilter 看到,只会当你设备抽风直接丢包。 sb 看不到是因为报文在协议栈就直接丢了,压根没进入 sb 的处理。 |
3
whetherTsmile 78 天前
@vfx666 #2 旁路由防火墙里有一个丢弃无效数据包给关了试试
|
4
povsister 78 天前 via iPhone
@vfx666
我细想了想,port forwarding 应该是可以用的,不对称路由影响的应该是 DNAT ,你先试试用端口转发吧。 另外建议别折腾一个子网里两个网关这种模式了,老老实实用单臂路由不好吗 |
5
basncy 78 天前
ingress 要看主路由, 少部分企业路由器会做 SNAT.
whetherTsmile #3 可能是正解. sb 感觉它很强大, 但都集成了个半吊子. 旁路由建议手搓 REDIRECT/TPROXY, 门槛可能高, 但灵活, 还能代理部分 BT 流量. |
7
vfx666 OP 是 iptable 里的吗
|
9
povsister 78 天前 2
@basncy
我同意#5 的话,sb 看起来很强大但实际上体验上是个半吊子。真要考虑网关方案不如自己手搓 TPROXY+路由表转发。 唉,但不懂点网络知识的根本不适合玩旁路由。而且,一堆乱七八糟的教程确实坑了不少人。 @vfx666 给你推荐下我自用的方案吧,网关 TPROXY 方案,纯粹单臂路由不侵入拓扑,全真 IP 。主路由分流,黑白名单随喜好配置,可以在主路由上一键排除/强制某个内网 IP 直连/代理。 缺点就是,你的 linksys 可能只能当个 AP 用了,这个方案要的这些特性现阶段 linksys 应该无法满足。 https://github.com/povsister/v2ray-core |
11
morpheuszero2023 78 天前
有些问题解决的学习成本和时间消耗过高了。如果你只是想让 PS5 流畅的联机游戏,可以买内置 UU 加速器的路由器,例如华硕的一些型号。华硕和软路由( OP )也可以通过插件实现魔法冲浪。这些方案都是只有一个网关的,部署起来非常简单。
|
12
life90 77 天前
@povsister 我看了你这个方案,我猜果然会有这个问题 ”体感首次访问某个被墙站点时,有 30-40%的概率会出现 ConnectionRST , 随后只需要刷新一下页面即可正常访问。“
我觉得解决这个问题的方法可以试一试把 conn-track 规则时间延长一点(对个人来说影响不大)。然后你这个好像没有支持 ipv6 。 你没有采用 mark-routing (标记路由) mark-connection/packet 等方式,真是明智。这个策略开起来多了,非常影响转发性能。路由器配置不高的话,一个迅雷开起来能把 cpu 干冒烟。 |
13
povsister 77 天前
@life90
ipv6 短期内没有支持的打算。 OSPFv2 和 v3 是需要独立运行两个实例的,而且属于不同的 RFC 。要支持的话得我再手写 v3 的库才可以,目前是手搓简单版本 v2 的,等有空开源成单独的 go-ospfd 再考虑 v3 支持。 目前我自己已经把动态规则的时间延长到了 48h ,常态生效条目 1500 条左右。不过这个是可配置条目,你可以根据自己的旁路由配置和主路由配置自行调整。过多的代价基本就是内存占用会高,ros 本身路由查询开销基本可以忽略。 ROS 官方硬件只有在开启 fasttrack 的情况下性能还算不错,但是 ft 和 mangle mark-routing/packet 是冲突的。 家用环境 99.9%情况下不需要 mark-routing ,唯一有点价值的就是 QoS:标记 wan 流量走 QueueTree 。 我玩了一阵子,家用旗舰 RB5009 ,千兆跑 mark packet ,经常 pt 下载时候干满 cpu 。后来索性开摆,下行不做 QoS ,上行只在 wan interface 上挂了个 CAKE 流控,然后一下就好起来了,打游戏满速下载也不跳 ping ,非常省事。 |
14
life90 77 天前
@povsister 对,开启 fasttrack ,许多规则条目会失效,但是官方默认还是开启了。也不知为何?可能觉得家用不会搞这些。上行做流控,确实是最优解。但运营商的上行经常是变化的,起码要设置 20% 的余量。不然上行被拉满也是会卡的。你是 cake 配合 Queue Tree 做的流控,还是只做了 Simple Queue 。
好像有点问多了,脱离主题了。不过能遇到你,也算是幸运。mikrotik ros 现在玩的少了。看起来可定制性强,但操作起来要了解很多知识。如果只知其一,很容易搞崩了。我就这么一路崩过来的。后来发现既然同是 Linux ,我为什么不直接玩 Linux 。而且我觉得维护起来比它方便,可能是 mikrotik 教会了很多我 Linux 下的 iptable 操作。 |
15
povsister 77 天前
@life90
你需要了解 ft 的本质,它本质上是对已经进入 stateful tracking 的连接 bypass 一些处理流程,并不是“ft 开启后很多规则会失效”。实际上,只要你不过多依赖 mangle 表,ft 其实是非常优秀的 offload 手段。默认开启的话我觉得是没问题的。 我这边电信上行给的很足,按实际签约的 120%容量做的上行流控,做法是使用 interface queueTree ,FT 开启的情况下会 bypass simple queue 和 global queue ,但不会和 interface queue 冲突,所以你只需要在 wan 口开启 interface queue ,类型选 queueTree ,算法 CAKE 然后配置一下 nat=on ,rtt 50ms ,diffsrev4 ,类型 dual srchost ,然后再开一下 ACK filter 就可以了,非常简单好用。 |
16
yinmin 77 天前
解决方法很简单:192.168.1.1 将端口转发到 192.168.1.222 ,然后 192.168.1.222 转发到 ps5 。192.168.1.222 的 iptable 转发端口的写法可以问 gpt 。
|
18
yyysuo 77 天前 via iPhone
@yinmin 他应该有现成的配合 tun 的 ipt 或者 nft 吧,也应该有现成的 bypass 内网段的规则,也应该开了 ipv4 转发,是不是直接改成转发到 sb 机就可以了
|
19
yinmin 77 天前
@vfx666 ,试试:
假设 ps5 的 ip:192.168.1.230 ,要映射的 TCP 端口是 1000 。主路由先将 tcp 1000 端口转发到 192.168.1.222:1000 ,然后在 192.168.1.222 上配置以下 2 句 iptables ,将 tcp 1000 转发到 ps5 192.168.1.230:1000 iptables -t nat -A PREROUTING -p tcp -d 192.168.1.222 --dport 1000 -j DNAT --to-destination 192.168.1.230:1000 iptables -t nat -A POSTROUTING -p tcp --dport 1000 -d 192.168.1.230 -j MASQUERADE |
20
vfx666 OP @yinmin 这个方法确实可以走的通,不过我是用的 socat ,你这个我没试,而且 socat 在旁路由上不行,找了另一个内网设备才可以的。
我最终的解决方案是用 homeproxy ,在代理端口中把 ps5 的排除掉就可以了。。。 |
21
vfx666 OP @morpheuszero2023 uu 会员费太贵了,土豪可以忽略。我 ps5 直接用自己的小鸡,不用额外花费。而且 uu 只能加速一个游戏,也没法魔法上网,这种体验在 ps5 上太割裂了
|