无需公网 IP,基于 tcp 协议的 p2p 穿透----疫情期间“内网”<-->"内网"安全穿透

2020-02-05 23:59:42 +08:00
 wslzy007

别提 frp/ngrok,如果能满足我的需求也就不会重复造车了:)。vpn/zerotier?tun/tap 类的工具。。。仁者见仁吧

良心推荐 smarGate,特点如下:

1、无需公网 IP
2、使用 TCP 协议进行 P2P 穿透,无 Qos 之忧
3、SSL 隧道加密
4、支持 IPv6 (防火墙)穿透
5、支持 UDP 游戏串流
6、免费无限制
7、小巧简单
8、。。。

能干什么?

1、ssh 远程开发 /运维
2、RDP 远程桌面
3、远程摄像头监控
4、远程游戏串流
5、私有内网 web 服务访问
6、。。。

详见:

github.com/lazy-luo/smarGate

13174 次点击
所在节点    宽带症候群
59 条回复
cst4you
2020-02-06 14:46:45 +08:00
zerotier 用户表示直通才是最好的
elfive
2020-02-06 15:15:18 +08:00
其实,做贡献谈不上,重复造轮子,你这精力如果用在协助开发现有的开源项目,会更有意义。

我是因为能力不够,力不从心,你有这能力,真的建议多参与开源项目。
elfive
2020-02-06 15:16:34 +08:00
我是这么认为的:开源社区的发展离不开广度,但深度更重要。
wslzy007
2020-02-06 17:55:59 +08:00
@muzuiget 建议试用一下再发表评论吧。。。
wslzy007
2020-02-06 17:59:38 +08:00
@elfive 谬赞了。其实只需要看看 github 上的交互图就很清楚是否重复造轮子了,作为一个技术工作者,对产出要求很苛刻
brMu
2020-02-06 18:59:10 +08:00
开源吧,不是有用户量才开源,是开源才有用户量
zsxzy
2020-02-06 19:28:04 +08:00
感谢, 正需要, 以前用 ddns 实现 ssh 连接办公室 server, 还需要路由器搞端口映射..
ferstar
2020-02-06 22:03:40 +08:00
正在用,挺好的,提个意见,给 APP 加个退出的功能吧,每次都得划掉。。
shynome
2020-02-06 22:47:51 +08:00
tinc 有个 tcpOnly 选项开启就支持 tcp 了
shynome
2020-02-06 22:49:10 +08:00
CatCode
2020-02-07 11:55:23 +08:00
@shynome 我去看看
mostkia
2020-02-08 17:44:04 +08:00
在服务器资源好的情况下,frp 真的香。
zhhww57
2020-02-08 20:48:30 +08:00
@weyou 可以,无需公网 ip 也可以,但是必须 udp,以前我也认为不可能,现在我知道了 udp 原来还能蒙端口,就是有个成功率,一般都是移动宽带同城基本能穿,只需要知道互相的公网 ip 就行了
zhhww57
2020-02-08 20:57:06 +08:00
@weyou 可以,无需公网 ip 也可以,但是必须 udp,以前我也认为不可能,现在我知道了 udp 原来还能蒙端口,就是有个成功率,一般都是移动宽带同城基本能穿,只需要知道互相的公网 ip 就行了
@ljpCN 无须公网 ip 的 udp 穿透,服务端必须有 ddns,并且使用一个独特的暗语,然后服务端 udp 不停对外发包,这个包里面包含这个暗语,之后客户端,通过服务端的 ddns 解析到服务端的公网 ip,对这个公网 ip 的所有 udp 端口进行扫描,得到带有这个暗语的 udp 端口就是要连接的接口。再连接这个端口。。这个就是 udp 无公网 ip 穿透实现。至于 tcp。我还不太懂
zhhww57
2020-02-08 21:07:28 +08:00
无须公网 ip 的 udp 穿透
前提:
1、服务端必须有 ddns
2、服务端使用一个(或多个)独特的暗语
3、服务端通过一个(也可以多个) udp 端口不停对外发包,以此来保持到公网 ip 的一个(或者多个) udp 端口的开启
4、如果这个端口接收到带有这个暗语消息,就会立即回复同样带有这个暗语的消息,



过程:
当服务端满足以上要求的时候,客户端通过以下办法通讯,

1、客户端通过服务端的 ddns 解析到服务端的公网 ip
2、对这个公网 ip 的所有 udp 端口进行发包扫描,所发的包里面必须带有服务端的暗语
3、当得到回复,并且回复里面带有这个暗语,那么就意味着找到了端口
4、和这个端口建立通讯
flynaj
2020-02-08 21:38:08 +08:00
你这个还是转发,穿透还是只有那个 zerotier
monkey110
2020-02-08 21:58:44 +08:00
不能 PC 到 PC ?
weyou
2020-02-08 23:59:05 +08:00
@zhhww57 我觉得这种方法只有对年代久远的 full cone 类型的 NAT 才有效,我不知道运营商的 NAT 是不是这种类型。

对于家用路由器来说,现在绝大部分都是端口+地址限制型的 NAT。服务端在 NAT 后面向外发 UDP,对谁发? 如果不知道客户端地址而乱发的话,只有 UDP 的目的主机回的封包才能回得来,因为这种类型的 NAT 要求回来的包源地址和端口要与前面 UDP 的目的地址和端口一致才能通过。你用客户端扫描服务器的所有端口都没用, 都会被挡掉。

如果双方都能事先获取对方的公网地址,确实可以靠端口扫描在一方先取得类似端口映射的效果,然后另外一端就可以用(对方扫描过的)任意端口连进来了。但一是效率很低,二是有被对方防火墙屏蔽的风险。
weyou
2020-02-09 00:11:44 +08:00
上面第二段修改下,如果双方都能事先获取对方的公网地址,确实可以靠端口扫描在一方先取得类似端口映射的效果,然后另外一端就可以再扫描对方的端口找到这个暗语。在确保连接概率的情况下,整个过程需要经历了 2 遍几乎全端口范围的扫描,很明显,这种方式一是效率很低,二是有被防火墙屏蔽的风险。
tia
2020-02-09 01:37:44 +08:00
@weyou zerotier 很明显没有用这个方法,我搭了和国内 moon,然后两台无公网 nat 机器互相 ping 可以在 1 秒内互通,第一下几十毫秒后面稳定几毫秒,如果用扫端口猜的方式肯定没这么快

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

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

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

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

© 2021 V2EX