自建内网穿透服务
自建内网穿透服务 EasyTier
一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。
安装
下载预编译的二进制文件
访问 GitHub Release 页面 下载适用于您操作系统的二进制文件。Release 压缩包中同时包含命令行程序和图形界面程序。
通过 crates.io 安装
cargo install easytier
通过源码安装
cargo install --git https://github.com/KKRainbow/EasyTier.git
快速开始
下文仅描述命令行工具的使用,图形界面程序可参考下述概念自行配置。
确保已按照 安装指南 安装 EasyTier,并且 easytier-core 和 easytier-cli 两个命令都已经可用。
双节点组网
假设双节点的网络拓扑如下
在节点 A 上执行:
sudo easytier-core --ipv4 10.144.144.1
命令执行成功会有如下打印。
[
在节点 B 执行
sudo easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010
测试联通性
两个节点应成功连接并能够在虚拟子网内通信
ping 10.144.144.2
使用 easytier-cli 查看子网中的节点信息
easytier-cli peer
easytier-cli route
多节点组网
基于刚才的双节点组网例子,如果有更多的节点需要加入虚拟网络,可以使用如下命令。
sudo easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010
其中 --peers
参数可以填写任意一个已经在虚拟网络中的节点的监听地址。
子网代理(点对网)配置
假设网络拓扑如下,节点 B 想将其可访问的子网 10.1.1.0/24 共享给其他节点。
则节点 B 的 easytier 启动参数为(新增 -n 参数)
sudo easytier-core --ipv4 10.144.144.2 -n 10.1.1.0/24
子网代理信息会自动同步到虚拟网络的每个节点,各个节点会自动配置相应的路由,节点 A 可以通过如下命令检查子网代理是否生效。
检查路由信息是否已经同步,proxy_cidrs 列展示了被代理的子网。
easytier-cli route
测试节点 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。
使用 WireGuard 客户端接入
EasyTier 可以用作 WireGuard 服务端,让任意安装了 WireGuard 客户端的设备访问 EasyTier 网络。对于目前 EasyTier 不支持的平台 (如 iOS、Android 等),可以使用这种方式接入 EasyTier 网络。
假设网络拓扑如下:
我们需要 iPhone 通过节点 A 访问 EasyTier 网络,则可进行如下配置:
在节点 A 的 easytier-core 命令中,加入 --vpn-portal 参数,指定 WireGuard 服务监听的端口,以及 WireGuard 网络使用的网段。
# 以下参数的含义为: 监听 0.0.0.0:11013 端口,WireGuard 使用 10.14.14.0/24 网段
sudo easytier-core --ipv4 10.144.144.1 --vpn-portal wg://0.0.0.0:11013/10.14.14.0/24
easytier-core 启动成功后,使用 easytier-cli 获取 WireGuard Client 的配置。
$> easytier-cli vpn-portal
portal_name: wireguard
############### client_config_start ###############
[Interface]
PrivateKey = 9VDvlaIC9XHUvRuE06hD2CEDrtGF+0lDthgr9SZfIho=
Address = 10.14.14.0/32 # should assign an ip from this cidr manually
[Peer]
PublicKey = zhrZQg4QdPZs8CajT3r4fmzcNsWpBL9ImQCUsnlXyGM=
AllowedIPs = 10.144.144.0/24,10.14.14.0/24
Endpoint = 0.0.0.0:11013 # should be the public ip(or domain) of the vpn server
PersistentKeepalive = 25
############### client_config_end ###############
connected_clients:
[]
使用 Client Config 前,需要将 Interface Address 和 Peer Endpoint 分别修改为客户端的 IP 和 EasyTier 节点的 IP。将配置文件导入 WireGuard 客户端,即可访问 EasyTier 网络。
其他配置
可使用 easytier-core --help
查看全部配置项
- 0
- 0
- 0
- 0
- 0
- 0