【ZeroTier自研之路】用ZeroNet在ZeroTier中建去中心化网站

在研究ZeroTier之前,花了很多时间研究过ZeroNet,是个不错的去中心化项目,只是感觉要倒闭了,很多年没有更新。做过一个ZeroNet的地址生成器https://blog.csdn.net/u011701632/article/details/147491664?fromshare=blogdetail&sharetype=blogdetail&sharerId=147491664&sharerefer=PC&sharesource=u011701632&sharefrom=from_link

现在尝试将两个Zero结合起来,做一个新的东西。

首先,理解两者核心差异

  • ZeroTier:智能层-2虚拟以太网交换机

    • 层级:OSI模型的第2层(数据链路层)或第3层(网络层)。

    • 作用:它将分布在全球的设备连接到一个单一的、安全的虚拟局域网中。在这个网络里,所有设备都像插在同一个物理交换机上一样,可以获得内网IP,并像在本地网络中一样直接通信(P2P)。

    • 核心:网络基础设施。它解决的是"设备如何安全、直接地找到彼此并建立连接"的问题。

  • ZeroNet:基于比特币加密和BitTorrent网络的去中心化网站

    • 层级:OSI模型的第7层(应用层)。

    • 作用:它使用比特币的密码学来保护地址和内容完整性,使用BitTorlot的网络(类似于Tracker和DHT)来发现节点和分发数据。它创建了一个无需中心服务器的、抗 censorship 的网站托管和访问平台。

    • 核心:去中心化应用和内容分发。它解决的是"如何在不依赖中心服务器的情况下发布和同步数据"的问题。

    • 会产生什么新东西

      • 私有的、高速的ZeroNet网络 :ZeroNet原本的节点发现和通信是公开的,任何人都可以加入。而运行在ZeroTier之上后,你可以创建一个私有的去中心化网站网络。只有你ZeroTier网络中的成员才能访问和同步这些网站。

      • 更高的性能与可靠性:ZeroTier的P2P直连成功率非常高,并且针对各种复杂的NAT环境进行了优化。ZeroNet基于此可以获得更稳定、更快速的节点连接,尤其是在那些难以建立直连的网络中(如对称型NAT的企业网、4G/5G网络)。

      • 局域网速度:当两个设备在同一个物理网络(如同一个Wi-Fi下)时,ZeroTier会直接建立局域网连接。这时ZeroNet的同步速度将达到局域网文件共享的级别,这对于同步大型去中心化网站或文件非常有吸引力。

      • 增强的安全性:ZeroTier的通信是加密的(虽然ZeroNet本身也可能加密,但ZeroTier增加了额外一层),而且网络访问完全由你控制。这可以用来构建一个企业内部的文档协作系统、私有代码仓库等,既享受了ZeroNet的分布式容灾特性,又保证了数据只在内部流动。

      • 假设你和你几个朋友想建立一个私人的博客圈子。

      • 创建网络:你在ZeroTier Central上创建一个网络,记下Network ID。

      • 加入设备:你和朋友们各自的电脑、树莓派都安装ZeroTier,加入这个网络,获得内网IP。

      • 搭建博客:每个人在自己的设备上安装ZeroNet,并创建自己的博客站点。修改ZeroNet的配置文件,让它监听在ZeroTier的内网IP上,并允许来自这个IP段的连接。

      • 相互同步:每个人将朋友的ZeroTier内网IP添加到ZeroNet的站点同步列表中。

      • 成果:现在,你们拥有了一个完全私有、速度极快、不经过互联网公共节点的去中心化博客圈。你们的所有文章和数据,只在你和朋友的设备之间同步和存储。即使其中一两个人的电脑关机,其他人的博客依然可以通过在线朋友的设备访问到。如果ZeroTier网络设置得当,你们甚至可以互相访问彼此设备上的其他服务,比如通过内网IP直接SSH到朋友的树莓派,或者访问他分享的文件。

      前提条件

      • 两台设备(例如设备A和设备B)均已安装ZeroNet,并能正常运行(默认监听在127.0.0.1:43110)。

      • 两台设备均已安装ZeroTier客户端,并加入了同一个ZeroTier网络(记网络ID为 YOUR_NETWORK_ID)。

      • 两台设备在ZeroTier网络中已获得内网IP(例如设备A:10.147.20.2,设备B:10.147.20.3),并能互相ping通。

      • 确保两台设备的防火墙允许ZeroNet端口(默认43110)的入站连接(仅对ZeroTier接口开放即可,更安全)。

      步骤一:确认ZeroTier网络连通性

      在每台设备上执行以下命令,确保它们能通过内网IP互通。

      复制代码
      # 在设备A上 ping 设备B的ZeroTier IP
      ping 10.147.20.3
      
      # 在设备B上 ping 设备A的ZeroTier IP
      ping 10.147.20.2

      如果无法ping通,请检查ZeroTier的成员授权(在ZeroTier Central管理页面中勾选允许)以及防火墙规则。

      步骤二:修改ZeroNet配置文件

      ZeroNet的配置文件通常位于ZeroNet根目录下的 zeronet.confzeronet.py 同级目录的 zeronet.conf。如果该文件不存在,可以手动创建。

      1. 停止正在运行的ZeroNet进程

      复制代码
      # 查找ZeroNet进程并停止(根据实际情况)
      pkill -f zeronet.py

      2. 编辑配置文件

      使用文本编辑器(如nano、vim)打开或创建 zeronet.conf

      复制代码
      cd /path/to/ZeroNet
      nano zeronet.conf

      3. 添加或修改以下配置项

      复制代码
      [global]
      ui_ip = 0.0.0.0
      ui_port = 43110
      
      ui_host = 10.147.20.2
      ui_host = 127.0.0.1
      • 监听所有接口0.0.0.0 表示绑定到所有可用的网络接口,包括:

        • 127.0.0.1(本地回环)

        • 10.147.20.2(ZeroTier内网IP)

        • 以及其他任何网络接口(如Wi-Fi的192.168.x.x)

      • 自动适应:不需要手动指定具体的ZeroTier IP,系统会自动处理所有连接请求

      • ZeroTier网络自动生效:只要两台设备在同一个ZeroTier网络中,就能直接通过对方的ZeroTier IP访问

      访问方式

      配置好后:

      • 本机访问http://127.0.0.1:43110

      • 设备A访问设备Bhttp://10.147.20.3:43110

      注意事项

      • 安全性提醒 :监听 0.0.0.0 意味着所有能连接到这台设备网络接口的人都可以访问ZeroNet界面。但在你的场景中:

        • ZeroTier网络是私有的

        • 只有加入你ZeroTier网络的设备才能通过内网IP访问

        • 所以安全性是有保障的

      • 防火墙 :仍然需要在Windows防火墙中允许 43110 端口的入站连接

      • 节点发现:虽然ZeroNet会自动尝试发现节点,但为了更快建立连接,可以在配置文件中添加对方的IP作为初始节点:

        ini

        复制代码
        [trackers]
        peer = 10.147.20.3:43110
      • 设备B访问设备Ahttp://10.147.20.2:43110

      总结

      通过以上步骤,你已经成功将ZeroNet运行在ZeroTier提供的内网之上,构建了一个私有的、高速的去中心化站点网络。所有站点数据仅在ZeroTier网络成员之间同步,既保留了ZeroNet的分布式特性,又获得了ZeroTier的安全内网通信优势。

      你可以在此基础上进一步探索,比如创建私有博客圈、文件共享站点等。享受这个强大的组合吧!

相关推荐
m0_738120722 小时前
渗透测试——Raven2靶机横向提权详细过程(PHPMailer框架利用,UDF提取)
网络·安全·web安全·ssh
浅念-2 小时前
C++ STL vector
java·开发语言·c++·经验分享·笔记·学习·算法
久菜盒子工作室2 小时前
20260218为什么道琼斯指数新高了?
经验分享
Bruce_Liuxiaowei2 小时前
eScan杀毒软件供应链攻击剖析和解读:一次针对信任链的精准打击
网络·安全·系统安全·信任链
链上日记2 小时前
WEEX 2025年度报告
大数据·人工智能·区块链
Starry_hello world2 小时前
Linux 网络(1)
网络
小白探索世界欧耶!~11 小时前
Vue2项目引入sortablejs实现表格行拖曳排序
前端·javascript·vue.js·经验分享·elementui·html·echarts
@hdd11 小时前
Kubernetes 网络模型:Pod 通信、Service 网络与 CNI
网络·云原生·容器·kubernetes
是做服装的同学13 小时前
服装软件ERP管理系统实现智能化流程管控与业务协同
大数据·经验分享·其他