OpenWRT 上使用 Easytier 进行异地组网
tags: 软路由, OpenWRT, EasytierOpenWRT 上使用 Easytier 进行异地组网
过段时间可能会搬家,因此提前筹谋做一个异地组网,最初打算使用 OpenVPN 进行组网,但由于配置过于复杂,在 OpenWRT 上怎么都连不通,于是寻求了其他解决方案。在尝试了多种配置方法后,我选择了 Easytier-Gui,操作简便,逻辑简单,只需 20 分钟就能搭建好异地组网环境。在 OpenWRT 上,原生支持网对网,非常舒服。
安装 luci-app-easytier 插件
开源:luci-app-easytier,该项目依赖 kmod-tun 需要先在系统软件包里安装好,一版固件默认都安装了这个软件包。

在 release 里面下载需要安装的软件包,其中 22.03.7 里面是 ipk 安装包 SNAPSHOT 里面是 apk 安装包,*.apk 是 OpenWrt 新版的 APK 包** 对于 apk 包,安装时需要使用跳过证书命令
apk add --allow-untrusted luci-app-easytier-{version}.apk
目前最新版的 OpenWRT 已经弃用 opkg,全面改用 apk 包管理器,因此后面使用 apk 包举例。
下载软件包(按需选择):
ipk 安装包,包含以下文件
- easytier_2.5.0_aarch64_cortex-a53.ipk
- luci-app-easytier_2.5.0_all.ipk
- luci-i18n-easytier-zh-cn_git-26.005.02415-05ac390_all.ipk
apk 安装包,包含以下文件:
- easytier-2.5.0.apk
- luci-app-easytier-2.5.0-r2.apk
- luci-i18n-easytier-zh-cn-26.005.02415~05ac390.apk
将他们上传到 OpenWRT 上:
scp *.{ipk,apk} [email protected]:/tmp/upload/
在 OpenWRT 上安装这几个包:
# opkg
opkg install luci-app-easytier_2.5.0_all.ipk
opkg install luci-i18n-easytier-zh-cn_git-26.005.02415-05ac390_all.ipk
opkg install easytier_2.5.0_aarch64_cortex-a53.ipk
# apk
apk add --allow-untrusted easytier-2.5.0.apk
apk add --allow-untrusted luci-app-easytier-2.5.0-r2.apk
apk add --allow-untrusted luci-i18n-easytier-zh-cn-26.005.02415~05ac390.apk
安装好之后,在网页端退出登录,刷新网页,重新登陆,VPN 栏中能够看到 Easytier 选项:

Easytier 配置

启动方式选择 Web 配置,简单一些,大佬可以用配置文件……其实配置文件也挺简单的,没几行,这里就用 Web 配置了。
Web 服务器地址为路由器 Lan IP 加端口号 22020,注意后面的easytier-web账户名,这个可以随便写,但注意后面注册 Web 管理账号的时候,只能用这个账户名。
自建 Web 控制台

这里的服务端口要与前面的 Web 服务器地址对上,web 界面端口默认 11211,不用改,外网访问默认关闭,最好不要打开,打开之后 easytier 会自行在防火墙中放行 API 端口。
Web 控制台配置

确认两个都启动之后,点击 Web 控制台,打开。


能加载出验证码就说明前面的配置没问题。用户名必须对应上前面 easytier-web 处填写的内容,密码最好设强密码。


- 网络名称可以用中文,密码最好用强密码,网络名称和密码是你这个节点的唯一凭证。
- 如果把这台设备作为“服务端”(Easytier 不分服务端和客户端,只是方便理解),也就是别人来连接你,选“独立”;如果你要连别的节点,选“手动”或者“公共服务器”,填入节点的 ip 地址或域名。
- KCP 代理建议无脑启用,可以降低延迟。
- 子网代理 CIDR,如果启用,当别的节点访问填入填入网段时,本节点会帮忙转发,从而实现内网访问。
- 其他功能自行研究。
启动网络即可,Easytier 会自动添加防火墙区域转发设置和通信规则,建议不要私自改动自动添加的这些规则。


在外网设备连接这个节点:

当然,访问内网也不在话下。

最后,为了用的舒服,最好给节点做一个 ddns,因为 IPv6 地址变化比较多。
一些高级用法
- 子网代理网段映射
2. 网对网

网对网可以实现两个局域网互通的功能,但前提条件是部署 Easytier 的节点必须是整个局域网的网关。因此,OpenWRT 设备上部署 Easytier,做网对网是非常合适的。
官方说明如下:
要实现网对网,需要 节点 A 是 192.168.1.0/24 子网的网关。两个 EasyTier 节点的启动及配置参数如下:
节点 A
# 启动 EasyTier 并代理 192.168.1.0/24 网段,并使用公共服务器帮助组网
easytier-core -i 10.144.144.1 -n 192.168.1.0/24 -p tcp://<共享节点IP>:11010 --network-name n2n_test
# 允许网关转发流量,并配置防火墙允许转发流量
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
节点 B
# 启动 EasyTier 并代理 10.1.1.0/24 网段,并使用公共服务器帮助组网
easytier-core -i 10.144.144.2 -n 10.1.1.0/24 -p tcp://<共享节点IP>:11010 --network-name n2n_test
有点难看懂,其实只需要注意:
# 允许网关转发流量,并配置防火墙允许转发流量
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
这个命令是针对 Linux 系统的,开启系统的 IPv4 转发功能,并在防火墙允许你的网段(示例为 192.168.1.0/24)转发。如果没有防火墙,那么开启 IPv4 转发就行了。
而针对 OpenWRT……我们本来就是路由系统,各种转发早就轻车熟路,因此你什么都不需要做就能拥有该功能。
如果是旁路由架构,注意网关必须指向部署节点才能拥有该功能。
- 无 Tun 模式与 SOCKS5
由于创建 TUN 设备需要 ROOT 权限,对于一些无法获取 Root 权限的环境,EasyTier 也提供了不依赖 TUN 的使用方法。只需在启动 EasyTier 时,增加 –no-tun 参数即可。
使用无 TUN 模式组网时,节点可以通过虚拟 IP 被访问(TCP、UDP 和 ICMP 都支持),也可以做子网代理(使用 -n 参数)。但是无法主动发起对其他节点的访问。
为了在无 TUN 模式下主动访问其他节点,可使用 EasyTier 的 SOCKS5 服务器功能。
EasyTier 支持创建 SOCKS5 服务器,节点上的其他程序可以通过将代理设置为 EasyTier 的 SOCKS5 服务,即可访问虚拟网和虚拟网中的其他代理子网。
SOCKS5 服务的开启参数形为 –socks5 12333,将此参数加入 easytier-core 启动命令后,本机的 12333 端口即可服务于 SOCKS5 客户端。目前 SOCKS5 服务端无需用户名和密码验证,可直接使用。
只有安卓手机等比较特殊的设备会用上这个功能。