一、简介

VNT(Virtual Network Tool)是一款开源的虚拟网络工具,用于实现异地组网和内网穿透,能将不同地点的设备连接到同一个虚拟局域网中。它具备以下主要特点:

  • 开源与跨平台

  • 高效组网

采用点对点(P2P)技术,优先尝试在设备间建立直接连接;当直连不可行时(会自动使用中继服务器转发数据,以确保连接成功

  • 简单易用

可以通过命令行进行配置,只需设置一个共享的令牌(token),即可让不同设备加入同一虚拟网络

二、安装

  • 下载VNT并解压

  • Windows默认使用tun网卡,需要下载wintun.dll并和vnt工具放在同一目录

三、常用命令

  • -k <token>

组网的唯一标识,使用相同的token,就能组建一个局域网络;

  • -n <name>

设备名称,便于区分不同设备,默认使用系统版本;

  • -w <password>

运行vnt-cli时使用该密码生成的密钥对客户端数据进行加密,并且(中继)服务端无法解密,使用相同密码的客户端才能通信。

  • -s <server>

指定中继服务器地址,协议支持使用tcp://ws://wss://,默认为udp://

  • --ip

指定虚拟ip,指定的ip不能和其他设备重复,必须有效并且在服务端所属网段下,默认由服务端分配;必须与另一端电脑命令中-i参数里指定的对端虚拟IP一致;

  • -i <in-ip>

配置点对网时使用,-i 192.168.0.0/24,10.26.0.3表示允许接收网段192.168.0.0/24的数据并转发到10.26.0.3(即如果想访问192.168.0.0/24这个网段,需要把数据包发给虚拟IP为10.26.0.3的节点),可指定多个网段;

  • -o <out-ip>

配置点对网时使用,宣告本机所在的物理网络段,-o 192.168.0.0/24表示允许将数据转发到192.168.0.0/24,可指定多个网段;

  • --info

后台运行时,查看当前设备信息。

  • --list

后台运行时,查看其他设备列表。

四、组网

假设家庭电脑的ip地址为:172.16.0.13,公司电脑的ip地址为:172.27.160.52

1、双向组网

通过vnt-cli将位于不同内网的家庭和公司电脑连接到同一个虚拟局域网中来实现双向互访(网对网);例如,指定公司电脑虚拟ip为10.26.0.3,指定家庭电脑虚拟ip为10.26.0.2

在公司电脑上运行:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n company-pc --ip 10.26.0.3 -i 172.16.0.0/24,10.26.0.2 -o 172.27.160.0/24

在家庭电脑上运行:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n home-pc --ip 10.26.0.2 -i 172.27.160.0/24,10.26.0.3 -o 172.16.0.0/24

执行完命令后即可完成虚拟局域网的搭建,可以看到会创建一个vnt-tun的网络连接。

参数说明:

  • -k <token>

组网的唯一标识,使用相同的token,就能组建一个局域网络;

  • -n <name>

设备名称,便于区分不同设备,默认使用系统版本;

  • --ip

指定虚拟ip,指定的ip不能和其他设备重复,必须有效并且在服务端所属网段下,默认由服务端分配;必须与另一端电脑命令中-i参数里指定的对端虚拟IP一致;

  • -i <in-ip>

配置点对网(IP代理)时使用,-i 192.168.0.0/24,10.26.0.3表示允许接收网段192.168.0.0/24的数据并转发到10.26.0.3,可指定多个网段;

例如公司电脑命令中的-i 172.16.0.0/24,10.26.0.2可以解释为:如果想访问172.16.0.0/24这个网段(家庭电脑所在的局域网),需要把数据包发给虚拟IP为10.26.0.2的节点(家庭电脑)。

  • -o <out-ip>

配置点对网时使用,宣告本机所在的物理网络段,-o 192.168.0.0/24表示允许将数据转发到192.168.0.0/24,可指定多个网段;

  • 访问多个网段

如果需要访问公司其他网段的服务,例如192.168.36.05的服务,需要修改vnt-cli命令:

公司电脑增加-o参数指定192.168.36.0网段:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n company-pc --ip 10.26.0.3 -i 172.16.0.0/24,10.26.0.2 -o 172.27.160.0/24 -o 192.168.36.0/24

家庭电脑增加-i参数指定192.168.36.0网段:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n home-pc --ip 10.26.0.2 -i 172.27.160.0/24,10.26.0.3 -i 192.168.36.0/24,10.26.0.3 -o 172.16.0.0/24

2、单向组网

如果只需要在家单向访问公司网络(点对网),命令如下:

在公司电脑上运行:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n company-pc --ip 10.26.0.3 -o 172.27.160.0/24

在家庭电脑上运行:

vnt-cli -k 5F9DE3948546A0A5CB -w A1Q2P3M4 -n home-pc --ip 10.26.0.2 -i 172.27.160.0/24,10.26.0.3 

五、问题及解决方式

1、远程主机强迫关闭了一个现有的连接

运行vnt-cli --list报错:

cmd: Os { code: 10054, kind: ConnectionReset, message: "远程主机强迫关闭了一个现有的连接。" }
  • 解决方式

需要在vnt-cli运行时执行

2、一直输出connect

  • 解决方式

由于在vnt-cli命令中指定了中继服务器(-s xxx),使用默认服务器或更换其他中继服务器即可。

3、连接成功但ping不通

使用双向组网连接成功,且通过vnt-cli --list可以看到虚拟局域网中的设备,但是通过虚拟ip均无法ping通。

ping 10.26.0.2

正在 Ping 10.26.0.2 具有 32 字节的数据:
请求超时。
请求超时。

使用tracert 10.26.0.2也是超时:

通过最多 30 个跃点跟踪到 10.26.0.2 的路由

  1     *        *        *     请求超时。
  2     *        *        *     请求超时。

使用arp -a看到接口: 10.26.0.3 --- 0x22下的物理地址均为空:

  • 解决方式

更换vnt版本,使用稳定版重新连接即可(之前下载的是预发布版本)。

参考资料: