指定一个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
可以执行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
也可以执行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
最后可以用虚拟ip实现设备间相互访问
帮助,使用-h命令查看
前提条件:安装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协议 | 是 |
支持安卓和Windows 下载
aes-gcm
、chacha20-poly1305
等多种加密算法)rsa
+ aes-gcm
)vnt默认使用10.26.0.0/24网段,和本地网络适配器的ip冲突
没有下载wintun.dll 或者使用的wintun.dll有问题
某些宽带下(比如广电宽带)UDP丢包严重
设备重启后程序自动获取的id值改变,导致注册时重新分配了新的IP,或是IP冲突
对VNT有任何问题均可以加群联系作者
QQ群1: 1034868233(满人)
QQ群2: 950473757
如果VNT对你有帮助,欢迎打赏作者
可使用社区小伙伴搭建的中继服务器
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