实在搞不懂了,谁来科普下, Frp xtcp 双侧 Nat4 为什么能成功打洞 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YV4usGtvaOIAeXIa
V2EX    宽带症候群

实在搞不懂了,谁来科普下, Frp xtcp 双侧 Nat4 为什么能成功打洞

  •  
  •   YV4usGtvaOIAeXIa 2023-11-28 16:26:57 +08:00 6031 次点击
    这是一个创建于 691 天前的主题,其中的信息可能已经有所发展或是发生改变。
    /t/995564
    原本打算用现成的远程桌面软件的,但是帖子下一位老哥的分享,开了 Frp xtcp 来尝试打洞,双侧 Nat4 居能通,这是为啥
    我原本尝试了 zerotier 、wireguard 之类的,都打洞失败,甚至向日葵和 todesk 之类的远程软件,都没办法实现 p2p 连接
    没想到近在我眼前的 Frp 是可以的,我还想着 zerotier 都打不成功的话 Frp 也就当个中转了。。。

    所以 Frp xtcp 是要靠运气还是原理上就能成功打通的。
    目前尝试了移动 NAT4-联通 NAT4 成功

    我甚至尝试把 dmz 和 upnp 都关了,依旧可行
    ipv6 本来就只有单侧有,我也试过把另一侧的 ipv6 关了,依旧可行
    虽然挺惊喜的,但是还是想学习一下这是什么原理
    19 条回复    2025-01-02 21:02:00 +08:00
    xqzr
        1
    xqzr  
       2023-11-28 18:11:48 +08:00
    ```sh
    frpc nathole discover --nat_hole_stun_server stun.easyvoip.com:3478
    ```
    heiher
        2
    heiher  
       2023-11-28 18:22:50 +08:00 via Android
    难道不是 xtcp 的 fallback 机制退回到 stcp(服务器中转)模式嘛
    YV4usGtvaOIAeXIa
        3
    YV4usGtvaOIAeXIa  
    OP
       2023-11-28 18:29:10 +08:00
    @heiher 满速了,而且我没开 stcp ,我拖文件跑满带宽了,frp 服务器只有 5m 小水管
    YV4usGtvaOIAeXIa
        4
    YV4usGtvaOIAeXIa  
    OP
       2023-11-28 18:29:44 +08:00
    @xqzr 可以用命令指定 stun 服务器?
    YV4usGtvaOIAeXIa
        5
    YV4usGtvaOIAeXIa  
    OP
       2023-11-28 18:31:16 +08:00
    @heiher ps:是跑满了本地带宽
    lazywen
        6
    lazywen  
       2023-11-28 21:25:25 +08:00
    xtcp 看起来是 tcp ,实际上是它代理了 tcp ,而传输使用的 kcp ,即 udp ,而 udp 打洞在大部分 nat4 下还是有很大几率成功的,参照普通家庭宽带使用 bt 下载
    xqzr
        7
    xqzr  
       2023-11-28 21:27:11 +08:00
    xqzr
        8
    xqzr  
       2023-11-28 21:28:45 +08:00
    @Jestom 通常不需要指定
    这是 https://github.com/fatedier/frp/issues/3812 的临时解决办法
    YV4usGtvaOIAeXIa
        9
    YV4usGtvaOIAeXIa  
    OP
       2023-11-28 23:13:52 +08:00
    @lazywen 原来如此
    amyw495062
        10
    amyw495062  
       2023-11-29 00:40:23 +08:00
    @lazywen 所以也是看运气,并不是所有 nat4 都能打洞?
    skies457
        11
    skies457  
       2023-11-29 09:01:30 +08:00
    Tailscale 有篇关于 NAT traversal 的科普: https://tailscale.com/blog/how-nat-traversal-works/
    maybeonly
        12
    maybeonly  
       2023-11-29 09:38:42 +08:00
    nat4 和 nat4 也是不一样的
    linux 内核实现的 nat 的话,默认情况下会尽量保持 nat 后的源端口和之前的源端口一致
    这样的话,就有很多文章可以做,甚至 tcp 都有机会连得上

    就算端口有变化,只要端口是可预测的,都可能被成功打洞
    8E9aYW8oj31rnbOK
        13
    8E9aYW8oj31rnbOK  
       2023-11-29 11:52:34 +08:00
    frp 的 xtcp 只是对端口打洞吗,楼主可以分享一下两端的配置文件怎么写的吗
    lazywen
        14
    lazywen  
       2023-11-29 12:35:47 +08:00 via Android
    @amyw495062 一般宽带 nat4 udp 打洞成功的概率还是远高于不成功的概率,不成功的情况很复杂,也说不清,可能由于复杂的网络拓扑、防火墙,或者其他什么阻碍限制
    amyw495062
        15
    amyw495062  
       2023-11-29 13:26:15 +08:00
    @lazywen 原来,我也一直以为双侧 nat4 不存在打洞的可能性
    YGBlvcAK
        16
    YGBlvcAK  
       2023-11-29 18:17:48 +08:00 via Android
    如果设备发送数据包的源端口和路由器 NAT 后的源端口一致,打洞成功率就很高,双方互发就可以了(stun 服务器告知双方端口)
    flynaj
        17
    flynaj  
       2023-11-30 01:46:45 +08:00 via Android
    光猫桥接电脑拨号后用 https://github.com/HMBSbige/NatTypeTester/releases/ 测试,你的网络不是 nat4.
    xcsoft
        18
    xcsoft  
       331 天前
    wk 我也不清楚为什么, 可能和 6 楼所说的有一定关系,走 UDP 可以打洞成功, 但是在我的网络环境下 Tailscale 始终打通不了,只能走中转。 但是 Tailscale 使用 wailgurad 协议,应该也是基于 UDP 的吧,所以有点奇怪
    1265578519
        19
    1265578519  
       289 天前
    那肯定有一方是 nat3 ,而不是 4
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2518 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: .9.8.5 26ms UTC 10:05 PVG 18:05 LAX 03:05 JFK 06:05
    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