配置 ZeroTier P2P 组网(游戏联机)

准备工作

  1. 注册一个 ZeroTier 账户
  2. 检查每个人的 NAT 类型(如果有人是 Symmetric NAT 则需要准备一台服务器中继)

检查 NAT 类型

下载 NatTypeTester 软件,打开后选择 stun.miwifi.com 服务器点击测试按钮

  1. 在 RFC 5780 下测试,Mapping Bahavior 和 Filtering Behavior 均为 AddressAndPortDependent 则为 Symmetric NAT
  2. 在 RFC 3478 下测试,显示 Symmetric NAT 也不一定是,得看 RFC 5780 的

若有人为 Symmetric NAT 则需要准备一台中继服务器

创建并配置 ZeroTier 网络

ZeroTier 网页中点击 Create A Network 按钮创建

进入网络编辑页面,将 Access Control 设置为 Public 类型(你不会想每次都手动给朋友授权的)

删除自带的 Managed Routes 配置,填入自己想要的 IP 段(这里需要注意下不能和每个人电脑上在用的段冲突)

更新 IPv4 Auto Assign 配置

分配 IPv6 地址

到此,简单的 P2P 组网就已经完成了。需要组网的人在 ZeroTier 客户端输入 Network ID 加入网络即可

配置中继节点(for Symmetric NAT users)

这里有两种中继模式

  1. 配置使用 MOON 节点(这个我用的时候不知道为啥不走我的中继,只用官方的,延迟很高)
  2. 在自己服务器上将多个网络桥接起来(配置起来比较复杂)

以下演示内容均在 Debian 11 系统上操作

中继方案一(配置 MOON 节点)

安装 ZeroTier 软件包

apt update
apt install gnupg2 -y
curl -fsSL https://install.zerotier.com | bash

进入 ZeroTier 配置目录

cd /var/lib/zerotier-one

生成 moon.json 配置

zerotier-idtool initmoon identity.public > moon.json

编译 moon.json 配置,将服务器信息填入

ZeroTier 默认监听 9993 端口,若你的 IP 地址为 1.1.1.1 则应该填入 1.1.1.1/9993。注意配置文件格式为 JSON 格式

根据配置生成 .MOON 文件

zerotier-idtool genmoon moon.json

将生成出来的文件复制到当前目录下 moons.d 文件夹中

rm -fr moons.d && mkdir moons.d
cp -f *.moon moons.d

重启 ZeroTier 服务

systemctl restart zerotier-one

其他人加入此 MOON 节点即可

目前(1.8.4 build 0) ZeroTier 并不可以在客户端界面上操作,每个人必须在管理员命令行中执行命令加入

zerotier-cli orbit <world id> <seed>

上面的 world id 和 seed 为 moon.json 文件中开头的 id 值,例如我的是 b0dddc93d 则需要输入以下指令

zerotier-cli orbit b0dddc93d b0dddc93d

中继方案二(创建多个网络组桥接)

使用此方案需要创建多个网络(例如我只有一个 Symmetric NAT 的朋友,只需要创建 2 个网络即可)

需要注意,Managed Routes 这几个网络都需一致。IPv4 Auto Assign 不应该分配同样的段。我这里的配置是

SDWAN-01-01100.64.100.100 – 100.64.100.199
SDWAN-01-02100.64.101.10 – 100.64.101.19

将中继服务器加入两个网络

zerotier-cli join <network id>
zerotier-cli join <network id>

在中继服务器上禁用自动下发的配置

zerotier-cli set <network id> allowManaged=0
zerotier-cli set <network id> allowManaged=0

在 ZeroTier 网站上将中继服务器设置为允许桥接(多个网络都设置一下)

将中继服务器 IP 地址设置为 100.64.100.1 (多个网络都设置一下,设置同样的)

为每个网络设置固定的网卡名

rm -f /var/lib/zerotier-one/devicemap

echo "<network id>=zt1" >> /var/lib/zerotier-one/devicemap
echo "<network id>=zt2" >> /var/lib/zerotier-one/devicemap

重启 ZeroTier 服务

systemctl restart zerotier-one

此时 ZeroTier 的接口名称应该已经变为 zt1 和 zt2 了

为两个网络创建桥接并分配 IP 地址

apt install bridge-utils -y

brctl addbr br0
brctl addif br0 zt1
brctl addif br0 zt2
brctl setfd br0 0
brctl stp br0 off
ip addr add 100.64.100.1/23 dev br0
ip link set br0 up

此时,此中继网络就已经创建完成了。网好(非 Symmetric NAT)的人加入 SDWAN-01-01 中将使用 P2P 互相连接,网不好(Symmetric NAT)的加入 SDWAN-01-02 中就会通过此服务器转发(注意 SDWAN-01-02 只能有一个 Symmetric NAT 的人)

如果你有多个朋友为 Symmetric NAT 则按照上面的办法多创建几个网络再加入桥接即可

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!