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

2022-05-09 10:42:36 +08:00
 acbot

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

6247 次点击
所在节点    C++
26 条回复
junmoxiao
2022-05-09 10:50:48 +08:00
nebula n2n
acbot
2022-05-09 11:14:28 +08:00
@junmoxiao 我看这两个都是成熟的组网应用,我这边的需求是自己的软件中,可能需要涉及到 NAT 穿透这种功能,你的意思是从中剥离出我要的功能吗?
logic159
2022-05-09 11:20:49 +08:00
xdeng
2022-05-09 11:21:01 +08:00
同求 同好奇 没有比较好的开源的 p2p 库
mjikop1231
2022-05-09 11:21:13 +08:00
felixlong
2022-05-09 11:43:06 +08:00
villivateur
2022-05-09 12:09:31 +08:00
要不看下 STUN 服务器的实现?
nicevar
2022-05-09 12:15:43 +08:00
c/c++的没用过,java 版本的 stun 在某大型公司项目上用过,用于管理终端设备。
microxiaoxiao
2022-05-09 12:41:45 +08:00
c/c++参考 webrtc 解决方案。具体而言:ice stun turn libnice 。完整的就是 libnice 实现了 ice ,ice 管理了 stun turn ,stun 针对能打通的情况,turn 针对打不通的情况。需要理解为啥要这么多玩意,那就看 NAT 四种类型。完整的思路就看 libnice 即可,webrtc 太复杂了
hhjuteman
2022-05-09 14:23:51 +08:00
stun/turn
acbot
2022-05-09 14:57:29 +08:00
@villivateur
@hhjuteman 大佬,这个说的太笼统了,stun/turn 网上找的都是理论验证性的代码,感觉不是太完善。因为自己不擅长网络这块所以才想找个成熟得开源库或者是可以从其他项目玻璃的模块直接用。
acbot
2022-05-09 15:27:16 +08:00
@microxiaoxiao 好的,我重点看一下 libnice ,谢谢!
hhjuteman
2022-05-09 15:42:21 +08:00
@acbot 不知道你需要什么

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

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

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

回头看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/851676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX