开源可私有部署内网穿透工具:VNT
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 的服务器统一对外暴露演示。
开源地址
- 客户端主程序:https://github.com/vnt-dev/vnt
- 中继服务端程序: https://github.com/vnt-dev/vnts
- 用户界面程序:https://github.com/vnt-dev/VntApp
食用教程
服务端搭建
本文以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 执行:
macos 执行:
windows 因为要安装各种依赖啥的,直接使用 GUI 工具配置:
组网测试
最后测试连通性以及后台可看见拓扑图。
互相 ping 通。
总结
通过 vnt 可以自建 vnts 服务端,通过将多个网络接入一个局域网,可用于一个公网服务器资源不够的情况下,使用内网机器组网统一服务暴露降低成本,是中小企业的不二选择,简单高效组网。
参考
商业转载请联系作者获得授权,非商业转载请注明本文出处及文章链接