V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MFWT
V2EX  ›  NAS

是否有相对较好用的『P2P 私人网盘』可供搭建?

  •  
  •   MFWT · 331 天前 · 4980 次点击
    这是一个创建于 331 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    一台旧电脑,安装了 Debian 11 做 NAS ,上面有 SMB 和 WebDAV 服务,也有 Alist 文件面板,也有 Zerotier (但未开启)
    家宽是中国移不动,有 FullCone ,可以 TCP 打洞(之前玩 PT 就是这么干的)

    现状

    用 Zerotier 做 P2P-VPN ,是可行的,也可以做到访问内网的目的,但是需要多开软件,总感觉不是很方便
    也查看过Syncthing这个东西,感觉『同步文件夹』这种工作方式不是很适合我的需求,我就是想要一个可以普普通通地上传下载文件的东西,就够了

    换句话说,我现在需要一个类似群晖 QuickConnect 的东西,具体来说就是:

    1. 有公网就直连,有 Cone-NAT 就打洞直连,实在不行再中转
    2. 连上以后,可以直接在软件里面管理 NAS 上的磁盘文件
    3. 最好可以自建中转端(类似 Zerotier 的 Moon 服务器)
    4. 多客户端( Windows ,Android )支持
    5. 如果有 IPv6 ,优先使用 IPv6 ( v6 是公网)

    能满足这些要求的 P2P 网盘软件,v 友们有无好的推荐?

    附:或者说,是否有成品的『支持同时上报端口的 DDNS 软件』(没有的话我只能自己搞了,比如写个 PHP 脚本,收到打洞软件的 Hook 就把端口写入 txt 文件什么的),这样我就可以用 v4-TCP 打洞的方式直连回家了

    48 条回复    2023-07-02 16:52:02 +08:00
    leorealman
        1
    leorealman  
       331 天前
    owncloud
    MeteorVIP
        2
    MeteorVIP  
       331 天前 via iPhone   ❤️ 1
    FTP ,哈哈哈,
    Linken404
        3
    Linken404  
       331 天前
    自带 DDNS 的网盘类或文件管理类应用好像没听说过,你用 Debian 并且本地网络环境还可以用 ddns 的话,直接参考这个 https://github.com/NewFuture/DDNS 把 ddns 的脚本放服务器上自动执行就行了吧
    多客户端跟群晖最像的是 nextcloud ,可以用它替代 NAS 自带的文件管理器,基本功能感觉还算全
    MFWT
        4
    MFWT  
    OP
       331 天前
    @Linken404 其实并不能 DDNS ,因为我没有公网,只能用 NAT 打洞的方式实现直连
    gogogo2000
        5
    gogogo2000  
       331 天前
    群晖可以做到你说的那几点是因为群晖官方有 qc 服务端,负责和 nas 进行协商和打洞,说白了还是要部署一套系统在公网的,纯 p2p 网盘没有服务端的没有听说过……
    Linken404
        6
    Linken404  
       331 天前
    @MFWT 那如果要使用体验轻便,我目前能想到的最理想的就是 frp 内网穿透或者干脆买个白群晖……当然前者要稳定安全还需要自己弄个有公网 IP 的 vps ,并且群晖的 quickconnect 也挺慢的,可能还没 frp 快呢
    MFWT
        7
    MFWT  
    OP
       331 天前
    @gogogo2000 公网搭建没有问题,我有大把 VPS 可以做握手 /中转服务器,当然如果说是可以直接 P2P 那最好了
    BeautifulSoap
        8
    BeautifulSoap  
       331 天前 via Android
    难以理解什么叫 P2P 网盘
    SenLief
        9
    SenLief  
       331 天前 via iPhone
    你需要的可能不是 p2p 网盘,而是 p2p 同步工具
    MFWT
        10
    MFWT  
    OP
       331 天前
    @Linken404 公网 VPS 有(双栈网络),但是在香港,所以担心 FRP 之类的软件长连接会不会导致服务器被墙
    MFWT
        11
    MFWT  
    OP
       331 天前
    @SenLief 我提到过了,Syncthing 之类的 P2P 同步工具的工作模式不合我要求
    MFWT
        12
    MFWT  
    OP
       331 天前
    @BeautifulSoap

    就是用我在家宽后面的 NAS 做服务端,我出门在外可以直接通过 P2P 的方式(比如,我的条件下就是,FullCone 打洞穿透 NAT )进行访问

    允许再加一台公网服务器,但是优先用于打洞握手,实在不行再用来做中转
    Ericality
        13
    Ericality  
       331 天前
    你都说了 类似于群晖 那直接买个百元过时白裙不就完了?
    (性能无所谓 就当买序列号了 然后套到群晖虚拟机)
    lambdaq
        14
    lambdaq  
       331 天前
    FTP

    FXP 哈哈
    root01
        15
    root01  
       331 天前
    Zerotier 做 P2P-VPN 求教程
    gogogo2000
        16
    gogogo2000  
       331 天前
    如果要打洞,那么必然是需要本地客户端支持的,要不就是客户端软件,要不就是浏览器 webrtc 。

    如果是客户端软件的,那就违反了你要求的第一条“但是需要多开软件,总感觉不是很方便”,如果使用浏览器的,你已经提出了群晖 qc 可以做到了……
    conglovely
        17
    conglovely  
       331 天前
    看样子群晖能满足啊,有公网 IP 的直接 DDNS 连回家,没有的打个洞
    gogogo2000
        18
    gogogo2000  
       331 天前
    如果只是想要做到文件的访问,首先 qc 可以做到。其次你可以用 snapdrop ,instant.io 等 p2p 文件传输工具进行改造
    BeautifulSoap
        19
    BeautifulSoap  
       331 天前
    @MFWT 那你这根本没必要加个 p2p ,你这就是就是普通中心化网盘 /文件管理。任何一个能直接管理文件目录的服务 /网盘都满足你的需求。
    samba ,ftp/sftp ,wedav 都是,如果想要网盘的话选择更多了
    Linken404
        20
    Linken404  
       331 天前
    @MFWT 只做 frp 应该问题不大,我倒是没听说过只因为这个就被封的。另外 13 楼说的感觉也是个不错的点子,你可以弄个 2 手过时白群晖回来,用它的 qc 然后在控制面板里面设置一个反向代理,这样就可以在外面用 qc 的链接直接访问你家里的其他设备页面了,群晖只做一个反向代理工具蹭官方的 qc 服务。
    Gitss
        21
    Gitss  
       331 天前 via Android
    你好 OP 合适您的 p2p 网盘我也研究过,第一个为 resilio 全平台 linux 苹果安卓都有客户端高级功能可以搜索网上秘钥激活,第二个为微力同步,速度好,iov6 支持不错。但是要付费 90 多永久。全平台,他们都有一个功能按需同步可以来实现您的网盘功能,同步的客户端越多速度越快。
    Gitss
        22
    Gitss  
       331 天前 via Android
    第一个速度不咋滴感觉不稳定,第二个稳定需要付费,交互界面没第一个好,都可以在 linux 下安装,你都安装 debian 了,应该没问题
    hing
        23
    hing  
       331 天前
    袋鼠存储,不知道符不符合,当然是旧版,新版改名叫红袋鼠了
    lithiumii
        24
    lithiumii  
       331 天前 via Android
    你都有 zt 了直接用 samba 呗
    IDAEngine
        25
    IDAEngine  
       331 天前
    rsync 老版本,很好用
    IDAEngine
        26
    IDAEngine  
       331 天前   ❤️ 1
    @IDAEngine btsync ,说错了,走 DHT 网络
    MFWT
        27
    MFWT  
    OP
       331 天前
    @Ericality 主要是我现在 NAS 还算够用,而且六盘位白裙也贵啊
    MFWT
        28
    MFWT  
    OP
       331 天前
    @root01 网上教程很多啊,而且这是最基本的操作了
    MFWT
        29
    MFWT  
    OP
       331 天前
    @gogogo2000 不,我是 FullCone 网络,可以做到无客户端打洞(服务端打出来就行了)
    MFWT
        30
    MFWT  
    OP
       331 天前
    @BeautifulSoap 但是我的文件服务器在 NAT 之后(家宽的),SMB 之类的怎么直连呢
    BeautifulSoap
        31
    BeautifulSoap  
       331 天前   ❤️ 1
    @MFWT
    1. 我感觉你的思考非常矛盾,你既然都说你的 NAT 类型是 Full Cone 了,都能无客户端打洞了,那么你不就能在任何地方直连你家 NAS 的服务了?
    2. 你都能用 Zerotier 了,开个 Zerotier 不就行了?我知道你嫌开个软件麻烦,但是对于组网、NAT 穿透来说,只要你想以点对点的形式连接并且没有固定公网 ip ,你无论如何都必须要在通信两端以某种形式运行一个程序(即便你的 NAT 类型是 Full Cone ),因为你不运行某种形式的程序,你的服务器就不知道你客户端的 ip 和端口,你的客户端也不知道你服务器的 ip 和端口。那么问题来了,你这情况最适合 rsync/synthing ,因为这两者是去中心化文件同步工具且自带内网穿透。但你又不喜欢这两种,那么你就只能选中心化的网盘了,但可惜目前根本没有这种功能的中心化网盘。所以你到头来还是必须要运行组网工具
    ohmyself
        32
    ohmyself  
       331 天前   ❤️ 1
    用你翻的工具,比如 clash 或者任何一个工具,在内网上跑一个 ss ,然后 v6 公网连回来,clash 添加一个内网 ss 节点,然后规则里设置内网 IP 走这个节点。这样你在外面就跟在家一样操作内网设备了。
    MFWT
        33
    MFWT  
    OP
       331 天前 via Android
    @BeautifulSoap

    并不矛盾

    1.FullCone 可以无客户端打洞,这是真的,但并非全无代价(最主要的就是,外网端口会变动,因此我需要某种方式来获取最新的可用端口)

    2.Zerotier 可用,这不错,但是问题是 zerotier 本身并不具备有文件管理等功能,他就是个组网工具,因此我需要一个别的程序(比如浏览器)来访问我的文件系统。而我的目标需求就是,寻找一个多客户端可用的网盘系统,这个系统自带打洞和中转回落等功能

    3.syncthing 据说 P2P 传输效果不错,但是我并不是要『文件同步』,因为我不想在不同客户端上都拥有一模一样的一个文件 /文件夹,我只需要上传下载指定的一个或者数个文件,就可以了
    MFWT
        34
    MFWT  
    OP
       331 天前 via Android
    @ohmyself

    你说的方法我也试过,还是类似于 VPN 的方式,确实 v6 可以用,但是我的目标还是 v4 连接性,所以也不太适合
    BeautifulSoap
        35
    BeautifulSoap  
       331 天前
    @MFWT
    我寻思你自己不都已经得出结论了 “最主要的就是,外网端口会变动,因此我需要某种方式来获取最新的可用端口” 。为了获取这种信息,你必须要在服务器和客户端那同时运行一个程序。在这里 Zerotier 就是负责这个工作的,同样 synthing ,rasync 这些软件也有这种功能。
    > 而我的目标需求就是,寻找一个多客户端可用的网盘系统,这个系统自带打洞和中转回落等功能
    我搜了一圈,没有找到符合你这种要求可以内网穿透的中心化网盘。所以你只能选择运行 app 先组网,然后通过内部网络访问 nas 。
    jeesk
        36
    jeesk  
       331 天前
    不能 ddns 直接绑定 zerotier 的虚拟 ip 即可.
    Mythologyli
        37
    Mythologyli  
       331 天前 via Android
    alist 有 webdav driver ,在公网部署 alist ,然后自己写个 driver 在原来的基础上解决 webdav 端口问题应该就可以
    ysc3839
        38
    ysc3839  
       331 天前 via Android
    现成的方案应该是没的,可以考虑给现有的网盘 app 啥的加入 DNS SRV 记录的解析支持,这样的话你就能把打洞得到的端口写到 SRV 记录里面,然后让客户端自动连接。
    参见 https://zh.m.wikipedia.org/wiki/SRV%E8%AE%B0%E5%BD%95
    7RTDKSAK
        39
    7RTDKSAK  
       331 天前
    拿 RCLONE 开 WEBDAV 作为服务端

    拿 WINSCP 作为客户端来连接

    (我随便说得,没有实际测试过)
    IvanLi127
        40
    IvanLi127  
       331 天前 via Android
    我感觉相比 syncthing ,resilio rsync 更像网盘一点,方便分享,能按需下载,能设只读
    DefoliationM
        41
    DefoliationM  
       331 天前
    zerotier 或 tailscale 组网, 然后终端开个 python3 -m http.server 直接浏览器访问,我目前就是这样,可以直接在公司看家里的下好的视频。
    AloneHero
        42
    AloneHero  
       330 天前 via Android
    看下来楼主的需求好像和我的需求有点像,我的需求简单来说就是希望移动设备通过 p2p 方式连接到家里服务器并进行各种管理,但是这个 p2p 连接不是 vpn 形式的,因为感觉开 vpn 有点麻烦。如果楼主找到了合适的应用可以分享一下。我现在在自己做基于 webrtc 的应用
    laoyutang
        43
    laoyutang  
       330 天前 via Android
    看 op 的说法,应该是本身有 v4nat1 和 v6nat0 ,想要在外面直接访问局域网下的某台服务器吧。成品的网盘工具没有听说过带这种功能的,网络工具的话可以看下 softethervpn ,虽然我平时使用它来组件虚拟局域网和搭梯子,但是应该也能满足你需求,按照说明支持 ipv6 不错我没实测过,一直用的 v4
    awinds
        44
    awinds  
       330 天前
    我觉得如果你家里的 ip 固定那就直接 ip 直连回家就行了,具体想做什么,你用 V-P-N 连回家都可以,如果不固定得用 DDNS 拿到你家的公网 ip 然后回家就可以了啊
    YOUXIAZ
        45
    YOUXIAZ  
       330 天前
    seafile
    MFWT
        46
    MFWT  
    OP
       330 天前
    @awinds 说了,没有公网 v4 ,只有公网 v6 ,v6 不是个个地方都有的
    awinds
        47
    awinds  
       330 天前
    @MFWT 有 v6 的地方可以直连回去吧,没有 v6 的地方需要有个转的地方,如云服务器,这样应该是可行的,不想云服务器用 tailscale 应该也是可行
    sbilly
        48
    sbilly  
       292 天前
    私有化部署的 ipfs
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2440 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:57 · PVG 23:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.