VNT 是一款基于 Rust 语言开发的开源内网穿透及组网工具,主要用于实现异地设备的虚拟组网和内网穿透。它通过高效的网络技术和灵活的配置,为用户提供了安全、稳定且易于使用的组网解决方案。

类似于以前介绍的 frp、zerotier、nps 等穿透工具,同样支持私有部署服务端,客户端只需要一行命令即可加入组网。

特点

  • 高性能: 使用rust开发,内存和CPU占用率低,速度快
  • 跨平台: 支持Windows/MacOS/Linux/Android
  • 和WireGuard互通: 能使用WireGuard接入VNT网络,iOS可以使用这种方式接入
  • 穿透多层NAT: 多种打洞策略,轻松穿透锥形网络,遇到对称网络也有一战之力
  • 应对运营商QOS: 多通道UDP,能有效减缓UDP QOS
  • 支持UDP/TCP/WebSocket等协议: 遭遇UDP丢包严重的时候,总有一个协议适合你
  • ipv4/ipv6双协议栈: 可以使用ipv6连接网络
  • 域名解析优化: 可以利用txt记录解析动态公网IP、动态公网端口,家庭宽带也能轻松自建服务器
  • 安全: 支持AES-GCM、CHACHA20-POLY1305等多种加密算法,端到端加密保证数据安全
  • 优化广播: 自适应的点对点广播,降低延迟的同时减少服务器的压力,适合广播/组播游戏
  • 数据压缩: 可开启数据压缩减少网络压力

使用场景

  • 异地组网:可将不同地理位置的设备组建成一个虚拟局域网,实现设备间的直接通信。
  • 内网服务访问:用于访问内网中的服务,如 NAS、监控摄像头、服务器等等。
  • 联机游戏:支持点对点和网对网的联机游戏。
  • 搭建演示服务:将内网服务通过一台有公网 IP 的服务器统一对外暴露演示。

开源地址

开源可私有部署内网穿透工具:VNT

食用教程

服务端搭建

本文以ubuntu22.04,用 docke 一键部署 vnts 服务端程序。

提前放开端口:tcp/udp:29872(vnts 服务端端口),tcp:29870(vnts web 管理页面端口按需开启)

docker-compose 一键部署:

services:
  vnts:
    image: hotwa/vnt-server:latest
    container_name: vnts
    restart: unless-stopped

    # 加入自定义网络并指定静态 IP
    networks:
      headscale_network:
        ipv4_address: 172.32.0.13

    ports:
      - "29872:29872/tcp"    # 数据通道 TCP
      - "29872:29872/udp"    # 数据通道 UDP
      - "29870:29870/tcp"    # Web 管理界面

    volumes:
      - ./vnts-data:/app/key   # 用于存放服务端密钥对
      - ./vnts-log:/app/log    # 日志目录

    environment:
      # —————— 必填项 ——————
      VNT_PORT:        "29872"        # 数据通道口
      VNT_WEB_PORT:    "29870"        # Web 管理口
      VNT_USERNAME:    "admin"        # 管理界面用户名
      VNT_PASSWORD:    "admin"        # 管理界面密码
      VNT_WHITE_TOKEN: "lcry"     # 连接 token 白名单

      # ——— 可选项,根据需要取消注释 ———
      #VNT_FINGER:        "1"                  # 开启指纹校验(短 flag `--finger`)
      VNT_GATEWAY:       "10.26.0.1"          # 子网网关
      VNT_NETMASK:       "255.255.255.0"      # 子网掩码
      #VNT_WG_SECRET_KEY: "<Base64 编码的私钥>"  # WireGuard 私钥

networks:
  headscale_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.32.0.0/24

执行 docker compose up -d,访问服务器ip:29870 可访问web界面,输入账号密码admin/admin。

客户端连接

客户端提供了各个端使用, 我这里只演示windows、linux、macos三端连接,手机上也是下载对应配置自己的中继服务器即可使用。

更多可选配置可执行vnt-cli -h 查看

命令好行客户端下载地址:https://github.com/vnt-dev/vnt/releases

macOS:

  • 如果你的机器是 Apple Silicon (M1, M2 等),下载:vnts-aarch64-apple-darwin-v1.2.12.tar.gz
  • 如果你的机器是 Intel 处理器,下载:vnts-x86_64-apple-darwin-v1.2.12.tar.gz

Linux:

  • 对于大多数现代 Linux 发行版(如 Ubuntu),如果你使用的是 64 位处理器,下载:vnts-x86_64-unknown-linux-musl-v1.2.12.tar.gz
  • 如果使用 32 位处理器,下载:vnts-i686-pc-windows-msvc-v1.2.12.tar.gz
  • 对于 ARM 架构(如 Raspberry Pi),选择:

    • vnts-arm-unknown-linux-musleabi-v1.2.12.tar.gz(适用于 ARMv5)
    • vnts-arm-unknown-linux-musleabihf-v1.2.12.tar.gz(适用于 ARMv7,带硬浮点)
    • vnts-armv7-unknown-linux-musleabi-v1.2.12.tar.gz(适用于 ARMv7,不带硬浮点)

Windows:

  • 对于 64 位 Windows,下载:vnts-x86_64-pc-windows-msvc-v1.2.12.tar.gz
  • 对于 32 位 Windows,下载:vnts-i686-pc-windows-msvc-v1.2.12.tar.gz

Windows 和 安卓 GUI 客户端下载地址:https://github.com/vnt-dev/VntApp/releases

执行命令

命令格式: ./vnt-cli -s 服务端IP:29872 -k [组网编号] --cmd,组网编号就是相同的组网编号会加入到一个局域网(这个编号自定义的话必须是服务端VNT_WHITE_TOKEN 配置允许的)。

linux 执行:

开源可私有部署内网穿透工具:VNT

macos 执行:

开源可私有部署内网穿透工具:VNT

windows 因为要安装各种依赖啥的,直接使用 GUI 工具配置:

开源可私有部署内网穿透工具:VNT

组网测试

最后测试连通性以及后台可看见拓扑图。

开源可私有部署内网穿透工具:VNT

互相 ping 通。

开源可私有部署内网穿透工具:VNT

开源可私有部署内网穿透工具:VNT

开源可私有部署内网穿透工具:VNT

总结

通过 vnt 可以自建 vnts 服务端,通过将多个网络接入一个局域网,可用于一个公网服务器资源不够的情况下,使用内网机器组网统一服务暴露降低成本,是中小企业的不二选择,简单高效组网。

参考

VNT 官方文档

内网穿透工具:VNT

开源简便高效的异地组网、内网穿透工具

使用lucky的stun+vnt实现完美内网穿透组网

文章目录