fubuki 是一个类似于 n2n, tinc 的小工具
Github: https://github.com/xutianyi1999/fubuki
支持平台: Windows, Linux
客户端与客户端之间只能 P2P 传输,无法通过服务器中转,服务端只提供客户端信息之间共享和同步
对于对等 NAT 是无法被穿透的
客户端在启动时会创建 TUN 网卡,然后将自己的节点信息上传至服务端,所有其他的节点信息将被同步到本地。 当有报文经过 TUN 网卡时,客户端将会读取到这个 IP 报文,通过报文头得到目标 TUN 的 IP 地址,就能从映射表得到报文所在的外网 IP,最后将这个报文放入 UDP 中发往目的 IP
代码很精简,只实现了基本功能,主要是想通过 tuntap 做一些好玩的小东西
1
missdeer 2021-02-17 20:54:43 +08:00 via Android
好像有点厉害的样子,用 wintun 的项目越来越多了
|
2
araaaa OP @missdeer wintun 的 api 做的很方便,之前用 openvpn tap 的话需要撸 win32 很头大
|
3
1041412569 2021-02-18 00:18:50 +08:00 via Android
可以走 ipv6 组网不?
|
4
chunxue 2021-02-18 00:31:14 +08:00
和 zerotier 比有什么优势
|
5
araaaa OP @1041412569 可以
|
7
Zy143L 2021-02-18 02:17:11 +08:00 via Android
1.支持自定义服务器吗?
2.这和 ZeroTier 好像没区别...都 UDP 打洞 3.如果后期考虑支持 TCP KCP 最好 4.这名字 fubuki ?说的是小狐狸(白上吹雪)? |
9
xarthur 2021-02-18 08:44:33 +08:00 via iPhone
如果是想实现 p2p 功能,可以直接用 libp2p,nat 传统之类的功能直接支持而且被抽象掉了。
|
10
araaaa OP @Zy143L 什么是自定义服务器。这本身就是一个重复轮子啊写给自己玩的。支持 tcp 的话意味着要走中转了,中转以后会考虑加入的。kcp 中转我觉得不是很有必要,如果只为了解决无法穿透其实有一种非常简单的办法就是直接伪造报文头就可以了,这个也会考虑加。吹雪驱逐舰哒
|
12
missdeer 2021-02-18 09:31:19 +08:00
认识一个人也写了个类似的东西,用了 openvpn 的 tap-windows,嫌慢,又说 wintun 的文档太少,于是尝试自己写个虚拟网卡驱动,貌似快写完了,说以后中国人有了自己的虚拟网卡驱动。。。
|
13
araaaa OP @missdeer wintun 现在文档很全了,windows 下其实应该就是 ndis 驱动开发
|
14
Dkngit 2021-02-18 10:26:04 +08:00
国内普遍多级 NAT,跨运营商、跨地域、UDP 包 QOS 严重。
考虑到现实情况,支持 TCP 通道 服务器中转 更实用。 |
15
qiuai 2021-02-18 10:55:24 +08:00
我一直在找一个方案,把相隔 2KM 的 2 个家里的电脑做一个局域网,但是不想走中转。
现在是用的 VPN,但是并不太方便。本来想用蒲公英路由器的公网组网,但是看了看好像是走中转的。 楼主这个方案能实现 SMB 共享么? |
16
araaaa OP @Dkngit 所以还是适合都在同一省内,udp 的话用电信目前在大陆区域内 qos 已经比较不错了
|
20
hanguofu 2021-02-18 16:14:35 +08:00
顺便问问: 用哪个软件测试 nat 类型啊 ?
|
21
araaaa OP |
23
1041412569 2021-02-18 20:51:05 +08:00 via Android
有考虑加 arm64 版么,路由器挂了一下运行不了。
|
24
araaaa OP @1041412569 #23 加了个 aarch64 放在 release 里了
|
25
no1xsyzy 2021-02-19 10:25:35 +08:00
@qiuai 我不是很清楚你具体的情况与大部分文章的互通。
但是,所有文章应该都会介绍到 TR069 内网互能 ping 通的程度,一般会到 point-to-point 完成。那么之后就是在 point-to-point 基础上升级到 site-to-site,这部分参考下你采用的传输方案(比如 ov 或者 wg )的 Arch Linux Wiki 或者官方教程或者两相结合。 大致上来说,主要就是 point-to-point 基础上,网关配置路由表或 DHCP 下发路由表或者各设备静态路由表把对端 site 的路由到本地侧节点,两头都打开转发(节点上是否需要 NAT ?)。 |
26
wym0823 2021-02-19 11:51:38 +08:00 via Android
简单试用了一下,服务端和客户端是用 key 绑定的,只能为一个局域网提供服务。不能像 n2n 那样,服务端可以是公共的,多个局域网共用一个服务端。还有 fubuki.exe 编译的时候应该用了不少 vc 运行库,一旦客户端缺少某个运行库就跑不起来,得折腾老半天
|
27
araaaa OP @wym0823 emm 只做了基本功能,只适合自己一个人玩玩或者小范围用。编译的话我是 rust1.50 和 vs2019
|
28
missdeer 2021-02-19 13:20:39 +08:00
@qiuai https://github.com/gnbdev/gnb 貌似符合你的需求,也是基于 UDP 的,但是穿透成功率就有点看运气,你的路由器需要使能 upnp,没有完全开源,那个代码编译不出最终的可执行文件,但是预编译好的程序覆盖的平台还挺广的
|
29
sypopo 2021-02-19 15:45:57 +08:00
感觉还是把 ZeroTier 放在路由器上好用
|
31
qiuai 2021-02-19 20:08:43 +08:00
|
32
mandymak 2021-02-20 12:02:07 +08:00
|
33
hanmiao 2021-02-26 20:24:24 +08:00
要是支持移动端就好了,想安卓手机访问家里的 nas 。一直没找到好的 p2p 方案
|