跳至主要內容

自建内网穿透服务

Cactus li...大约 4 分钟easyTiereasyTier

自建内网穿透服务 EasyTier

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

安装

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

    访问 GitHub Release 页面open in new window 下载适用于您操作系统的二进制文件。Release 压缩包中同时包含命令行程序和图形界面程序。

  2. 通过 crates.ioopen in new window 安装

    cargo install easytier
    
  3. 通过源码安装

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

快速开始

下文仅描述命令行工具的使用,图形界面程序可参考下述概念自行配置。

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

双节点组网

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

image-20240511172954755
image-20240511172954755

在节点 A 上执行:

sudo easytier-core --ipv4 10.144.144.1

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

[alt text

在节点 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
alt textopen in new window
alt text
easytier-cli route
alt textopen in new window
alt text

多节点组网

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

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

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


子网代理(点对网)配置

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

image-20240511173028549
image-20240511173028549

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

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

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

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

    easytier-cli route
    
    EasyTier-01
    EasyTier-01
  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。


使用 WireGuard 客户端接入

EasyTier 可以用作 WireGuard 服务端,让任意安装了 WireGuard 客户端的设备访问 EasyTier 网络。对于目前 EasyTier 不支持的平台 (如 iOS、Android 等),可以使用这种方式接入 EasyTier 网络。

假设网络拓扑如下:

image-20240511173110462
image-20240511173110462

我们需要 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
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3