# 快速组网 ## 利用共享节点组网 当你没有公网 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
网络名: abc] end subgraph 共享节点 A nodeA[共享节点 A
网络名: Public] end subgraph 共享节点 B nodeB[共享节点 B
网络名: Public] end subgraph 节点 D nodeD[节点 D
网络名: 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
网络名: abc] end subgraph 共享节点 A nodeA[共享节点 A
网络名: Public] end subgraph 共享节点 B nodeB[共享节点 B
网络名: Public] end subgraph 节点 D nodeD[节点 D
网络名: 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` 代表指定监听器端口。