什么是异地组网?

异地组网,也称为远程组网或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
2
3
mkdir -p ~/.easytier
cd ~/.easytier
wget https://github.com/EasyTier/EasyTier/releases/download/v2.3.2/easytier-linux-x86_64-v2.3.2.zip

解压并只保留命令行版本:

1
2
3
unzip easytier-linux-x86_64-v2.3.2.zip
mv easytier-linux-x86_64/easytier-cli easytier-linux-x86_64/easytier-core .
rm -rf easytier-linux-x86_64 easytier-linux-x86_64-v2.3.2.zip

生成配置文件

使用官网提供的配置文件生成工具生成网络 ID,也就是instance_id

然后,在第一台机器(具有公网 IP 的)中使用下面的配置文件 config.toml,其中虚拟内网的网段可以自选(这里使用的是 192.168.88.0/24):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
instance_name = "网络名"
instance_id = "网络 ID"
ipv4 = "192.168.88.1/24"
dhcp = false
listeners = ["tcp://0.0.0.0:11010"]
rpc_portal = "0.0.0.0:0"

[network_identity]
network_name = "连接账号"
network_secret = "连接密码"

[flags]
dev_name = "easytier"
latency_first = true
private_mode = true

第二台机器的配置文件如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
instance_name = "网络名"
instance_id = "网络 ID"
ipv4 = "192.168.88.2/24"
dhcp = false
listeners = ["tcp://0.0.0.0:11010"]
rpc_portal = "0.0.0.0:0"

[network_identity]
network_name = "连接账号"
network_secret = "连接密码"

[[peer]]
uri = "tcp://第一台机器的公网IP:11010"

[flags]
dev_name = "easytier"
latency_first = true
private_mode = true

如果有多台机器,配置文件都基本相同。例如加入第三台机器,把另外两台机器作为 peer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
instance_name = "网络名"
instance_id = "网络 ID"
ipv4 = "192.168.88.3/24"
dhcp = false
listeners = ["tcp://0.0.0.0:11010"]
rpc_portal = "0.0.0.0:0"

[network_identity]
network_name = "连接账号"
network_secret = "连接密码"

[[peer]]
uri = "tcp://第一台机器的公网IP:11010"

[[peer]]
uri = "tcp://第二台机器的公网IP:11010"

[flags]
dev_name = "easytier"
latency_first = true
private_mode = true

设置子网代理

如果想在虚拟内网中访问某一个节点的内网,则需要设置子网代理。这个功能对于 NAS 用户可能需要用到。例如,我们想要接入节点 A 的内网 192.168.2.0/24,这只需要在节点 A 的配置文件中加入下面的部分即可:

1
2
[[proxy_network]]
cidr = "192.168.2.0/24"

设置为 systemd 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat << 'EOF' | sudo tee /etc/systemd/system/easytier.service
[Unit]
Description=EasyTier Service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/系统用户名/.easytier/easytier-core -c /home/系统用户名/.easytier/config.toml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable easytier
sudo systemctl start easytier

Rickyhub 官方站,所有内容仅供学习,不得用于非法用途。
欢迎添加友链/合作,请联系邮箱: ricky@rickyhub.org
本站已运行: 天, 总浏览量: , 总访问数: