什么是异地组网?
异地组网,也称为远程组网或Site-to-Site VPN,是一种通过公共网络将两个或多个地理位置不同的局域网(LAN)连接起来,形成一个统一的虚拟局域网(VLAN)的技术。简单来说,它能让身处不同地方的设备,如同在同一个局域网内一样互相访问和通信。无论是在家、在办公室,还是在全球任何一个角落,只要设备连接到这个虚拟网络,就能安全、便捷地共享资源。
为何需要异地组网?
- 高效地实现内网穿透:对于个人使用而言,使用异地组网实现内网穿透不同于 frp 等端口转发的方式,单次部署就能穿透所有端口,实现一劳永逸。
- 多设备互联:异地组网的一大要点就是其具有组网的优势,特别是当机器数量比较多时,可以轻松实现多设备互联,这也是 frp 做不到的一点。
- 隐私性与安全性:不同于 frp,异地组网需要本地安装有客户端,且同样可以设置身份认证与加密传输,相比反向代理到公网在隐私性和安全性上表现更好。
Easytier 有什么优势?
在众多异地组网工具中,Zerotier 和 Tailscale 是大家熟悉的选择。然而新兴的开源工具 Easytier 凭借其独特的优势,正成为一个可行的替代方案,目前在 GitHub 上已经有 5.8k 个 star。下面介绍一下 Easytier 相比 Zerotier 和 Tailscale 的主要优势:
- 完全开源且社区驱动:完全开源免费,无付费版本,目前 GitHub 上更新活跃。
- 去中心化:节点平等且独立,无需中心化服务。即使某个节点挂掉,只要网络中其它节点间存在可达路径,整个虚拟网络仍然能够正常通讯。
- 支持 TCP 连接:其它使用 UDP 连接的工具都具有一个相同的缺点,即容易被运营商 QoS(简单理解就是对 UDP 限速)。Easytier 可以手动指定使用的连接协议,从而避免这个问题。
- 支持 P2P:打洞成功后,可以不经过中间节点中转,实现点对点直连。当然这个功能 Zerotier 和 Tailscale 也支持。
- 易于使用:支持通过网页、客户端和命令行多种操作方式,但本文将使用命令行 + 配置文件实现简易部署。
- 高性能:使用 Rust 编写,具有高性能且内存安全的特点。
Easytier 部署教程
搭建自己私有的 Easytier 服务,需要拥有一台具有公网 IP 的服务器。或者也可以使用 Easytier 提供的公共共享节点,但在下面的配置中我会关闭这个功能。
安装 Easytier
建议从 GitHub Release 上下载预编译好的二进制文件或者自己编译:
1 | mkdir -p ~/.easytier |
解压并只保留命令行版本:
1 | unzip easytier-linux-x86_64-v2.3.2.zip |
生成配置文件
使用官网提供的配置文件生成工具生成网络 ID,也就是instance_id
。
然后,在第一台机器(具有公网 IP 的)中使用下面的配置文件 config.toml
,其中虚拟内网的网段可以自选(这里使用的是 192.168.88.0/24
):
1 | instance_name = "网络名" |
第二台机器的配置文件如下所示:
1 | instance_name = "网络名" |
如果有多台机器,配置文件都基本相同。例如加入第三台机器,把另外两台机器作为 peer:
1 | instance_name = "网络名" |
设置子网代理
如果想在虚拟内网中访问某一个节点的内网,则需要设置子网代理。这个功能对于 NAS 用户可能需要用到。例如,我们想要接入节点 A 的内网 192.168.2.0/24,这只需要在节点 A 的配置文件中加入下面的部分即可:
1 | [[proxy_network]] |
设置为 systemd 服务
1 | cat << 'EOF' | sudo tee /etc/systemd/system/easytier.service |