Skip to content

Update p2p-optimize.md #135

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 43 additions & 7 deletions guide/network/p2p-optimize.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,53 @@
# P2P 优化

如果你希望 EasyTier 更容易与其他节点建立 P2P 连接,可以通过以下方式进行优化。
如果您希望 EasyTier 更容易地与其他 EasyTier 节点建立 P2P 连接,可以通过以下方式进行优化。

## IPv6

EasyTier 支持节点间通过 IPv6 进行 P2P 通信,默认 EasyTier 会随机监听一个 IPv6 UDP 端口。
EasyTier 支持节点间通过 IPv6 进行 P2P 通信,默认 EasyTier 会监听一个 Ipv6 的 TCP 和 UDP 的 11010 端口。

在某些情况下,指定监听 IPv6 地址和端口可能更有利于节点间的 P2P 通信。
可以使用 `-l` 配置 IPv6 的监听器。 例如:
如果您的节点都拥有公网 IPv6 地址,并且可以入站(即被外网访问),就可以非常容易建立 P2P 连接。

```sh
easytier-core -l 'tcp://[::]:12345' -l 'udp://[::]:12345'
```
如果您的节点都拥有公网 IPv6 地址,但不可入站(即不能被外网访问),可以利用 Easytier(版本2.3.0以上) 的 IPv6 打洞功能进行 P2P 连接,默认情况下开启此功能。

当然如果您能够修改公网 IPv6 的防火墙使其可以入站,也可以大幅度提高 p2p 的成功几率。

如果您的 IPv6 使用了 NAT66 技术,即网络地址转换技术,可以参考 IPv4 部分,如果可以的话建议关闭 NAT66 技术。

## IPv4

EasyTier 支持节点间通过 IPv4 进行 P2P 通信,默认 EasyTier 会监听一个 Ipv4 的 TCP 和 UDP 的 11010 端口。

如果您的节点拥有公网 IPv4 地址,并且可以入站(即被外网访问),就可以非常容易建立 P2P 连接。

如果您的节点都公网 IPv4 地址,但不可入站(即不能被外网访问),可以利用 Easytier的 IPv4 打洞功能进行 P2P 连接,默认情况下开启此功能。

如果您的节点是普通家庭宽带,无公网 IPv4 ,需要修改 NAT 类型来提高 P2P 的成功几率,分为以下几种情况:(如何修改 NAT 类型可自行百度搜索方法)

有关 NAT 类型的知识可参考这篇文章:[各种 NAT 类型的解释](https://nacldragon.top/2023/NAT-Type/)

**NAT1(在 RFC3489 中为:Full Cone NAT / 完全锥型 NAT ;在 RFC5780 中为:端点无关映射+端点无关过滤 )**

对于 Easytier 来说如果您的设备是 NAT1 类型,建立 P2P 连接时对方 NAT 类型可以是 NAT1、NAT2、NAT3、NAT4。

**NAT2(在 RFC3489 中为:Restricted Cone NAT / 限制锥型 NAT ;在 RFC5780 中为:端点无关映射+地址相关过滤 )**

对于 Easytier 来说如果您的设备是 NAT2 类型,建立 P2P 连接时对方 NAT 类型可以是 NAT1、NAT2、NAT3、NAT4。

**NAT3(在 RFC3489 中为:Port Restricted Cone NAT / 端口限制锥型 NAT ;在 RFC5780 中为:端点无关映射+地址和端口相关过滤 )**

对于 Easytier 来说如果您的设备是 NAT3 类型,建立 P2P 连接时对方 NAT 类型可以是 NAT1、NAT2、NAT3、NAT4。

**NAT4(在 RFC3489 中为:Symmetric NAT / 对称型 NAT ;在 RFC5780 中为:地址和端口相关映射+地址和端口相关过滤 )**

对于 Easytier 来说如果您的设备是 NAT4 类型,建立 P2P 连接时对方 NAT 类型可以是 NAT1、NAT2、NAT3、NAT4(部分)。

注:对于 NAT4 类型来说,由于某些原因部分 NAT4 每次建立的端口是递增或递减的,可以通过端口预测技术来实现 P2P,这种 NAT4 可以简称为 NAT4E / 对称型递增。

::: warning 注意
由于某些防火墙的策略,常见于学校、公司等,即使 NAT 类型为 1 2 3 ,也能会无法建立 P2P 连接。
IPv6 在开启 NAT66 后和 IPv4 NAT44 一样,也分为以上类型。
:::

## 指定公网 IP 和端口

Expand Down