From f843baf5cd687a58aa04a1b79d0f4db09aba873b Mon Sep 17 00:00:00 2001 From: "sijie.sun" Date: Sun, 25 Aug 2024 23:14:50 +0800 Subject: [PATCH] add some doc --- .vitepress/config/cn.ts | 3 ++ guide/installation.md | 20 +++++++++ guide/network/host-public-server.md | 19 ++++++++ guide/network/network-to-network.md | 45 +++++++++++++++++++ guide/network/networking-without-public-ip.md | 9 +++- guide/network/no-root.md | 9 ++++ guide/network/point-to-networking.md | 14 ++++++ index.md | 2 +- 8 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 guide/network/host-public-server.md create mode 100644 guide/network/network-to-network.md create mode 100644 guide/network/no-root.md diff --git a/.vitepress/config/cn.ts b/.vitepress/config/cn.ts index 10df15b..cd152ea 100644 --- a/.vitepress/config/cn.ts +++ b/.vitepress/config/cn.ts @@ -20,8 +20,11 @@ export const cn = defineConfig({ { text: '双节点', link: '/guide/network/two-node-networking' }, { text: '多节点', link: '/guide/network/multi-node-networking' }, { text: '子网代理(点对网)', link: '/guide/network/point-to-networking' }, + { text: '网对网', link: '/guide/network/network-to-network' }, { text: '无公网IP', link: '/guide/network/networking-without-public-ip' }, { text: '使用 WireGuard 客户端接入', link: '/guide/network/use-easytier-with-wirefuard-client' }, + { text: '无 TUN 模式 (免 Root 权限)', link: '/guide/network/no-root' }, + { text: '自建公共服务器', link: '/guide/network/host-public-server' }, { text: '注册为windows服务(开机自启)', link: '/guide/network/install-as-a-windows-service' }, { text: '将服务安装为 Linux Systemd 服务', link: '/guide/network/install-as-a-systemd-service' }, { text: '其他配置', link: '/guide/network/configurations' }, diff --git a/guide/installation.md b/guide/installation.md index 713fe48..ff198f0 100644 --- a/guide/installation.md +++ b/guide/installation.md @@ -54,3 +54,23 @@ command: -i --network-name <用户> --network-secret <密码> -e tcp://<服务器地址>:11010 -l <监听地址> ``` ::: + +5. 一键安装脚本 (仅 Linux) + + ```bash + wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && bash /tmp/easytier.sh install + ``` + +# 常见问题 + +## 问题 1 + +Q: Windows 7 无法创建网络,程序崩溃或者报错无法创建虚拟网。 + +A: win7 需要是 SP1 及以上, 并且需要安装 [KB3063858](https://www.microsoft.com/en-us/download/details.aspx?id=47409)、 [KB4474419](https://www.catalog.update.microsoft.com/search.aspx?q=KB4474419) 这两个补丁 + +## 问题 2 + +Q: Linux 命令行帮助是英文,如何调整为中文。 + +A: 需要设置环境变量 LANG=zh_CN,命令: `export LANG=zh_CN` diff --git a/guide/network/host-public-server.md b/guide/network/host-public-server.md new file mode 100644 index 0000000..ab56fa5 --- /dev/null +++ b/guide/network/host-public-server.md @@ -0,0 +1,19 @@ +# 自建公共服务器 + +用户可以使用自己的公网节点自建用于无公网 IP 组网的公共服务器,方便其他无公网 IP 的用户组网。 + +只需要不带任何参数启动 EasyTier,该节点就可作为公共服务器使用(不需要 root 权限): + +``` +easytier-core +``` + +另外,默认情况下, EasyTier 的每个节点都允许为其他虚拟网提供转发服务,即使该节点已经指定了 网络名 (`--network-name`) 和 网络密钥 (`--network-secret`)、并已加入一个虚拟网。 + +若需改变此行为,可通过 `--relay-network-whitelist` 参数限定可被转发的网络名白名单(空格分割的通配符列表,如 ` "ab* abc" `)。当该参数的列表为空时,就不会为所有其他网络提供转发服务。 + +EasyTier 可以做到不转发其他虚拟网的网络包,而是只帮助他们建立 P2P 链接,只需将白名单置空,并设置仅转发 RPC 流量即可。参考命令为: + +``` +easytier-core --relay-network-whitelist --relay-all-peer-rpc +``` diff --git a/guide/network/network-to-network.md b/guide/network/network-to-network.md new file mode 100644 index 0000000..ba3e08e --- /dev/null +++ b/guide/network/network-to-network.md @@ -0,0 +1,45 @@ +# 网对网 + +网对网的网络拓扑如图所示 + +```mermaid +flowchart LR + +subgraph 节点 A +nodeA[EasyTier\n10.144.144.1] +end + +subgraph 节点 B +nodeB[EasyTier\n10.144.144.2] +end + +id1[[10.1.1.0/24]] + +id2[[192.168.1.0/24]] + +id2 <-.子网代理.-> nodeA <--> nodeB <-.子网代理.-> id1 + +id2 -.无需 EasyTier 访问对方子网.-> id1 + +``` + +网对网配置成功后,192.168.1.0/24 子网的设备可以访问 10.1.1.0/24 子网的设备互相通信且无需安装 EasyTier。 + +要实现网对网,需要 节点 A 是 192.168.1.0/24 子网的网关。两个 EasyTier 节点的启动及配置参数如下: + +节点 A +```bash +# 启动 EasyTier 并代理 192.168.1.0/24 网段,并使用公共服务器帮助组网 +easytier-core -i 10.144.144.1 -n 192.168.1.0/24 -p tcp://easytier.public.kkrainbow.top: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 +```bash +# 启动 EasyTier 并代理 10.1.1.0/24 网段,并使用公共服务器帮助组网 +easytier-core -i 10.144.144.2 -n 10.1.1.0/24 -p tcp://easytier.public.kkrainbow.top:11010 --network-name n2n_test +``` diff --git a/guide/network/networking-without-public-ip.md b/guide/network/networking-without-public-ip.md index 40b4d5e..65d4a5e 100644 --- a/guide/network/networking-without-public-ip.md +++ b/guide/network/networking-without-public-ip.md @@ -9,15 +9,20 @@ EasyTier 支持共享公网节点进行组网。目前已部署共享的公网 以双节点为例,节点 A 执行: ```sh -sudo easytier-core -i 10.144.144.1 --network-name abc --network-secret abc -e tcp://easytier.public.kkrainbow.top:11010 +sudo easytier-core -i 10.144.144.1 --network-name abc --network-secret abc -p tcp://easytier.public.kkrainbow.top:11010 ``` 节点 B 执行 ```sh -sudo easytier-core --ipv4 10.144.144.2 --network-name abc --network-secret abc -e tcp://easytier.public.kkrainbow.top:11010 +sudo easytier-core --ipv4 10.144.144.2 --network-name abc --network-secret abc -p tcp://easytier.public.kkrainbow.top:11010 ``` 命令执行成功后,节点 A 即可通过虚拟 IP 10.144.144.2 访问节点 B。 +`--ipv4 x.x.x.x` 可以替换为 `-d` 开启 DHCP 功能,由 EasyTier 根据虚拟网内已经存在的其他虚拟 IP 自动的分配本节点的 IP 地址。 + + +节点可以连接到多个公共服务器,当其中一个公共服务器失效后,节点间依然可以使用其他存活的公共服务器通信。只需要指定多个 -p 参数即可,如:`-p tcp://1.1.1.1:11010 -p udp://1.1.1.2:11011`。需要注意,虚拟网中每个节点都要指定相同的公共服务器列表,否则可能无法正常组网。 + --- diff --git a/guide/network/no-root.md b/guide/network/no-root.md new file mode 100644 index 0000000..9fee858 --- /dev/null +++ b/guide/network/no-root.md @@ -0,0 +1,9 @@ +# 无 TUN 模式 (免 Root 权限) + +由于创建 TUN 设备需要 ROOT 权限,对于一些无法获取 Root 权限的环境,EasyTier 也提供了不依赖 TUN 的使用方法。只需在启动 EasyTier 时,增加 `--no-tun` 参数即可。 + +使用无 TUN 模式组网时,节点可以通过虚拟 IP 被访问(TCP、UDP 和 ICMP 都支持),也可以做子网代理(使用 -n 参数)。但是无法主动发起对其他节点的访问。 + +为了在无 TUN 模式下主动访问其他节点,EasyTier 支持创建 SOCKS5 服务器,节点上的其他程序可以通过将代理设置为 EasyTier 的 SOCKS5 服务,即可访问虚拟网和虚拟网中的其他代理子网。 + +SOCKS5 服务的开启参数形为 `--socks5 12333`,将此参数加入 easytier-core 启动命令后,本机的 12333 端口即可服务于 SOCKS5 客户端。目前 SOCKS5 服务端无需用户名和密码验证,可直接使用。 diff --git a/guide/network/point-to-networking.md b/guide/network/point-to-networking.md index 03a6f8a..8ff5ea6 100644 --- a/guide/network/point-to-networking.md +++ b/guide/network/point-to-networking.md @@ -43,4 +43,18 @@ sudo easytier-core --ipv4 10.144.144.2 -n 10.1.1.0/24 ping 10.1.1.2 ``` +## 手工指定路由 + +默认情况下,当虚拟网中的某个节点配置了子网代理后,子网代理的网段会被同步到虚拟网内的所有节点上,并自动生成一条路由,将发往这些网段的数据包交由虚拟网处理。 + +这在大部分情况下可以简化组网,但在有些场景下,用户可能并不希望 EasyTier 在节点上自动配置路由,用户可通过 `--manual-routes` 参数手工配置需要转发到虚拟网的流量。 + +使用 `--manual-routes` 后,只有该参数配置的网段才会进入虚拟网,如果该参数后的列表为空,则 EasyTier 不会处理任何非虚拟网网段的流量。 + +## 防火墙 + +由于代理流量需要用到系统的网络栈,因此子网代理需要关闭在虚拟网卡上的防火墙(Linux 和 Windows 皆是如此)。 + +如果无法关闭防火墙,可以尝试用用户态的网络栈做子网代理,可以免去配置防火墙的步骤。只需要在启动 EasyTier 时添加 `--use-smoltcp` 参数即可。 + --- diff --git a/index.md b/index.md index 4d55a9f..77292c2 100644 --- a/index.md +++ b/index.md @@ -37,7 +37,7 @@ features: details: 根据流量智能选择链路,减少延迟,提高吞吐量。 - title: 跨平台 details: | - 支持 MacOS/Linux/Windows 等系统。未来将支持 IOS 和 Android。 + 支持 MacOS/Linux/Windows/Android 等系统。未来将支持 IOS。
支持 MIPS、ARM 等硬件架构。