端口受限 NAT 与对称 NAT 有办法打洞吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lovelylain
V2EX    宽带症候群

端口受限 NAT 与对称 NAT 有办法打洞吗?

  •  
  •   lovelylain 2022-05-21 09:08:52 +08:00 via Android 5785 次点击
    这是一个创建于 1243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家宽之前在手机上测试显示 full cone ,但与对称 nat 一直无法打洞成功,昨天换了一种方式测试,应该是那个测试 app 有 bug ,实际上应该是端口受限 nat 。手机流量的对称 nat 也测试了一下,虽然目标 ip 确定的情况下端口递增,但是访问不同 ip 可能映射到不同公网 ip ,所以端口猜测也没法搞了吧?还有可能打洞成功吗?

    17 条回复    2022-05-30 23:34:57 +08:00
    delpo
        1
    delpo  
       2022-05-21 09:23:07 +08:00   1
    如果一边端口受限另一边对称 nat,并且对称 nat 是端口递增的, 那么可以通过手动发包的方法打洞
    比如说对称 nat 一侧,和打洞服务器通信时,防火墙映射的外网端口为 n,那么真正打洞时,防火墙映射的外网端口就是 n+x(x 不一定为 1,因为内网可能还有其他客户端),这时候端口受限 nat 一侧的客户端就可以手动发包访问 n+x 号端口,就可以用该端口完成打洞.
    至于 x,一般比较小,可以通过遍历的方式进行发包
    missdeer
        2
    missdeer  
       2022-05-21 11:54:55 +08:00
    我觉得你可以考虑试试在家宽打开 upnp ,我之前遇到了跟你一样的问题,现在通过 upnp 能满足我绝大多数需求
    Overfill3641
        3
    Overfill3641  
       2022-05-21 12:01:25 +08:00
    有,要公网 IP ,普通路由器拨号。或者上 IPv6 。
    CGNAT 就算给 Full Cone NAT 也是端口不对称的残废版本,没用。
    yaott2020
        4
    yaott2020  
       2022-05-21 13:04:39 +08:00 via Android
    目前好像没有办法,可以试试预测
    lovelylain
        5
    lovelylain  
    OP
       2022-05-21 15:42:01 +08:00 via Android
    @yaott2020 主要是对称 nat 不一样的目的 ip 连出口 ip 都可能不一样,好像没什么办法能确定出口 ip ,所以端口猜测也搞不了。
    lovelylain
        6
    lovelylain  
    OP
       2022-05-21 15:46:57 +08:00 via Android
    @missdeer 你的意思是局端可能开启了 upnp ,可以在路由器上走 upnp 协议端口映射?这个要怎么操作呀?
    502Chef
        7
    502Chef  
       2022-05-21 16:53:28 +08:00
    别打了,用 Wireguard 组网吧
    missdeer
        8
    missdeer  
       2022-05-21 17:45:47 +08:00
    @jobmailcn 在光猫上 enable upnp (这步用光猫的手机 app 就能做到),然后光猫后的设备可以自己用程序(比如 miniupnp )映射端口,具体命令参数上网搜一下吧,很简单的,映射成功的话光猫 app 上能查到。我现在家宽和外面都是对称型,在家宽开了 udp 端口后,从外面就能连上来了。
    anbobi
        9
    anbobi  
       2022-05-21 21:33:25 +08:00
    话说打洞是啥意思
    i3x
        10
    i3x  
       2022-05-22 02:05:26 +08:00 via Android
    不是靠猜测。靠第三方服务器判定。
    stun 。
    fullcone 状态的话端口虽然不一致但是对应关系可以通过 stun 或者其他的外部服务器方式取得。

    你是需要两个地方通过 udp 打洞实现两端直接通信吧。搜索 site2site udp hole punching wireguard 。。。如果没有洁癖不担心商业产品依赖问题,tail scale 或者国产的 oray 蒲公英随便用。蒲公英组网也是优先穿透实在没办法才会用服务器转发。


    @anbobi 没有公网 ip ,且网关不提供 upnp ,端口映射之类的。但是仍然能保持让其他设备访问的端口。。。。基本上只能 udp 。因为 tcp 有来路问题。
    yaott2020
        11
    yaott2020  
       2022-05-22 11:39:03 +08:00 via Android
    @jobmailcn 那基本无解,除非运气好刚好能撞上,。还是买台 nat 鸡上中转吧。

    好奇问一句是什么网络环境,长城宽带吗
    lovelylain
        12
    lovelylain  
    OP
       2022-05-22 14:11:52 +08:00
    @missdeer 试了一下,No IGD UPnP Device found on the network !应该是没有 upnp 的。

    之前拨号成功虽然能获取到 ipv6 地址,但没有分发前缀,而且也 ping 不通 ipv6 网站,刚才又折腾了一番,终于发现是联通给我改的桥接有问题,调整了一下后 ipv6 就能用了,困扰近 2 年的 ipv6 不能用问题终于解决了。
    i3x
        13
    i3x  
       2022-05-22 20:02:56 +08:00 via Android
    @jobmailcn 桥接还有区别?啥问题?很好奇。
    lovelylain
        14
    lovelylain  
    OP
       2022-05-23 08:13:41 +08:00 via Android
    @i3x 光猫桥接配置里有个 ip 类型选项,v4 v6 或 双栈,之前是 v4 ,于是 v6 收发包都被屏蔽了,改成双栈后就有分发前缀了,v6 也正常了。
    anbobi
        15
    anbobi  
       2022-05-23 13:22:42 +08:00
    @i3x 你当真了,我这就是纯粹是揶揄楼主没有公网 IP 而已
    openp2p
        16
    openp2p  
       2022-05-29 16:14:30 +08:00
    这个实现其实非常简单,就是靠端口碰撞,大概发送 800 个包就超过 99%的概率打洞成功。
    可以先试用下行不行 https://openp2p.cn
    可行再看看代码 https://github.com/openp2p-cn/openp2p/blob/master/holepunch.go 核心部分就几十行代码的事
    flynaj
        17
    flynaj  
       2022-05-30 23:34:57 +08:00 via Android
    路由器拨号,路由器开 UPnP
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5847 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 02:59 PVG 10:59 LAX 19:59 JFK 22:59
    Do have faith in what you're doing.
    ubao 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