场景指南

使用 Noeio 跨云组网

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

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

  1. 1

    部署 derper 中继

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

    docker run -d --name noeio-derper -p 8080:8080/udp --rm noeio/noeio-derp:latest
  2. 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. 3

    在每台机器上安装 noeio

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

    curl --proto '=https' --tlsv1.2 -sSf https://noeio.net/install.sh | sh
  4. 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. 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. 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 穿透和选路机制?