×

/vnt-cli/

8 个文件夹 3 个文件 总计 3.2 MiB
列表 网格
名称
大小 更新时间
返回上级目录
1.2.13/
luci-app-vnt/
v1.2.14/
v1.2.16/
vntAPP/
支持重定向/
文档/
梅林离线安装包/
README.md
14 KiB
Rustvnt_for_139CloudPhone_Magisk_by_ATRAY.zip
3.2 MiB
status.md
↱ 17 KiB

Build status Downloads

快速开始:

  1. 指定一个token,在多台设备上运行该程序,例如:

      # linux上
      root@DESKTOP-0BCHNIO:/opt# ./vnt-cli -k 123456
      # 在另一台linux上使用nohup后台运行
      root@izj6cemne76ykdzkataftfz vnt# nohup ./vnt-cli -k 123456 &
      # windows上
      D:\vnt\bin_v1>vnt-cli.exe -k 123456
    
  2. 可以执行info命令查看当前设备的虚拟ip

     root@DESKTOP-0BCHNIO:/opt# ./vnt-cli --info
     Name: Ubuntu 18.04 (bionic) [64-bit]
     Virtual ip: 10.26.0.2
     Virtual gateway: 10.26.0.1
     Virtual netmask: 255.255.255.0
     Connection status: Connected
     NAT type: Cone
     Relay server: 43.139.56.10:29871
     Public ips: 120.228.76.75
     Local ip: 172.25.165.58
    
  3. 也可以执行list命令查看其他设备的虚拟ip

     root@DESKTOP-0BCHNIO:/opt# ./vnt-cli --list
     Name                                                       Virtual Ip      P2P/Relay      Rt      Status
     Windows 10.0.22621 (Windows 11 Professional) [64-bit]      10.26.0.3       p2p            2       Online
     CentOS 7.9.2009 (Core) [64-bit]                            10.26.0.4       p2p            35      Online
    
  4. 最后可以用虚拟ip实现设备间相互访问

    ssh
  5. 帮助,使用-h命令查看

使用须知

  • token的作用是标识一个虚拟局域网,当使用公共服务器时,建议使用一个唯一值当token(比如uuid),否则有可能连接到其他人创建的虚拟局域网中
  • 默认使用公共服务器做注册和中继,目前的配置是2核4G 4Mbps,有需要再扩展~
  • vnt-cli需要使用命令行运行
  • Mac和Linux下需要加可执行权限(例如:chmod +x ./vnt-cli)
  • 可以自己搭中继服务器(server)

直接使用

下载release文件

帮助文档

自行编译

点击展开

前提条件:安装rust编译环境(install rust)

到项目根目录下执行 cargo build -p vnt-cli

也可按需编译,将得到更小的二进制文件,使用--no-default-features排除默认features

cargo build -p vnt-cli --no-default-features

features说明

feature 说明 是否默认
openssl 使用openssl中的加密算法
openssl-vendored 从源码编译openssl
ring-cipher 使用ring中的加密算法
aes_cbc 支持aes_cbc加密
aes_ecb 支持aes_ecb加密
aes_gcm 支持aes_gcm加密
sm4_cbc 支持sm4_cbc加密
chacha20_poly1305 支持chacha20和chacha20_poly1305加密
server_encrypt 支持服务端加密
ip_proxy 内置ip代理
port_mapping 端口映射
log 日志
command list、route等命令
file_config yaml配置文件
lz4 lz4压缩
zstd zstd压缩
upnp upnp协议
ws ws协议
wss wss协议

支持平台

  • Mac
  • Linux
  • Windows
    • 默认使用tun网卡 依赖wintun.dll(win-tun)(将dll放到同目录下,建议使用版本0.14.1)
    • 可选择使用tap网卡 依赖tap-windows(win-tap)(建议使用版本9.24.7)
  • Android

GUI

支持安卓和Windows 下载

特性

  • IP层数据转发
  • NAT穿透
    • 点对点穿透
    • 服务端中继转发
    • 客户端中继转发
  • IP代理(点对点、点对网)
  • p2p组播/广播
  • 客户端数据加密(aes-gcmchacha20-poly1305等多种加密算法)
  • 服务端数据加密(rsa + aes-gcm)
  • 多通道UDP应对QOS
  • 支持TCP、UDP、WebSocket等多种协议
  • 支持数据压缩

更多玩法

  1. 和远程桌面(如mstsc)搭配,超低延迟的体验
  2. 安装samba服务,共享磁盘
  3. 点对网,访问内网其他机器、IP代理(结合启动参数'-i'和'-o')

Todo

  • 桌面UI(已支持)
  • 使用FEC、ARQ等方式提升弱网环境的稳定性

常见问题

展开

问题1: 设置网络地址失败

可能原因:

vnt默认使用10.26.0.0/24网段,和本地网络适配器的ip冲突

解决方法:
  1. 方法一:找到冲突的IP,将其改成别的
  2. 方法二:自建服务器,指定其他不会冲突的网段
  3. 方法三:增加参数-d ,设置不同的id会让服务端分配不同的IP,从而绕开有冲突的IP

问题2: windows系统上wintun.dll加载失败

可能原因:

没有下载wintun.dll 或者使用的wintun.dll有问题

解决方法:
  1. 下载最新版的wintun.dll 下载链接
  2. 解压后找到对应架构的目录,通常是amd64
  3. 将对应的wintun.dll放到和vnt-cli同目录下(或者放到C盘Windows目录下)
  4. 再次启动vnt-cli

问题3: 丢包严重,或是不能正常组网通信

可能原因:

某些宽带下(比如广电宽带)UDP丢包严重

解决方法:
  1. 使用TCP模式中继转发(vnt-cli增加--tcp参数)
  2. 如果p2p后效果很差,可以选择禁用p2p(vnt-cli增加--use-channel relay 参数)

问题4:重启后虚拟IP发生变化,或指定了IP不能启动

可能原因:

设备重启后程序自动获取的id值改变,导致注册时重新分配了新的IP,或是IP冲突

解决方法:
  1. 命令行启动增加-d参数(使用配置文件启动则在配置文件中增加device_id参数),要保证每个设备的值都不一样,取值可以任意64位以内字符串

交流群

对VNT有任何问题均可以加群联系作者

QQ群1: 1034868233(满人)

QQ群2: 950473757

赞助

如果VNT对你有帮助,欢迎打赏作者

其他

可使用社区小伙伴搭建的中继服务器

  1. -s vnt.8443.eu.org:29871
  2. -s vnt.wherewego.top:29872

参与贡献

vnt-cli参数详解

Options:
  -k <token>          使用相同的token,就能组建一个局域网络
  -n <name>           给设备一个名字,便于区分不同设备,默认使用系统版本
  -d <id>             设备唯一标识符,不使用--ip参数时,服务端凭此参数分配虚拟ip注意不能重复
  -s <server>         注册和中继服务器地址,协议支持使用tcp://和ws://和wss://,默认为udp://
  -e <stun-server>    stun服务器,用于探测NAT类型,可使用多个地址,如-e stun.miwif.com -e turn.cloudflare.com
  -i <in-ip>          配置点对网(IP代理)时使用,-i 192.168.0.0/24,10.26.0.3表示允许接收网段192.168.0.0/24的数据并转发到10.26.0.3,可指定多个网段
  -o <out-ip>         配置点对网时使用,-o 192.168.0.0/24表示允许将数据转发到192168.0.0/24,可指定多个网段
  -w <password>       使用该密码生成的密钥对客户端数据进行加密,并且服务端无法解密,使用相同密码的客户端才能通信
  -W                  加密当前客户端和服务端通信的数据,请留意服务端指纹是否正确
  -u <mtu>            自定义mtu(默认为1420)
  -f <conf_file>      读取配置文件中的配置
  --ip <ip>           指定虚拟ip,指定的ip不能和其他设备重复,必须有效并且在服务端所属网段下,默认情况由服务端分配
  --model <model>     加密模式(默认aes_gcm),可选值aes_gcm/chacha20_poly1305/chaha20/aes_cbc/aes_ecb/sm4_cbc/xor
  --finger            增加数据指纹校验,可增加安全性,如果服务端开启指纹校验,则客户端也必须开启
  --punch <punch>     取值ipv4/ipv6/ipv4-tcp/ipv4-udp/ipv6-tcp/ipv6-udp/all,ipv表示仅使用ipv4打洞
  --ports <port,port> 取值0~65535,指定本地监听的一组端口,默认监听两个随机端口,使用过多端口会增加网络负担
  --cmd               开启交互式命令,使用此参数开启控制台输入
  --no-proxy          关闭内置代理,如需点对网则需要配置网卡NAT转发
  --first-latency     优先低延迟的通道,默认情况优先使用p2p通道
  --use-channel <p2p> 使用通道 relay/p2p/all,默认两者都使用
  --nic <tun0>        指定虚拟网卡名称
  --packet-loss <0>   模拟丢包,取值0~1之间的小数,程序会按设定的概率主动丢包,可用于模拟弱网
  --packet-delay <0>  模拟延迟,正整数,单位毫秒,程序将根据设定值延迟发送数据包,可用于模拟弱网
  --dns <host:port>   DNS服务器地址,可使用多个dns,不指定时使用系统解析
  --mapping <mapping> 端口映射,例如 --mapping udp:0.0.0.0:80-domain:80 映射目标是本地路由能访问的设备
  --compressor <lz4>  启用压缩,可选值lz4,例如 --compressor lz4
  --local-dev <NAME>  本地出口网卡的名称
  --disable-stats     关闭流量统计
  --allow-wg          允许接入WireGuard客户端

  --list              后台运行时,查看其他设备列表
  --all               后台运行时,查看其他设备完整信息
  --info              后台运行时,查看当前设备信息
  --route             后台运行时,查看数据转发路径
  --chart_a           后台运行时,查看所有IP的流量统计
  --chart_b <IP>      后台运行时,查看单个IP的历史流量
  --stop              停止后台运行
  -h, --help          display help information(显示帮助信息)

配置文件模板参考

# 全部参数
tap: false #是否使用tap 仅在windows上支持使用tap
token: xxx #组网token
device_id: xxx #当前设备id
name: windows 11 #当前设备名称
server_address: ip:port #注册和中继服务器
stun_server: #stun服务器
  - stun1.l.google.com:19302
  - stun2.l.google.com:19302
in_ips: #代理ip入站
  - 192.168.1.0/24,10.26.0.3
out_ips: #代理ip出站
  - 0.0.0.0/0
password: xxx #密码
mtu: 1420  #mtu
tcp: false #tcp模式
ip: 10.26.0.2 #指定虚拟ip
use_channel: relay #relay:仅中继模式.p2p:仅直连模式
server_encrypt: true #服务端加密
parallel: 1 #任务并行度
cipher_model: aes_gcm #客户端加密算法
finger: false #关闭数据指纹
punch_model: ipv4 #打洞模式,表示只使用ipv4地址打洞,默认会同时使用v6和v4
ports:
  - 0 #使用随机端口,tcp监听此端口
  - 0
cmd: false #关闭控制台输入
no_proxy: false #是否关闭内置代理,true为关闭
first_latency: false #是否优先低延迟通道,默认为false,表示优先使用p2p通道
device_name: vnt-tun #网卡名称
packet_loss: 0 #指定丢包率 取值0~1之间的数 用于模拟弱网
packet_delay: 0 #指定延迟 单位毫秒 用于模拟弱网
dns:
  - 223.5.5.5 # 首选dns
  - 8.8.8.8 # 备选dns
mapping:
  - udp:0.0.0.0:80-10.26.0.10:80 # 映射udp数据
  - tcp:0.0.0.0:80-10.26.0.10:81 # 映射tcp数据
  - tcp:0.0.0.0:82-localhost:83 # 映射tcp数据
disable_stats: false # 为true表示关闭统计
allow_wire_guard: false # 为true则表示允许接入wg

Star

Star History Chart