之前使用WireGuard组网, 有时会遇到UDP被限制的情况
如果要udp2raw将UDP转为TCP发送, 那么多了一层势必要增加损耗, 并且会降低稳定性, 于是选了则EasyTier作为新的组网方案
下载
直接去 GitHub 下载最新的版本就可以
解压后会得到 cli
, core
, web
三个文件, 本教程使用到的是cli
, core
两个, web
是可以在网页进行配置, 但博主更喜欢编辑配置文件
将这几个文件放在 /path/to/vpn/exec/
目录下
编辑配置文件
我的配置文件放在 /path/to/vpn/data/config.toml
这里只给出了其中一个节点的配置, 具体每个参数的作用已经在注释中给出
注意如果两个节点之间没有通过
[[peer]]
指定对方的IP来建立直接连接, 那么这两个节点就会根据配置自动选择最合适的路由, 并通过其他节点进行通信. 当然你也可以开启P2P来让EasyTier自动打洞
1instance_name = "server-name" # 给当前机器起个名字
2instance_id = "411d4bdf-96a7-4f89-abd6-964685d78894" # UUID, 可以直接使用 cat /proc/sys/kernel/random/uuid 获取一个
3ipv4 = "10.0.7.1/16" # 当前机器分配的IP和网段
4dhcp = false # 关闭DHCP
5rpc_portal = "127.0.0.1:10001" # RPC监听, 用于查看EasyTier的组网信息, 如路由
6listeners = [ # 监听的服务端口
7 "tcp://0.0.0.0:10002",
8 "tcp://[::]:10002",
9# "udp://0.0.0.0:10002",
10# "udp://[::]:10002",
11 "wss://0.0.0.0:10003/",
12 "wss://[::]:10003/",
13]
14exit_nodes = []
15routes = [ # 允许那些IP的节点成为中继节点, 如果不指定那就全都允许
16 "10.0.5.1", # 允许 10.0.5.1 中转流量
17 "10.0.6.0/24", # 允许 10.0.6.0/24 网段所有机器中转流量
18 "10.0.7.0",
19]
20
21[network_identity] # 身份验证
22network_name = "akvicor-vpn" # 网络的名字
23network_secret = "xxxxxxx" # 网络的密码
24
25[flags]
26dev_name = "vpn" # 创建的虚拟网卡的名字
27enable_ipv6 = true # 是否启用IPv6
28no_tun = false # 启用虚拟网卡
29use_smoltcp = false # 使用系统提供的网络协议栈
30mtu = 1380 # 最大传输单元
31latency_first = false # 两个节点之间存在多条路径时, 是否优先选择低延迟的线路或路由来进行通信, 无论带宽和吞吐量如何
32disable_p2p = true # 关闭P2P打洞
33default_protocol = "tcp" # 默认使用TCP传输
34enable_encryption = true # 开启加密
35enable_exit_node = false # 启用出口节点
36foreign_network_whitelist = "" # 允许访问的外部网络 IP 或子网白名单
37relay_network_whitelist = "" # 允许中继的网络范围白名单, 中继服务只会针对此范围的网络流量
38relay_all_peer_rpc = false # 是否允许转发所有 Peer 的 RPC 请求
39
40[[peer]]
41uri = "tcp://1.2.3.4:10002" # 当前节点与 公网IP为1.2.3.4的节点建立直接连接
42
43[[peer]]
44uri = "tcp://2.3.4.5:10002" # 当前节点与 公网IP为2.3.4.5的节点建立直接连接
配置服务
vpn.service
这里我并没有使用官方提供的service模板, 而是使用了自己的一套模板
1[Unit]
2Description=vpn
3After=network.target auditd.service syslog.target
4ConditionFileIsExecutable=/path/to/vpn/exec/core
5
6[Service]
7User=root
8Group=root
9StartLimitInterval=5
10StartLimitBurst=10
11ExecStart=/path/to/vpn/exec/core -c /path/to/vpn/data/config.toml
12WorkingDirectory=/path/to/vpn/data
13Restart=always
14RestartSec=15
15LimitNPROC=32768
16LimitNOFILE=1048576
17# CAP_NET_ADMIN:允许执行网络管理任务
18# CAP_NET_RAW:允许使用原始套接字(ping需要)
19# CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口
20CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE
21AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE
22
23[Install]
24WantedBy=multi-user.target
在 /etc/systemd/system
目录下创建 vpn.service
后
- 开机自启:
systemctl enable vpn
- 启动:
systemctl start vpn
查看路由
1./cli -p 127.0.0.1:10001 route
windows自启动
下载 nssm.exe 工具, 这是一个自动为可执行程序创建服务的工具i. 解压后找到适合自己系统的 nssm.exe
程序
将 config.toml
, nssm.exe
放在 easytier
的目录, 然后执行下面的而bat脚本, 会自动创建一个名为 easytier_vpn
的服务.
1@echo off
2chcp 65001
3
4:: 获取当前批处理文件的目录并导航到该目录
5set "CURRENT_DIR=%~dp0"
6
7:: 构建命令字符串
8set COMMAND=%CURRENT_DIR%/nssm.exe install easytier_vpn "%CURRENT_DIR%/easytier-core" -c "%CURRENT_DIR%/config.toml"
9
10
11:: 确保删除服务之前先停止它(如果存在)
12echo 正在停止并删除服务(如果存在)...
13%CURRENT_DIR%/nssm.exe stop easytier_vpn
14%CURRENT_DIR%/nssm.exe remove easytier_vpn confirm
15
16:: 执行组装好的命令
17echo 正在执行命令:%COMMAND%
18%COMMAND%
19
20:: 设置服务为延迟自动启动
21%CURRENT_DIR%/nssm.exe set easytier_vpn Start SERVICE_DELAYED_AUTO_START
22%CURRENT_DIR%/nssm.exe start easytier_vpn
23echo 服务已安装并设置为了自启动!
24pause
如果需要卸载, 可以执行下面的脚本
1@echo off
2chcp 65001
3
4:: 获取当前批处理文件的目录并导航到该目录
5set "CURRENT_DIR=%~dp0"
6
7%CURRENT_DIR%/nssm.exe stop easytier_vpn
8%CURRENT_DIR%/nssm.exe remove easytier_vpn confirm
9echo 卸载命令执行完成!
10pause
注意: Windows默认禁止公开网络的Ping, 如果想要其他机器能ping通Windows, 需要在Windows中开启公开网络的防火墙
除另有声明外,本博客文章均采用 知识共享 (Creative Commons) 署名 4.0 国际许可协议 进行许可。转载请注明原作者与文章出处。