vnt-dev/vnt

Rustrustvnt.com
macOSWindowsLinux

An efficient VPN. 简便高效的异地组网、内网穿透工具

natp2pvpnrustproxy
Croissance des étoiles
Étoiles
3.2k
Forks
351
Croissance hebdomadaire
+12
Issues
89
1k2k3k
janv. 2023mars 2024juin 2025août 2026
Artefactscrates.io
README

VNT

一个简单、高效、能快速组建虚拟局域网的工具。无论设备身在何处,只要接入同一个虚拟网络,即可像在同一局域网内一样互相访问,适用于远程桌面、联机游戏、访问家中 NAS、跨地区协作等场景。

快速开始

第一步:选择适合的程序

程序 适用对象 特点
VNT 桌面客户端 一般用户(推荐) 图形化界面,操作简单,Windows 安装包开箱即用
vnt2_web 偏好网页管理的用户 启动后通过浏览器操作,适合无桌面环境的服务器/NAS
vnt2_cli + vnt2_ctrl 进阶用户 纯命令行,适合脚本化、自动化部署

各平台的安装包请到 GitHub Releases 下载。

第二步:组网(以桌面客户端为例)

  1. 安装并打开 VNT 桌面客户端。
  2. 新建一个组网配置,只需填写两项:
    • 组网编号(-k):用于标识虚拟网络的编号,需要互联的设备须填写相同的编号,例如 123456
    • 服务端地址(-s):可使用公共服务端 101.35.230.139:6660,也可填写自行部署的服务端。
  3. 点击启动。所有使用相同组网编号 + 相同服务端的设备会自动组成一个虚拟局域网,每台设备会分配到虚拟 IP(网段由服务端设置)。
  4. 验证:在设备 A 上 ping 设备 B 的虚拟 IP,能 ping 通即表示组网成功。

其他设备(电脑、服务器、手机)使用同样的组网编号和服务端地址加入即可,设备数量不限。

用 vnt2_web 组网

  1. 启动程序:
    ./vnt2_web
    
  2. 从启动日志复制带 ?token=... 的访问地址(默认监听 127.0.0.1:19099);也可以通过 --tokenVNT_WEB_TOKEN 指定固定令牌。
  3. 在网页上添加组网配置(同样只需组网编号和服务端地址),再点击启动组网。

用 vnt2_cli 组网

# 启动组网
./vnt2_cli -k 123456 -s 101.35.230.139:6660
# vnt2_cli 后台运行时,使用 vnt2_ctrl 查看组网状态
./vnt2_ctrl info

更多参数请查看 ./vnt2_cli -h

对于拥有公网地址或处于同一局域网的节点,可重复使用 --peer-address <地址>(配置文件中为 peer_address = ["地址", ...])直接探测并建立连接。 地址支持 ip:端口tcp://ip:端口udp://ip:端口;不带协议时会同时尝试 TCP 与 UDP, 端口应填写对端的 tunnel_port

可使用 --turn <目标IP或CIDR,中转虚拟IP>(配置文件中为 turn = ["10.26.0.0/24,10.26.0.2"])为目标指定优先中转节点。命中的目标不参与 P2P 打洞;中转节点已有直连路由时,数据包会优先发给中转节点继续转发。中转 IP 也可以填写当前虚拟网络的网关 IP,此时强制通过服务器中继。

IPv4 广播和组播默认开启。可使用 --no-broadcast(配置文件中为 no_broadcast = true)停止转发本机发出的 IPv4 广播和组播;ARP、非 IPv4 二层广播 以及单播流量不受影响。

常见问题

  • Windows 上提示需要管理员权限? 创建虚拟网卡需要以管理员身份运行程序,右键选择"以管理员身份运行"即可。
  • ping 不通对方? 请确认两边组网编号、服务端地址完全一致,且均已启动组网;防火墙可能拦截 ICMP,可使用共享文件夹等实际业务进行验证。
  • 没有公网服务器? 可先使用公共服务端 101.35.230.139:6660 体验;正式使用建议自建服务端,以获得更好的稳定性和私密性。
  • 不希望修改系统网络设置? 可将设备模式设为 no(无网卡模式),仅提供流量出口和端口映射,无需管理员权限。

安全说明

  • 建议设置组网密码。设置密码后(命令行 -p / --password,或配置文件中的 password),节点之间的数据采用端到端加密(ChaCha20-Poly1305),服务端仅负责转发密文,无法解密通信内容。即使使用公共服务端,通信内容也不会泄露给服务端。
  • 同一虚拟网络内的所有设备必须使用相同的密码,否则无法互相通信。
  • 未设置密码时,节点间数据不加密,经过服务端中继的流量理论上可被服务端查看,请仅在可信网络环境下省略密码。
  • 此外,客户端与服务端之间的连接本身支持 tcp-tls、quic、wss 等加密传输协议,并可绑定服务端证书,防止伪造服务端攻击。

进阶说明

虚拟网卡模式

配置文件使用 device_mode = "no|tun|tap",默认值为 tun;命令行可用 --device-mode 覆盖。旧的 no_tun 配置已移除,程序会提示迁移而不会静默按 TUN 启动。

  • no:不创建虚拟网卡,只提供流量出口和端口映射。
  • tun:创建三层网卡,网卡收发 IPv4 包。
  • tap:创建二层网卡,完整透传 Ethernet 帧,并与 TUN/NO 节点转换 IPv4、兼容 ARP。

Linux 和 macOS 使用系统提供的 TUN/TAP 能力。Windows 的 TUN 模式使用随程序提供的 wintun.dll;TAP 模式需要管理员权限并预先安装 tap-windows(硬件 ID tap0901)。Android VpnService 仅支持 TUN。

VNT2.0 新特性

  1. 提升安全性,支持 tcp-tls、quic、wss 协议连接服务器,和服务端强制使用 tls 加密,并支持证书绑定,防止伪造服务端攻击
  2. 提升流量稳定性,支持使用 quic 代理流量,支持 FEC 冗余传输
  3. 简化操作,去除了大量 vnt1.0 的重复和无用的配置参数
  4. vnt-link、vnt 合二为一
  5. 支持无网卡、TUN(三层)和 TAP(二层)模式及端口映射;三种模式的 IPv4 流量可互通
  6. 全功能的情况下,减少程序体积
  7. 性能提升,支持 linux-offload
  8. 更规范的 api 接入,可以轻松自定义客户端
  9. 支持同时连接多个服务端,可以容灾和负载均衡

开发者

前端构建

web 前端源码位于 vnt-web/ui/(Vite + Vue 3 + Pinia + Tailwind CSS v4),构建产物输出到 vnt-web/static/,由 RustEmbed 嵌入二进制。

项目使用根级 pnpm workspace 统一管理 Web 与桌面前端依赖:

pnpm install
pnpm build:web

开发调试使用 pnpm dev:web,Vite dev server 会将 /api 代理到 127.0.0.1:19099。启动 vnt2_web 时应指定令牌,并在浏览器登录页输入相同令牌。

PC 客户端开发

桌面客户端源码位于 vnt-desktop/(Tauri 2 + Vue 3)。桌面工作台通过 Tauri IPC 直接调用进程内 vnt-core;需要浏览器访问时,可在"Web 访问"中按需启用同进程 HTTP 服务,无需单独运行 vnt2_web。Tauri 与 Web 端统一使用 vnt-web/ui/src/ 下的同一套响应式前端代码。

pnpm install
pnpm dev:desktop

构建安装包使用 pnpm build:desktop。更多说明见 vnt-desktop/README.md

说明

vnt2.0 整体重构了一遍,和 1.0 不兼容,欢迎反馈。

更多平台后续再推出。

相关项目

  1. tun 虚拟网卡(https://github.com/tun-rs/tun-rs)
  2. 路由设置(https://github.com/tun-rs/route_manager)
  3. 用户态协议栈(用于 quic 代理和无 tun 模式出口)(https://github.com/rustp2p/tcp_ip)
  4. 打洞通道处理(https://github.com/rustp2p/rustp2p/tree/master/rustp2p-core)
  5. VNT安卓端2.0已发布(https://github.com/vnt-dev/VntApp)
  6. VNT服务端(https://github.com/vnt-dev/vnts)
Dépôts similaires
fatedier/frp

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

GoGo ModulesApache License 2.0proxyreverse-proxy
109.3k15.2k
ehang-io/nps

一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.

GoGo ModulesGNU General Public License v3.0sockstcp
ehang.io/nps/documents
34.2k6.1k
rathole-org/rathole

A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.

Rustcrates.ioApache License 2.0nattunnel
14.1k822
angristan/wireguard-install

WireGuard VPN installer for Linux servers

ShellMIT Licensewireguardvpn
stanislas.blog/2019/01/how-to-setup-vpn-server-wireguard-nat-ipv6/
11.3k1.7k
ffay/lanproxy

lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面、http代理、https代理、socks5代理...)。技术交流QQ群 736294209

JavaMavenlanproxynat
nat.nioee.com
5.9k1.5k
xjasonlyu/tun2socks

tun2socks - powered by gVisor TCP/IP stack

GoGo ModulescliMIT Licensegolangtun2socks
github.com/xjasonlyu/tun2socks/wiki
5.5k645
martin-ger/esp_wifi_repeater

A full functional WiFi NAT Router (and now also a WiFi Repeater)

CMIT Licenseesp8266nat
5.3k981
pirate/wireguard-docs

📖 Unofficial WireGuard Documentation: Setup, Usage, Configuration, and full example setups for VPNs supporting both servers & roaming clients.

ShellMIT Licensewireguardvpn
docs.sweeting.me/s/wireguard
5k331
HMBSbige/NatTypeTester

测试当前网络的 NAT 类型(STUN)

C#appMIT Licensestunnat
4.8k271
lazy-luo/smarGate

内网穿透,c++实现,无需公网IP,小巧,易用,快速,安全,最好的多链路聚合(p2p+proxy)模式,不做之一...这才是你真正想要的内网穿透工具!

JavaScriptnpmnatproxy
4.4k468
zhaojh329/rtty

🐛 Access your device from anywhere via the web.

CMIT Licensewebshellwebssh
zhaojh329.github.io/rtty/
4k549
mvscode/frps-onekey

Frp server one-click configuration script. The script obtains the latest Frp version by default

ShellcliGNU General Public License v3.0frpfrps
3.5k850