一个头疼的问题,路由器端口转发,挂了 singbox 透明代理无法连接 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vfx666
V2EX    宽带症候群

一个头疼的问题,路由器端口转发,挂了 singbox 透明代理无法连接

  •  
  •   vfx666 2024-09-17 14:35:44 +08:00 4761 次点击
    这是一个创建于 473 天前的主题,其中的信息可能已经有所发展或是发生改变。
    内网一台软路由( 192.168.1.222 )开启了 singbox 的 tun 模式做旁路由。内网 ps5 将网关手动设为了 singbox ,主路由( 192.168.1.1 )将端口转发设置到 ps5 的 ip ,在公网尝试连接 ps5 不成功。singbox 关闭后可以正常连通,问题可能出在 ps5 在返回流量时经过了旁路由的虚拟网卡出现问题。
    但 singbox 即使开启了最详细级别的日志,也看不到来自 ps5 的流量记录。用 tcpdump 能看到流确实经过了 tun 网卡。
    请教大神,这种情况应该如何设置呢
    22 条回复    2024-09-19 12:03:11 +08:00
    povsister
        1
    povsister  
       2024-09-17 15:21:38 +08:00
    因为路由不对称,普通家用路由器的 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 的处理。
    vfx666
        2
    vfx666  
    OP
       2024-09-17 16:53:42 +08:00
    @povsister 专业啊大佬。所以这种情况下有什么解决方案吗,我主路由是 linksys ,没啥可改动的,能不能在旁路由上设置点啥
    whetherTsmile
        3
    whetherTsmile  
       2024-09-17 16:58:01 +08:00
    @vfx666 #2 旁路由防火墙里有一个丢弃无效数据包给关了试试
    povsister
        4
    povsister  
       2024-09-17 18:37:40 +08:00 via iPhone
    @vfx666
    我细想了想,port forwarding 应该是可以用的,不对称路由影响的应该是 DNAT ,你先试试用端口转发吧。
    另外建议别折腾一个子网里两个网关这种模式了,老老实实用单臂路由不好吗
    basncy
        5
    basncy  
       2024-09-17 19:01:07 +08:00
    ingress 要看主路由, 少部分企业路由器会做 SNAT.
    whetherTsmile #3 可能是正解. sb 感觉它很强大, 但都集成了个半吊子.
    旁路由建议手搓 REDIRECT/TPROXY, 门槛可能高, 但灵活, 还能代理部分 BT 流量.
    vfx666
        6
    vfx666  
    OP
       2024-09-17 19:51:08 +08:00 via iPhone
    @povsister 现在这样子,端口转发确实联不通啊
    搞旁路由就是为了给 ps5 做加速,不然的话怎么解决 ps5 爬墙问题
    vfx666
        7
    vfx666  
    OP
       2024-09-17 19:57:03 +08:00 via iPhone
    是 iptable 里的吗
    vfx666
        8
    vfx666  
    OP
       2024-09-17 20:09:15 +08:00 via iPhone
    @povsister 我这个路由器貌似没法配置单臂吧。。。
    povsister
        9
    povsister  
       2024-09-17 20:29:13 +08:00   2
    @basncy
    我同意#5 的话,sb 看起来很强大但实际上体验上是个半吊子。真要考虑网关方案不如自己手搓 TPROXY+路由表转发。
    唉,但不懂点网络知识的根本不适合玩旁路由。而且,一堆乱七八糟的教程确实坑了不少人。

    @vfx666
    给你推荐下我自用的方案吧,网关 TPROXY 方案,纯粹单臂路由不侵入拓扑,全真 IP 。主路由分流,黑白名单随喜好配置,可以在主路由上一键排除/强制某个内网 IP 直连/代理。
    缺点就是,你的 linksys 可能只能当个 AP 用了,这个方案要的这些特性现阶段 linksys 应该无法满足。
    https://github.com/povsister/v2ray-core
    vfx666
        10
    vfx666  
    OP
       2024-09-17 21:38:05 +08:00
    @povsister 我日……你这方案有点意思……想不到一个旁路由都能玩出花来
    morpheuszero2023
        11
    morpheuszero2023  
       2024-09-18 10:02:15 +08:00
    有些问题解决的学习成本和时间消耗过高了。如果你只是想让 PS5 流畅的联机游戏,可以买内置 UU 加速器的路由器,例如华硕的一些型号。华硕和软路由( OP )也可以通过插件实现魔法冲浪。这些方案都是只有一个网关的,部署起来非常简单。
    life90
        12
    life90  
       2024-09-18 12:53:03 +08:00
    @povsister 我看了你这个方案,我猜果然会有这个问题 ”体感首次访问某个被墙站点时,有 30-40%的概率会出现 ConnectionRST , 随后只需要刷新一下页面即可正常访问。“
    我觉得解决这个问题的方法可以试一试把 conn-track 规则时间延长一点(对个人来说影响不大)。然后你这个好像没有支持 ipv6 。
    你没有采用 mark-routing (标记路由) mark-connection/packet 等方式,真是明智。这个策略开起来多了,非常影响转发性能。路由器配置不高的话,一个迅雷开起来能把 cpu 干冒烟。
    povsister
        13
    povsister  
       2024-09-18 13:48:23 +08:00
    @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 。
    我玩了一阵子,家用旗舰 RB500 ,千兆跑 mark packet ,经常 pt 下载时候干满 cpu 。后来索性开摆,下行不做 QoS ,上行只在 wan interface 上挂了个 CAKE 流控,然后一下就好起来了,打游戏满速下载也不跳 ping ,非常省事。
    life90
        14
    life90  
       2024-09-18 14:40:47 +08:00
    @povsister 对,开启 fasttrack ,许多规则条目会失效,但是官方默认还是开启了。也不知为何?可能觉得家用不会搞这些。上行做流控,确实是最优解。但运营商的上行经常是变化的,起码要设置 20% 的余量。不然上行被拉满也是会卡的。你是 cake 配合 Queue Tree 做的流控,还是只做了 Simple Queue 。
    好像有点问多了,脱离主题了。不过能遇到你,也算是幸运。mikrotik ros 现在玩的少了。看起来可定制性强,但操作起来要了解很多知识。如果只知其一,很容易搞崩了。我就这么一路崩过来的。后来发现既然同是 Linux ,我为什么不直接玩 Linux 。而且我觉得维护起来比它方便,可能是 mikrotik 教会了很多我 Linux 下的 iptable 操作。
    povsister
        15
    povsister  
       2024-09-18 14:49:41 +08:00
    @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 就可以了,非常简单好用。
    yinmin
        16
    yinmin  
       2024-09-18 23:07:16 +08:00
    解决方法很简单:192.168.1.1 将端口转发到 192.168.1.222 ,然后 192.168.1.222 转发到 ps5 。192.168.1.222 的 iptable 转发端口的写法可以问 gpt 。
    yyysuo
        17
    yyysuo  
       2024-09-18 23:53:12 +08:00 via iPhone
    @life90 这种体验怎么忍受的…..
    yyysuo
        18
    yyysuo  
       2024-09-19 00:00:32 +08:00 via iPhone
    @yinmin 他应该有现成的配合 tun 的 ipt 或者 nft 吧,也应该有现成的 bypass 内网段的规则,也应该开了 ipv4 转发,是不是直接改成转发到 sb 机就可以了
    yinmin
        19
    yinmin  
       2024-09-19 00:28:59 +08:00
    @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
    vfx666
        20
    vfx666  
    OP
       2024-09-19 11:58:25 +08:00 via iPhone
    @yinmin 这个方法确实可以走的通,不过我是用的 socat ,你这个我没试,而且 socat 在旁路由上不行,找了另一个内网设备才可以的。
    我最终的解决方案是用 homeproxy ,在代理端口中把 ps5 的排除掉就可以了。。。
    vfx666
        21
    vfx666  
    OP
       2024-09-19 12:01:20 +08:00 via iPhone
    @morpheuszero2023 uu 会员费太贵了,土豪可以忽略。我 ps5 直接用自己的小鸡,不用额外花费。而且 uu 只能加速一个游戏,也没法魔法上网,这种体验在 ps5 上太割裂了
    vfx666
        22
    vfx666  
    OP
       2024-09-19 12:03:11 +08:00 via iPhone
    @povsister 感谢大佬相助。说一下我最终解决方法:
    我装了个 openwrt ,homeproxy 里面有个代理端口的选项,把转发的端口排除掉就可以了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2612 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:57 PVG 15:57 LAX 23:57 JFK 02:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86