Noeiov0.3.0
最佳实践

跨云组网

把不同厂商、不同地域的机器连进同一个私有子网,服务之间直接用虚拟内网 IP 互访

把 AWS、阿里云、腾讯云等不同厂商、不同地域的机器,或者个人电脑,连进同一个私有子网,服务之间直接用虚拟内网 IP 互访,不暴露公网端口,不依赖任何第三方。

下面以阿里云、腾讯云和一台本地 NAS 三台机器为例。没有公网机器的话,可以先用试用 Derper,跳过前两步。

1. 部署 derper 中继

在一台所有节点都能访问的公网机器上部署 derper,它负责候选地址广播与打洞失败时的流量中继。Docker 和二进制两种方式见安装文档,这里用 Docker。

docker run -d --name noeio-derper -p 8080:8080/udp --rm noeio/noeio-derp:latest

2. 生成虚拟网络 token

token 绑定一个 network UUID,持有同一 UUID token 的节点加入同一个虚拟网络。--ttl 0 表示永不过期。把输出的 token 保存下来,后面每台机器都要用。

docker exec noeio-derper /usr/local/bin/noeio-derp token create --network 25fe8468-b310-43ed-96be-495641eececd --ttl 0

3. 在每台机器上安装 noeio

安装脚本会识别系统与架构,下载对应的二进制并放入 PATH。三台机器都要执行。

curl --proto '=https' --tlsv1.2 -sSf https://noeio.net/install.sh | sh

4. 启动 daemon

把 --derper-server 换成第一步机器的公网地址,--derper-token 换成第二步的 token;--stun 可换成离你更近的节点。三台机器用同一条命令。也可以写进配置文件后直接 noeio boot,见配置文件。

noeio boot \
  --stun stun.chat.bilibili.com:3478 \
  --derper-server your-derper-host:8080 \
  --derper-token <token>

5. 分配虚拟 IP

为每台机器创建虚拟网卡并分配 IP。推荐使用 100.64.0.0/10 网段,同网络内不可重复,--network 与第二步的 UUID 一致。

机器 A(阿里云):

noeio create vnic --ip 100.64.0.1 --network 25fe8468-b310-43ed-96be-495641eececd

机器 B(腾讯云):

noeio create vnic --ip 100.64.0.2 --network 25fe8468-b310-43ed-96be-495641eececd

机器 C(本地 NAS):

noeio create vnic --ip 100.64.0.3 --network 25fe8468-b310-43ed-96be-495641eececd

6. 验证互联

ping 通虚拟 IP 即组网完成。此后三台机器可用虚拟 IP 互访任意端口,流量走 WireGuard 加密,能直连就直连,否则经 derper 中继。

在机器 A 上:

ping 100.64.0.2
64 bytes from 100.64.0.2: icmp_seq=1 ttl=64 time=23.4 ms
64 bytes from 100.64.0.2: icmp_seq=2 ttl=64 time=24.1 ms

延伸阅读

想深入了解 NAT 穿透和选路机制?

On this page