EasyTier 私有虚拟网络搭建全流程

EasyTier 私有虚拟网络搭建全流程

EasyTier简介

在国内复杂的网络环境中,内网穿透和异地组网始终是个棘手问题。之前折腾过 Zerotier、Tailscale 等工具的朋友可能深有体会,网络通畅时,P2P 直连体验流畅。可一旦遇到 NAT 复杂或网络波动,就不得不依赖国外中继服务器 —— 延迟飙升、速度骤降几乎成了常态。

最近接触到了国内的一个开源穿透软件EasyTier ,EasyTier是一个简单、安全、去中心化的内网穿透 SD-WAN 方案,使用 Rust 语言实现。它实现了零拷贝和全链路高性能,性能与主流组网软件相当。EasyTier 支持跨平台运行,包括 MacOS/Linux/Windows/FreeBSD/Android,未来还将支持 iOS。可执行文件静态链接,部署简单。

EasyTier的特点

  • 去中心化:无需依赖中心化服务,节点平等且独立。
  • 安全:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。
  • 高性能:全链路零拷贝,性能与主流组网软件相当。
  • 跨平台:支持 MacOS/Linux/Windows/FreeBSD/Android,未来将支持 iOS。
  • 无公网 IP 组网:支持利用共享的公网节点组网。
  • NAT 穿透:支持基于 UDP 的 NAT 穿透,在复杂的网络环境下也能建立稳定的连接。
  • 子网代理(点对网):节点可以将可访问的网段作为虚拟网暴露给其他节点,允许其他节点通过这些节点访问子网。
  • 智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
  • TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
  • 高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。
  • IPV6 支持:支持利用 IPV6 组网。

安装(docker-compose)

服务端配置

创建配置目录

sudo mkdir -p /opt/easytier  

创建一个docker-compose.ymlconfig.yaml文件:

vim /opt/easytier/docker-compose.yml

docker-compose.yml填入以下内容(注意#号标注相关提示):

services:
  # 可选:自动更新镜像的watchtower
  watchtower:
    image: containrrr/watchtower:latest
    container_name: easytier-watchtower
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600 --cleanup --label-enable

  # easytier服务端
  easytier-server:
    image: easytier/easytier:latest  # 国内:m.daocloud.io/docker.io/easytier/easytier:latest
    container_name: easytier-server
    hostname: easytier-server  # 与配置文件中hostname一致
    labels:
      com.centurylinklabs.watchtower.enable: 'true'  # 允许watchtower更新
    restart: unless-stopped
    network_mode: host  # 必须用host模式,确保端口监听正常
    cap_add:
      - NET_ADMIN  # 允许网络配置(如创建tun设备)
      - NET_RAW
    environment:
      - TZ=Asia/Shanghai
    devices:
      - /dev/net/tun:/dev/net/tun  # 提供WireGuard隧道支持
    volumes:
      - /opt/easytier:/root  # 挂载配置目录到容器内/root
      - /etc/machine-id:/etc/machine-id:ro  # 保持机器标识一致
    command: --config-file /root/config.yaml  # 加载配置文件

config.yaml文件输入以下核心配置文件内容

# 服务端基础信息(唯一标识)
hostname = "easytier-server"  # 服务端主机名(自定义,需唯一)
instance_name = "primary-server"  # 实例名称(区分多个服务端)
instance_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"  # 标准UUID(必填,需唯一,生成方法见下方)
ipv4 = "10.126.126.1/24"  # 虚拟网络IP(建议用网段首个IP,如.1)
dhcp = false  # 服务端固定IP,关闭DHCP

# 监听端口(客户端通过这些端口连接)
listeners = [
    "tcp://0.0.0.0:11010",  # TCP协议监听(推荐客户端优先使用)
    "udp://0.0.0.0:11010",  # UDP协议监听
    "wg://0.0.0.0:11011"    # WireGuard加密协议监听(需tun设备支持)
]

# RPC端口(0表示随机分配,服务端无需固定)
rpc_portal = "0.0.0.0:0"

# 网络标识(客户端必须完全匹配才能加入网络)
[network_identity]
network_name = "my-easytier-network"  # 网络名称(自定义,如公司/项目名)
network_secret = "your-secure-secret-123"  # 网络密钥(类似密码,建议复杂字符串)

# 服务端无需配置[[peer]](客户端会主动连接服务端)
# 若多服务端集群,可在此添加其他服务端的uri(如"tcp://server2-ip:11010")

在当前目录下,运行代码直接编排容器上线即可:

# 启动容器
docker-compose up -d
# 查看日志(确认启动成功)
docker logs -f easytier-server

开放防火墙端口

# 开放TCP/UDP 11010和WireGuard 11011端口
sudo ufw allow 11010/tcp
sudo ufw allow 11010/udp
sudo ufw allow 11011/udp
sudo ufw reload
# 若用云服务器(如阿里云/腾讯云),需在安全组中同步开放上述端口

客户端配置

客户端需连接服务端加入虚拟网络,配置核心是匹配服务端的网络标识,并指定服务端的连接地址。

安装配置文件docker-compose.yml与服务端一致,只需要修改和config.yaml文件

# 客户端基础信息(唯一标识)
hostname = "client-pc-01"  # 客户端主机名(自定义,需唯一)
instance_name = "office-client"  # 实例名称(区分多个客户端)
instance_id = "a1b2c3d4-5678-4f5e-8a9b-0c1d2e3f4a5b"  # 客户端唯一UUID(与服务端不同)
ipv4 = "10.126.126.2/24"  # 虚拟网络IP(与服务端同一网段,如.2、.3等)
dhcp = false  # 客户端固定IP

# 客户端无需开放监听(若需被其他节点主动连接,可添加监听端口)
listeners = []

# RPC端口(随机分配)
rpc_portal = "0.0.0.0:0"

# 网络标识(必须与服务端完全一致)
[network_identity]
network_name = "my-easytier-network"  # 与服务端network_name相同
network_secret = "your-secure-secret-123"  # 与服务端network_secret相同

# 需连接的服务端地址(至少填写服务端的TCP/UDP地址)
[[peer]]
uri = "tcp://服务端公网IP:11010"  # 替换为服务端的公网IP或域名

[[peer]]
uri = "udp://服务端公网IP:11010"  # 可选,提高连接稳定性

客户端验证

日志中出现以下信息说明连接成功:

successfully connected to peer: tcp://服务端IP:11010
virtual network ip assigned: 10.126.126.2

测试虚拟网络通信,客户端执行ping 10.126.126.1(服务端虚拟 IP),能 ping 通则说明网络互通。

使用 easytier-cli peer 查看子网中的节点信息:

easytier-cli peer

输出示例:

image-20251026235557438

使用 easytier-cli route 查看子网中的路由信息:

easytier-cli route

输出示例:

image-20251026235726258

使用 easytier-cli node 查看本节点的信息:

easytier-cli node

输出示例:

image-20251026235758346

这是windows下gui的配置情况

image-20251026235149588

关闭转发

默认情况下,Easytier 的每个节点都允许为其他虚拟网提供转发服务,即使已加入一个虚拟网。若需改变此行为,可通过 --relay-whitelist 参数限定可转发的网络白名单(空格分隔的通配符列表)。当列表为空时,则不会为所有其他网络提供转发服务。例如:

easytier-core --relay-whitelist relay-all --relay-all-peer-rpc

只需设置参考白名单为空,同时仅允许转发 RPC 流量即可。

小结

用了一段时间了,从实际用下来的感受看,EasyTier 最关键的好处就是 ——特别适配咱们国内的网络环境。不管是面对复杂的 NAT 网络,穿透成功率,还是用 WireGuard 加密传输的速度和稳定性,都比那些依赖国外中继服务器的工具稳一些。

而且它是去中心化的 P2P 方案,不用怕单个服务器挂了整个网络就崩了,节点之间直接连接,还能最大程度减少延迟。另外它还支持多平台,不同设备组网特别方便。不管是个人异地办公、家里设备互联,还是小团队做内网穿透,都很合适。

感兴趣的小伙伴不妨来试试 EasyTier。

参考

  1. 快速组网 | EasyTier - 简单、安全、去中心化的异地组网方案
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇