EasyTier/README_CN.md
Sijie.Sun 90110aa587
add wireguard tunnel (#42)
peers can connect with each other using wireguard protocol.
2024-03-28 10:01:25 +08:00

6.0 KiB
Raw Blame History

EasyTier

GitHub GitHub last commit GitHub issues GitHub actions

简体中文 | English

一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。

特点

  • 去中心化:无需依赖中心化服务,节点平等且独立。
  • 安全:支持利用 WireGuard 加密通信。
  • 跨平台:支持 MacOS/Linux/Windows未来将支持 IOS 和 Android。可执行文件静态链接部署简单。
  • 无公网 IP 组网:支持利用共享的公网节点组网,可参考 配置指南
  • NAT 穿透:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。
  • 子网代理(点对网):节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。
  • 智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
  • TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
  • 高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。

安装

  1. 下载预编译的二进制文件

    访问 GitHub Release 页面 下载适用于您操作系统的二进制文件。

  2. 通过 crates.io 安装

    cargo install easytier
    
  3. 通过源码安装

    cargo install --git https://github.com/KKRainbow/EasyTier.git
    

快速开始

确保已按照 安装指南 安装 EasyTier并且 easytier-core 和 easytier-cli 两个命令都已经可用。

双节点组网

假设双节点的网络拓扑如下

flowchart LR

subgraph 节点 A IP 22.1.1.1
nodea[EasyTier\n10.144.144.1]
end

subgraph 节点 B
nodeb[EasyTier\n10.144.144.2]
end

nodea <-----> nodeb

  1. 在节点 A 上执行:

    sudo easytier-core --ipv4 10.144.144.1
    

    命令执行成功会有如下打印。

    alt text

  2. 在节点 B 执行

    sudo easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010
    
  3. 测试联通性

    两个节点应成功连接并能够在虚拟子网内通信

    ping 10.144.144.2
    

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

    easytier-cli peer
    

    alt text

    easytier-cli route
    

    alt text


多节点组网

基于刚才的双节点组网例子,如果有更多的节点需要加入虚拟网络,可以使用如下命令。

sudo easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010

其中 --peers 参数可以填写任意一个已经在虚拟网络中的节点的监听地址。


子网代理(点对网)配置

假设网络拓扑如下,节点 B 想将其可访问的子网 10.1.1.0/24 共享给其他节点。

flowchart LR

subgraph 节点 A IP 22.1.1.1
nodea[EasyTier\n10.144.144.1]
end

subgraph 节点 B
nodeb[EasyTier\n10.144.144.2]
end

id1[[10.1.1.0/24]]

nodea <--> nodeb <-.-> id1

则节点 B 的 easytier 启动参数为(新增 -n 参数)

sudo easytier-core --ipv4 10.144.144.2 -n 10.1.1.0/24

子网代理信息会自动同步到虚拟网络的每个节点,各个节点会自动配置相应的路由,节点 A 可以通过如下命令检查子网代理是否生效。

  1. 检查路由信息是否已经同步proxy_cidrs 列展示了被代理的子网。

    easytier-cli route
    

    alt text

  2. 测试节点 A 是否可访问被代理子网下的节点

    ping 10.1.1.2
    

无公网IP组网

EasyTier 支持共享公网节点进行组网。目前已部署共享的公网节点 tcp://easytier.public.kkrainbow.top:11010

使用共享节点时,需要每个入网节点提供相同的 --network-name--network-secret 参数,作为网络的唯一标识。

以双节点为例,节点 A 执行:

sudo easytier-core -i 10.144.144.1 --network-name abc --network-secret abc -e 'tcp://easytier.public.kkrainbow.top:11010'

节点 B 执行

sudo easytier-core --ipv4 10.144.144.2 --network-name abc --network-secret abc -e 'tcp://easytier.public.kkrainbow.top:11010'

命令执行成功后,节点 A 即可通过虚拟 IP 10.144.144.2 访问节点 B。


其他配置

可使用 easytier-core --help 查看全部配置项

路线图

  • 完善文档和用户指南。
  • 支持 TCP 打洞等特性。
  • 支持 Android、IOS 等移动平台。
  • 支持 Web 配置管理。

社区和贡献

我们欢迎并鼓励社区贡献!如果你想参与进来,请提交 GitHub PR。详细的贡献指南可以在 CONTRIBUTING.md 中找到。

相关项目和资源

  • ZeroTier: 一个全球虚拟网络,用于连接设备。
  • TailScale: 一个旨在简化网络配置的 VPN 解决方案。
  • vpncloud: 一个 P2P Mesh VPN

许可证

EasyTier 根据 Apache License 2.0 许可证发布。

联系方式