acbot
V2EX  ›  C++

现在有比较好的 NAT 穿透(打洞)开源实现吗?

  •  
  •   acbot · May 9, 2022 · 9192 views
    This topic created in 1648 days ago, the information mentioned may be changed or developed.

    以前早期的时候 p2p 软件的 NAT 穿透(打洞)这些感觉都是自己实现,属于比较核心的技术。现如今这么多年了,NAT 穿透(打洞)有没有比较好的 c/c++开源的实现呢,TCP 和 UDP 两种都实现的那种?网上找的都是理论验证性的代码,感觉不是太完善。

    26 replies  •  2023-02-14 15:01:00 +08:00
    junmoxiao
    junmoxiao
    May 9, 2022
    1
    nebula n2n
    acbot
    acbot
    OP
    May 9, 2022
    2
    @junmoxiao 我看这两个都是成熟的组网应用,我这边的需求是自己的软件中,可能需要涉及到 NAT 穿透这种功能,你的意思是从中剥离出我要的功能吗?
    46fo
    46fo
    May 9, 2022
    4
    同求 同好奇 没有比较好的开源的 p2p 库
    felixlong
    felixlong
    May 9, 2022
    6
    DawnMoon
    DawnMoon
    May 9, 2022 via Android
    7
    要不看下 STUN 服务器的实现?
    nicevar
    nicevar
    May 9, 2022
    8
    c/c++的没用过,java 版本的 stun 在某大型公司项目上用过,用于管理终端设备。
    microxiaoxiao
    microxiaoxiao
    May 9, 2022 via Android
    9
    c/c++参考 webrtc 解决方案。具体而言:ice stun turn libnice 。完整的就是 libnice 实现了 ice ,ice 管理了 stun turn ,stun 针对能打通的情况,turn 针对打不通的情况。需要理解为啥要这么多玩意,那就看 NAT 四种类型。完整的思路就看 libnice 即可,webrtc 太复杂了
    hhjuteman
    hhjuteman
    May 9, 2022
    10
    stun/turn
    acbot
    acbot
    OP
    May 9, 2022
    11
    @villivateur
    @hhjuteman 大佬,这个说的太笼统了,stun/turn 网上找的都是理论验证性的代码,感觉不是太完善。因为自己不擅长网络这块所以才想找个成熟得开源库或者是可以从其他项目玻璃的模块直接用。
    acbot
    acbot
    OP
    May 9, 2022
    12
    @microxiaoxiao 好的,我重点看一下 libnice ,谢谢!
    hhjuteman
    hhjuteman
    May 9, 2022❤️1
    13
    @acbot 不知道你需要什么

    如果是理论知识
    rfc8445, rfc 5389, rfc 5766

    如果是搭建一个反射 /中继服务器,那么 coturn 无疑开源里最好的

    自己做客户端能用的库就很多了 libnice libjuice ,libnice 依赖 glib ,你能接受的话就用 libnice ,libjuice 没有实现 rfc 的 tcp 扩展,但是对接标准使用没有问题,也没有 glib 这种重依赖。
    acbot
    acbot
    OP
    May 9, 2022
    14
    @hhjuteman 是不是 可以这样理解,自己的应用集成 libnice ,然后使用公共的 stun/turn ice 标准的服务器或者说是使用 coturn 自己搭建一个服务器, 这样的话就自己的应用就可以实现 NAT 穿透(打洞)
    sbilly
    sbilly
    May 9, 2022
    15
    搭车问一下。golang 有比较好的实现吗? UDP TCP 都支持的
    hhjuteman
    hhjuteman
    May 9, 2022
    17
    @acbot 是的
    acbot
    acbot
    OP
    May 9, 2022
    19
    @wym0823 谢谢!
    sbilly
    sbilly
    May 10, 2022
    20
    备份一下: https://github.com/firefart/stunner

    回头看看
    hadesjaky0607
    hadesjaky0607
    May 10, 2022
    21
    @wym0823 这个可以,不依赖平台
    openp2p
    openp2p
    May 16, 2022
    22
    自荐一个 https://github.com/openp2p-cn/openp2p
    支持 Cone, Symmetric (NAT1-4), UPNP, IPv6
    openp2p
    openp2p
    May 29, 2022
    23
    @sbilly https://github.com/openp2p-cn/openp2p/ UDP TCP Symmetric 打洞 UPNP IPv6 都支持
    sbilly
    sbilly
    May 31, 2022
    24
    @openp2p 我去看看 谢谢
    libinglong9
    libinglong9
    Sep 1, 2022 via iPhone
    25
    @openp2p server 也开源吗?
    riceball
    riceball
    Feb 14, 2023
    26
    用于构建 P2P 网络的模块化网络堆栈和库(全): https://libp2p.io/
    包括打洞协议
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1025 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 18:54 · PVG 02:54 · LAX 10:54 · JFK 13:54
    ♥ Do have faith in what you're doing.