Files
2025-01-20 14:15:07 +08:00

181 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 快速组网
## 利用共享节点组网
当你没有公网 IP 时,可以使用 EasyTier 社区提供的免费共享节点快速组网。节点间成功组网后,
会自动尝试 NAT 穿透并建立 P2P 连接,在成功 P2P 之前,共享节点会帮助转发数据。
假设有两个节点 A 和 B
1. 在节点 A 上执行(请替换 abc 为更复杂的网络名,否则会因为网络名冲突导致连接失败)
```sh
sudo easytier-core -i 10.144.144.1 --network-name abc --network-secret abc -p tcp://public.easytier.cn:11010
```
> `-i` 代表指定虚拟网 IP 地址,默认 /24 网段;
>
> `--network-name` 和 `--network-secret` 代表网络名和网络密钥;
>
> `-p` 代表指定节点地址,此处使用官方的共享节点。
2. 在节点 B 上执行
```sh
sudo easytier-core -d --network-name abc --network-secret abc -p tcp://public.easytier.cn:11010
```
> `-d` 代表 DHCP 模式,EasyTier 会自动获取一个 IP 地址。
3. 测试联通性
两个节点应成功连接并能够在虚拟子网内通信,可以在节点 B 上执行进行测试。
```sh
ping 10.144.144.1
```
::: warning 注意
部分系统默认开启防火墙并会阻止入站流量,可能会导致虚拟 IP 无法 ping 通或无法访问各种服务,需要手动关闭防火墙或添加规则。
:::
## 查看虚拟网状态
easytier-core 启动后,可以使用 easytier-cli 进行管理。
- 查看虚拟网中的节点信息
```sh
easytier-cli peer
```
| ipv4 | hostname | cost | lat_ms | loss_rate | rx_bytes | tx_bytes | tunnel_proto | nat_type | id |
| :----------- | :------- | :--- | :----- | :-------- | :------- | :------- | :----------- | :------- | :-------- |
| 10.144.144.1 | abc-dec | 1 | 3.452 | 0 | 17.33kB | 20.42kB | udp | FullCone | 390879727 |
- 查看虚拟网路由信息
```sh
easytier-cli route
```
| ipv4 | hostname | proxy_cidrs | next_hop_ipv4 | next_hop_hostname | next_hop_lat | cost |
| :----------- | :------- | :---------- | :------------ | :---------------- | :----------- | :--- |
| 10.144.144.1 | abc-dec | | DIRECT | | 3.646 | 1 |
- 查看本节点的信息
```sh
easytier-cli node
```
```
┌───────────────┬──────────────────────┐
│ Virtual IP │ 10.144.144.1 │
├───────────────┼──────────────────────┤
│ Hostname │ archlinux-base │
├───────────────┼──────────────────────┤
│ Proxy CIDRs │ 10.147.223.0/24 │
├───────────────┼──────────────────────┤
│ Peer ID │ 2616333191 │
├───────────────┼──────────────────────┤
│ Public IP │ 75.52.125.26 │
├───────────────┼──────────────────────┤
│ UDP Stun Type │ FullCone │
├───────────────┼──────────────────────┤
│ Listener 1 │ tcp://0.0.0.0:11010 │
├───────────────┼──────────────────────┤
│ Listener 2 │ udp://0.0.0.0:11010 │
├───────────────┼──────────────────────┤
│ Listener 3 │ wg://0.0.0.0:11011 │
├───────────────┼──────────────────────┤
│ Listener 4 │ ws://0.0.0.0:11011/ │
├───────────────┼──────────────────────┤
│ Listener 5 │ wss://0.0.0.0:11012/ │
├───────────────┼──────────────────────┤
│ Listener 6 │ udp://[::]:37039 │
└───────────────┴──────────────────────┘
```
## 使用多个共享节点
为了避免单个共享节点故障导致虚拟网不可用,可以同时连接到多个共享节点。只需要指定多个 -p 参数即可,如:`-p tcp://1.1.1.1:11010 -p udp://1.1.1.2:11011`。虚拟网中每个节点最好指定相同的公共服务器列表。
这依赖了 EasyTier 所支持的共享节点集群功能,假设有 A 和 B 两个共享节点,这两个共享节点互联组成集群。当 C 和 D 希望组网时,C 和 D 可以同时连接到 A 和 B,这样即使 A 或 B 故障,C 和 D 之间依然可以通信。组网模式如图所示:
```mermaid
flowchart LR
subgraph 节点 C
nodeC[节点 C</br>网络名: abc]
end
subgraph 共享节点 A
nodeA[共享节点 A</br>网络名: Public]
end
subgraph 共享节点 B
nodeB[共享节点 B</br>网络名: Public]
end
subgraph 节点 D
nodeD[节点 D</br>网络名: abc]
end
nodeA <-----> nodeB
nodeC <-----> nodeA
nodeC <-----> nodeB
nodeA <-----> nodeD
nodeB <-----> nodeD
```
即使出现网络分区,即 C 只能连接到 A,D 只能连接到 B,C 和 D 之间依然可以通信。
```mermaid
flowchart LR
subgraph 节点 C
nodeC[节点 C</br>网络名: abc]
end
subgraph 共享节点 A
nodeA[共享节点 A</br>网络名: Public]
end
subgraph 共享节点 B
nodeB[共享节点 B</br>网络名: Public]
end
subgraph 节点 D
nodeD[节点 D</br>网络名: abc]
end
nodeA <-----> nodeB
nodeC <-----> nodeA
nodeB <-----> nodeD
```
## 同时加入多个虚拟网
EasyTier 支持在同一个设备上同时运行多个进程,每个进程启动时使用不同参数即可加入不同的虚拟网。
需要注意,多个虚拟网的虚拟 IP 网段不应该重叠,否则会导致路由冲突。
另外,多开 EasyTier 时,需要指定不同的监听器端口,否则会导致端口冲突。
比如可以使用如下命令启动两个 EasyTier 进程:
```sh
sudo easytier-core --network-name net1 -p tcp://public.easytier.cn:11010 -l 11010
sudo easytier-core --network-name net2 -p tcp://public.easytier.cn:11010 -l 21010
```
> `-l` 代表指定监听器端口。