diff --git a/content/post/1a57bda595c580088006c17d6ba2a744/index.zh-cn.md b/content/post/1a57bda595c580088006c17d6ba2a744/index.zh-cn.md index b6f2562..9a7fbf4 100644 --- a/content/post/1a57bda595c580088006c17d6ba2a744/index.zh-cn.md +++ b/content/post/1a57bda595c580088006c17d6ba2a744/index.zh-cn.md @@ -19,7 +19,7 @@ image = "https://hf-image.mitsea.com:8840/blog/posts/2025/02/%E4%B8%AD%E5%BF%83% Easytier 也类似,只不过你需要分开部署。下面的步骤中,“管理后台配置”一节对应的就是 Web 控制台。“中继服务器配置”对应的就是 DERP 或是 coturn 的配置。 -> 💡 请注意,当前版本下,使用 web 控制台部署设备,即使用 --config-server 启动会使得所有其他启动参数失效,你将会无法使用以下功能:手动选择接受的路由、网络白名单、rpc 包转发 +> 💡 请注意,当前版本下,使用 web 控制台部署设备,即使用 --config-server 启动会使得所有其他启动参数失效,你将会无法使用以下功能:手动选择接受的路由、网络白名单、rpc 包转发。若需要这些功能,你可以查看[中心化逻辑部署 Easytier - 无 Web 管理](https://blog.mitsea.com/1b37bda595c580c989edf890db8e0b19/) ## 管理后台配置 ### 说明 diff --git a/content/post/1b37bda595c580c989edf890db8e0b19/index.zh-cn.md b/content/post/1b37bda595c580c989edf890db8e0b19/index.zh-cn.md new file mode 100644 index 0000000..031882b --- /dev/null +++ b/content/post/1b37bda595c580c989edf890db8e0b19/index.zh-cn.md @@ -0,0 +1,206 @@ ++++ +author = "FlintyLemming" +title = "中心化逻辑部署 Easytier - 无 Web 管理" +slug = "1b37bda595c580c989edf890db8e0b19" +date = "2025-03-11" +description = "纯命令行启动组网" +categories = ["Network"] +tags = ["Easytier"] +image = "https://hf-image.mitsea.com:8840/blog/posts/2025/03/%E4%B8%AD%E5%BF%83%E5%8C%96%E9%80%BB%E8%BE%91%E9%83%A8%E7%BD%B2%20Easytier%20-%20%E6%97%A0%20Web%20%E7%AE%A1%E7%90%86/pawel-czerwinski-MIXZflFpQXk-unsplash.avif" ++++ + +## 部署逻辑 + +这个软件其实主打的是去中心化,但是如果从 netbird 或者 tailscale 迁移过来,就很不习惯。所以写一个教程按照中心化的使用逻辑去部署。 + +按中心化的使用逻辑,需要先部署一个中枢,用来管理所有节点,所有节点也要连接到这个机器上。 + +如果你部署 Headscale,那本质上就是一个 Web 控制台 + DERP 中继服务器;如果你部署 Netbird,那本质上就是 Web 控制台 + coturn 中继服务器。只不过你部署的时候是丢到一个 Compose 里一起跑的。 + +Easytier 也类似,只不过你需要分开部署。不过由于当前版本下,web 配置无法设置网络白名单和接受子网的白名单,这会导致你的中继节点只要被扫描到就可以被他人使用,你的子网路由也会默认下发到所有节点上,使用上有所不便,所以本版本教程是在无 web 管理的情形下进行配置。若要查看 web 控制台部署,请参阅[这篇文章](https://blog.mitsea.com/1a57bda595c580088006c17d6ba2a744/) + +若要便捷地查看其他设备,你只需要任意节点使用 GUI 客户端,或是使用 web 配置,也可看到其他设备,只是不能管理他们。 + +本教程使用二进制程序启动加参数的形式进行配置,不使用配置文件。二进制的所有参数可以通过执行 `easytier --help` 查看说明。 + +## 添加中继设备 + +### 配置步骤 + +1. 首先你要想一个网络名,比如叫 mytier。这个名字会在下面启动中继服务器时设置为白名单。 +2. 在你想要作为中继服务器上启动 easytier + + 使用 `--network-name` 和 `--network-secret` 设置网络名称与密码,后续的节点也要使用这个网络名称和密码 + + 使用 `--ipv4` 设置你要组网的内网 IP + + 使用 `--hostname` 来设置一个容易辨别的设备名称 + + `--relay-network-whitelist` 可以说是必加的,否则如果这个节点直接暴露在公网,任何人都可以拿来做中转服务器 + + `--manual-routes` 也是建议加上的,EasyTier 如果你设置了子网路由,他会把路由表自动下发到所有节点上,这与 Tailscale 的行为是正好相反的。--manual-routes 后不加任何选项则默认拒绝所有子网路由表,后续你要接受哪个子网网段的路由表就再添加即可 + + ```bash + ./easytier-core --network-name mytier \ + --network-secret passwd \ + --ipv4 192.168.99.1/24 \ + --hostname node1 \ + --manual-routes \ + --relay-network-whitelist mytier + ``` + +3. 默认端口是 11010,记得开放端口,假设你公网 IP 是 11.22.33.44 + +## 添加其他设备 + +启动命令和中转服务器基本是一样的,只需要修改 `--ipv4` 和 `--hostname` 和添加中继节点信息 + +```bash +./easytier-core --network-name mytier \ +--network-secret passwd \ +--ipv4 192.168.99.2/24 \ +--hostname node2 \ +--manual-routes \ +--relay-network-whitelist mytier \ +--external-node tcp://11.22.33.44:11010 +``` + +至此,完成了等效于 Netbird 或是 Tailscale 的添加两个设备的步骤 + +## 子网路由设置 + +需要再次提醒的是,本教程只是面向从 Netbird 或者 Tailscale 迁移过来的用户,所以下面的说明假设你已经熟悉 Netbird 或者 Tailscale 的子网路由功能 + +1. 在你需要共享的局域网内按照上面的步骤安装并配置好 Easytier +2. 启动参数增加 `--proxy-networks` ,比如你要下发你当前所在的内网 192.168.5.0/24 给其他节点,那你的启动命令就变成 + + ```bash + ./easytier-core --network-name mytier \ + --network-secret passwd \ + --ipv4 192.168.99.2/24 \ + --hostname node2 \ + --manual-routes \ + --relay-network-whitelist mytier \ + --proxy-networks 192.168.5.0/24 \ + --external-node tcp://11.22.33.44:11010 + ``` + + 默认情况下,他会把路由表下发到所有其他设备上,不过由于在前面我推荐你使用不带参数的 `--manual-routes` 启动客户端,所以现在其他客户端默认是不会接受下发的路由的。 + +3. 若要在别的设备上接收这条路由,修改 `--manual-routes` 选项的参数即可,比如你要接受 192.168.5.0/24 和 192.168.2.0/24 的路由,那启动命令就改成 + + ```bash + ./easytier-core --network-name mytier \ + --network-secret passwd \ + --ipv4 192.168.99.3/24 \ + --hostname node3 \ + --manual-routes 192.168.5.0/24 192.168.2.0/24 \ + --relay-network-whitelist mytier \ + --external-node tcp://11.22.33.44:11010 + ``` + +4. 如果做网关的话,转发和防火墙可以酌情配置,这些和 netbird 与 tailscale 是一致的:开启 ipv4 转发 + + 在 `/etc/sysctl.conf` ****文件中添加或修改以下行: + + ``` + net.ipv4.ip_forward = 1 + ``` + + 然后运行 `sudo sysctl -p` 来应用更改 + +5. 配置 NAT 规则 + + ```bash + sudo iptables -I FORWARD -i eth0 -j ACCEPT + sudo iptables -I FORWARD -o eth0 -j ACCEPT + sudo iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE + sudo iptables -I FORWARD -i tun0 -j ACCEPT + sudo iptables -I FORWARD -o tun0 -j ACCEPT + sudo iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE + ``` + + +## 保活进程 + +由于不使用 web 管理,所以只需要保活 easytire-core 这一个程序 + +### 注册为 systemd 服务 + +1. 移动二进制文件并设置执行权限 + + ```bash + sudo mv easytier-core /usr/local/bin/easytier-core + sudo chmod +x /usr/local/bin/easytier-core + ``` + +2. 创建 systemd 服务单元文件 + + ```bash + sudo nano /etc/systemd/system/easytier-core.service + ``` + + 内容如下,就是把启动的参数重新写一遍 + + ``` + [Unit] + Description=easytier-core Service + After=network.target + + [Service] + Type=simple + ExecStart=/usr/local/bin/easytier-core --network-name mytier --network-secret passwd --ipv4 192.168.99.1/24 --hostname node1 --manual-routes --relay-network-whitelist mytier + User=root + Restart=on-failure + RestartSec=5 + + [Install] + WantedBy=multi-user.target + + ``` + +3. 设置权限与加载服务 + + 保存并退出编辑器后,执行以下命令让 systemd 重新加载服务配置: + + ``` + sudo systemctl daemon-reload + + ``` + + 让该服务在开机时自动启动: + + ``` + sudo systemctl enable easytier-core + + ``` + + 启动该服务: + + ``` + sudo systemctl start easytier-core + + ``` + + 你可以使用下面的命令查看服务状态和日志: + + ``` + systemctl status easytier-core + journalctl -u easytier-core -f + + ``` + +4. 后续如果 `--manual-routes` 的参数需要修改,就直接修改 `/etc/easytier/config.env` 里的内容后重启服务就行 + +### 使用 docker 部署 + +参考官方文档 https://easytier.cn/guide/installation.html 修改这里的启动参数即可 + +![](https://hf-image.mitsea.com:8840/blog/posts/2025/03/%E4%B8%AD%E5%BF%83%E5%8C%96%E9%80%BB%E8%BE%91%E9%83%A8%E7%BD%B2%20Easytier%20-%20%E6%97%A0%20Web%20%E7%AE%A1%E7%90%86/image.avif) + +```bash +command: --network-name mytier --network-secret passwd --ipv4 192.168.99.1/24 --hostname node1 --manual-routes --relay-network-whitelist mytier +``` + +> Photo by [Pawel Czerwinski](https://unsplash.com/@pawel_czerwinski?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/a-black-and-white-photo-of-a-bunch-of-flowers-MIXZflFpQXk?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) + \ No newline at end of file