收起左侧

建议远程访问增加一个STUN穿透访问模式(或者说叫域名跳转访问模式)

11
回复
858
查看
[ 复制链接 ]

5

主题

40

回帖

0

牛值

初出茅庐

2025-4-27 23:08:06 显示全部楼层 阅读模式

建议依据

目前最头疼的就是没有IPv4公网IP的用户,使用FN Coonect限速,使用转发、组网,要么流量限制,要么带宽限制,要么不稳定且相对麻烦,实际使用体验上,上述方式都不尽人意,IPv6方式也不是最完美的,一个是配置有门槛,另一个是用户网络不一定有IPv6。除此之外,貌似就没有其它通用的方法了。但是通过Lucky的STUN穿透获取临时公网IP和端口,然后利用Lucky内置Webhook自动汇报变更的IP和端口,来实现类似DDNS的功能,从而实现直连。这个方法完美解决了没有公网IP的宽带公网直连访问的问题

实现原理和思路

Lucky的STUN穿透其实就是STUN客户端第一次发起UDP包的时候,由STUN服务器解析UDP包内的公网IP+端口,然后将此信息封装后返回STUN客户端中。最后,STUN客户端将此信息发送给外部调用的终端,从而实现数据链接。

目前通过Lucky已经能实现域名跳转到IP+端口的访问,具体实现方法有两种,可以参考下面的文章:

内链通”STUN内网穿透使用教程

https://lanjmp.com/tutorial.html

无公网部署https和反向代理 (基于Lucky的STUN穿透)

https://www.bilibili.com/opus/867168542923948067

上述两种方式就是利用Lucky的STUN穿透实现获取到公网IP+端口,提交给域名服务器,然后实现域名即时解析和跳转,解决了无IPv4公网IP的用户实现类似DDNS的功能

目前局限

但是这个方法仅限于Web端,在Web端访问时,域名会跳转到IP+端口进行访问,但是APP端就不行,因为不支持跳转。按照上述方法实现后,每次访问APP都要先访问下网址,然后复制跳转的IP,再到APP端进行登录,很麻烦

建议增加

建议在APP登录地址栏的实现上增加域名的解析跳转功能,如果检测到是域名地址,则检测是否是301或者302,如果是,则访问跳转后的地址来连接,这样可以省去很多麻烦

如果大佬们觉得使用Lucky不可靠,可以直接在远程访问方式里增加STUN服务、内网转发地址、Webhook的实现,直接实现STUN穿透,这个实现估计能解决很多人问题,当然这样工作量也会大很多,但是技术难度并不大。

收藏
送赞
分享

6

主题

9261

回帖

0

牛值

管理员

2025-4-28 15:07:38 显示全部楼层
感谢反馈,这个我们转给技术评估一下
我在飞牛共建团直播间提了这个,一堆人上来怼我,说我“不想花钱白嫖还想用这用那,给我说什么用节点组网不好么,用飞牛官方的直连不好么,为啥非要用STUN”,我说“能直连为啥非要做中转”,然后又怼我“说让我去论  详情 回复
2025-5-9 20:24
另外我申请了内测资格,看能否为FNOS尽一份力。多年互联网产品经理,有产品测试经验,自己目前NAS已经装了FNOS  详情 回复
2025-4-28 20:38

5

主题

40

回帖

0

牛值

初出茅庐

2025-4-28 20:38:08 楼主 显示全部楼层
飞牛产品同学 发表于 2025-4-28 15:07
感谢反馈,这个我们转给技术评估一下

另外我申请了内测资格,看能否为FNOS尽一份力。多年互联网产品经理,有产品测试经验,自己目前NAS已经装了FNOS

0

主题

1

回帖

0

牛值

江湖小虾

2025-5-8 14:12:03 显示全部楼层

需要这个

我在飞牛共建团直播间提了这个,一堆人上来怼我,说我“不想花钱白嫖还想用这用那,给我说什么用节点组网不好么,用飞牛官方的直连不好么,为啥非要用STUN”,我说“能直连为啥非要做中转”,然后又怼我“说让我去论  详情 回复
2025-5-9 20:23
这个我觉得属于刚需的刚需了,而且做出来就是独家,其它NAS系统都没有这个解决方案,但是好像官方不太重视。难道是因为可以做节点小宝等等平台的推广,故意而为之,不太积极跟进?  详情 回复
2025-5-8 21:29

5

主题

40

回帖

0

牛值

初出茅庐

2025-5-8 21:29:35 楼主 显示全部楼层

这个我觉得属于刚需的刚需了,而且做出来就是独家,其它NAS系统都没有这个解决方案,但是好像官方不太重视。难道是因为可以做节点小宝等等平台的推广,故意而为之,不太积极跟进?

5

主题

40

回帖

0

牛值

初出茅庐

2025-5-9 20:23:41 楼主 显示全部楼层

我在飞牛共建团直播间提了这个,一堆人上来怼我,说我“不想花钱白嫖还想用这用那,给我说什么用节点组网不好么,用飞牛官方的直连不好么,为啥非要用STUN”,我说“能直连为啥非要做中转”,然后又怼我“说让我去论坛搜索STUN和DDNS有很多方法”。
我一直在重复,我已经实现了STUN的穿透,现在每次访问都要先点击域名,跳转到最新的IP+端口,很麻烦,但是还是跟我扯我不懂,说可以用DDNS,难道我不知道DDNS?端口怎么解决?是不是还要去获取最新的端口号过来。
真不知道飞牛官方这一些人哪里来的心高气傲,都不知道我说的啥,然后就一个劲怼我。

我想说,飞牛你本身就是免费,我就是提一个功能建议,怎么就成了白嫖还事儿多?

5

主题

40

回帖

0

牛值

初出茅庐

2025-5-9 20:24:02 楼主 显示全部楼层
飞牛产品同学 发表于 2025-4-28 15:07
感谢反馈,这个我们转给技术评估一下

我在飞牛共建团直播间提了这个,一堆人上来怼我,说我“不想花钱白嫖还想用这用那,给我说什么用节点组网不好么,用飞牛官方的直连不好么,为啥非要用STUN”,我说“能直连为啥非要做中转”,然后又怼我“说让我去论坛搜索STUN和DDNS有很多方法”。
我一直在重复,我已经实现了STUN的穿透,现在每次访问都要先点击域名,跳转到最新的IP+端口,很麻烦,但是还是跟我扯我不懂,说可以用DDNS,难道我不知道DDNS?端口怎么解决?是不是还要去获取最新的端口号过来。
真不知道飞牛官方这一些人哪里来的心高气傲,都不知道我说的啥,然后就一个劲怼我。

我想说,飞牛你本身就是免费,我就是提一个功能建议,怎么就成了白嫖还事儿多?

4

主题

8

回帖

0

牛值

江湖小虾

2025-7-7 12:03:25 显示全部楼层

确实这个算登录方式的一种刚需 很多家庭没有ipv4的情况下又想进行p2p连接 毕竟不需要在进行一个中转服务器 速度也会快很多 ipv6呢 很多家庭虽然有 但部分wifi场所又不支持ipv6

这个从技术上面来说呢也没有一点难度 本身okhttp那些框架都可以识别这些302跳转 再不济webview直接拦取链接获取端口

4

主题

8

回帖

0

牛值

江湖小虾

2025-7-7 12:06:17 显示全部楼层

确实这个算登录方式的一种刚需 很多家庭没有ipv4的情况下又想进行p2p连接 毕竟不需要在进行一个中转服务器 速度也会快很多 ipv6呢 很多家庭虽然有 但部分wifi场所又不支持ipv6

这个从技术上面来说呢也没有一点难度 本身okhttp那些框架都可以识别这些302跳转 再不济webview直接拦取链接获取端口

4

主题

8

回帖

0

牛值

江湖小虾

2025-7-7 12:21:10 显示全部楼层

android 客户端代码

GlobalScope.launch {
val client = OkHttpClient.Builder()
.followRedirects(false) // 关闭自动重定向
.build()
val request = Request.Builder().url("(这里填反向代理之前的域名))").build()
client.newCall(request).execute().use { response ->
when (response.code) {
301, 302 -> println("Redirect to: ${response.header("location")}")
}
}
}

1

主题

6

回帖

0

牛值

江湖小虾

2025-9-13 04:08:09 显示全部楼层

我也需要这个功能,对于具体的实现方案,我有不同的看法。

为什么需要 STUN

STUN 可以协助大量用户实现直接连接而避免使用中继服务器。可以帮助用户和 FN Connect 的节约大量成本。进而节约整体社会资源,降低中国互联网负载。助理中国节能减排和生态环境建设。延缓南极冰川融化......

楼主的实现方案有什么问题

楼主提出的方案是基于 HTTP 跳转实现 NAT 穿透,其方案仅对 NAT 1有效。然而国内的 NAT 1 用户普遍叫少,更多用户被困于 NAT2、3、4 网络环境中。更多情况是,运营商为改善用户游戏体验而只为 UDP 数据包提供 FullCone NAT(NAT1),而 TCP 则为 NAT3/4,并启用追踪连接状态的防火墙。

更常见的 NAT 穿透方案是

人们更多使用基于 UDP 协议的 NAT 穿透方案。NAT1、NAT2容易实现穿透,NAT3使用生日攻击亦可在短时间内实现,而NAT4则无法穿透。使用 UDP 成功实现 NAT 穿透后,再其上建立隧道,负载其他流量,即可实现直连。

为什么不用成熟商用虚拟局域网

市面上有很多成熟的方案,例如 Zoterio、Tailscale、NetBird 等。但以上软件均要求在连接时运行其专有软件,并使用内网地址连接。这十分不方便。用户需要同时运行虚拟局域网软件和飞牛APP才能实现访问。且对于Android 用户来说,无法同时连接到两个虚拟局域网。

故而,将此功能整合到飞牛APP中,才能实现最佳的用户体验。

NAT穿透以外的需求

实际上我自己并没有 IPv4 NAT穿透的需求。我的问题场景更简单,且更****普遍

STUN 不仅可以用于辅助 NAT 遍历,还可以帮助穿越防火墙。在我的使用场景中,有一个无法关闭(来自上级)的 IPv6 防火墙,需要借助 STUN 服务器穿越该防火墙。实现原理很简单,只需要两边同时(短于25秒(具体取决于防火墙机制))向对端发送 UDP 数据包即可建立连接。

伴随着 IPv6 的普及,很多用户都会获得 IPv6 地址。但运营商为了用户安全,或者限制用户自部署服务(PCDN),往往会为用户强制启用 IPv6 防火墙。我相信这在中国是一个更加普遍的现象。故而此功能大有用处。

如何实现

遵循标准的 NAT 穿透流程即可。IPv6 防火墙可视为 NAT 2类型,轻松穿透。现简述如下

描述包含三方

  1. 飞牛APP:用户手机,想要连接飞牛OS
  2. 中继服务器:可以中继流量,支持 STUN 功能,辅助NAT传统
  3. 飞牛OS:用户家中的 NAS

流程:

  1. 在飞牛APP中输入中继服务器的地址和认证信息,连接到中继服务器。
  2. 中继服务器中继用户流量,帮助用户连接到飞牛OS。此时处于中继模式,飞牛APP与飞牛OS通过中继服务器中继流量连接。
  3. 在中继服务器的STUN服务的协助下,尝试NAT穿透。如果成功打洞,则在飞牛APP与飞牛OS之间构建一条UDP隧道(可以使用Wireguard或另行开发私有协议),在其上负载TCP、HTTP连接,进而实现飞牛APP与飞牛OS的直接连接。
  4. 如果NAT穿透失败,则继续维持中继模式,确保用户的基础体验。应当在 APP 端明确表示当前的连接状态,以便用户决定是否执行大流量任务(例如备份)。

我希望这套软件架构可以自部署,我有自己的中继服务器。我可以协助开发服务器端,但是关键是这套逻辑需要整合进飞牛的App里才会有良好的用户体验。

STUN只要不是NAT4都可以。但是现在看来,不是实现不实现的问题了,现在飞牛是想用这个刚需来卖FN Connect付费会员了。我已经不抱希望了  详情 回复
2025-9-16 01:28

5

主题

40

回帖

0

牛值

初出茅庐

2025-9-16 01:28:26 楼主 显示全部楼层
CalunVier 发表于 2025-9-13 04:08
我也需要这个功能,对于具体的实现方案,我有不同的看法。
为什么需要 STUN
STUN 可以协助大量用户实现直接 ...

STUN只要不是NAT4都可以。但是现在看来,不是实现不实现的问题了,现在飞牛是想用这个刚需来卖FN Connect付费会员了。我已经不抱希望了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则