掌桥专利:专业的专利平台
掌桥专利
首页

一种WSL2系统用的端口智能映射方法

文献发布时间:2023-06-19 13:46:35


一种WSL2系统用的端口智能映射方法

技术领域

本发明涉及Windows系统下的端口映射技术领域,具体涉及一种WSL2系统用的端口智能映射方法。

背景技术

WSL是Windows 10系统中的一个适用于Linux的Windows子系统,是Windows 10系统新增加的一个功能,主要用于可直接在Windows 10系统上运行原生Linux系统及命令。WSL2是WSL的一个新版本,也是目前为止的最新版本,它支持适用于Linux的Windows 子系统在Windows上运行ELF64 Linux二进制文件,以提高文件系统的性能和增加系统调用的完全兼容性。

但目前WSL2子系统的使用有诸多不足,主要为WSL2子系统的IP地址在每次WSL2子系统重启后都会改变,从而直接导致WSL2子系统与Windows 10系统之间的端口映射无效,从而导致WSL2子系统上的服务变为全部不可用。为此,需要人工来干预进行查新IP地址,并将新的IP地址重新执行映射脚本,建立新的端口映射关系,这在实际使用时显得非常繁琐麻烦。为此,需要一种更好的更智能的端口映射方法。

发明内容

针对现有技术的不足,本发明的目的提供一种WSL2系统用的端口智能映射方法,其能够解决系统重启后仍然自动建立新的端口映射的问题。

实现本发明的目的的技术方案为:一种WSL2系统用的端口智能映射方法,包括以下步骤:

步骤1:将WSL2子系统和BAT脚本安装在目标Windows 10系统内并设置为自动启动后,

计算机初始化;

步骤2:WSL2HOST服务监控WSL2子系统的IP是否有改变,若有改变,则将新的IP地址写入Windows 10系统中用于域名-IP地址映射关系管理的hosts文件中后执行步骤3,否则,继续监控;

步骤3:BAT脚本每隔m秒读取hosts文件内的文件数据,根据读取到的文件数据解析出Windows 10系统所在的主机记录的IP地址是否发生变化,若发生变化,则跳转步骤4执行,若未发送变化,则休息n秒后继续读取hosts文件的文件数据;

步骤4:BAT脚本将WSL2子系统服务需要的所有端口根据新的IP地址进行映射,完成WSL2子系统与Windows 10系统之间的端口映射。

进一步地,在完成步骤4后,重新跳转至步骤3,监控下一次IP地址是否发生变化,以实现动态监控IP地址变化下的动态端口映射。

进一步地,所述步骤3中,通过解析hosts文件中的debian.wsl固定主机的解析记录,从而判断出IP地址是否发生变化。

进一步地,所述m=3秒,n=10秒。

本发明的有益效果为:本发明具有部署简单,只需要在目标的Windows 10系统上安装WSL2子系统和一套BAT脚本即可,且WSL2子系统稳定地用于实际生产环节,只需要将监控到的新IP地址写入hosts文件即可,可以做到真正的无人值守,具有很好的稳定性。

附图说明

图1为本发明的流程示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

如图1所示,一种WSL2系统用的端口智能映射方法,包括以下步骤:

步骤1:将WSL2子系统和BAT脚本安装在Windows 10系统内并设置为自动启动,也即将WSL2子系统和BAT脚本放入Windows 10系统的自启动菜单栏中,以使得WSL2子系统的WSL2HOST服务和BAT脚本能够跟随Windows 10系统的启动而同步启动,

计算机初始化。

本步骤中,将WSL2HOST服务设置为自动启动,也即是在Windows 10系统的服务管理器中,将WSL2HOST服务的启动类型设置为自动,从而使得WSL2HOST服务能够跟随Windows10系统启动而启动。在将WSL2子系统安装在Windows 10系统后,将WSL2子系统的启动放入Windows 10系统的自启动菜单栏中,以确定Windows 10系统启动完毕的同时也启动了WSL2子系统。

步骤2:WSL2HOST服务监控WSL2子系统的IP是否有改变,若有改变,则将监控到的新的IP地址写入Windows 10系统中用于域名-IP地址映射关系管理的hosts文件中。若没有改变,则继续监控WSL2子系统的IP是否有改变。

在默认情况下,Windows 10系统的hosts文件安装在C:\Windows\System32\drivers\etc目录下的hosts文件中,因此可以根据此路径(即目录)快速将新的IP地址写入hosts文件中。Hosts文件是Windows系统自带的一个文件,专门用于记录域名与域名对应的P地址之间的映射关系。

步骤3:BAT脚本启动后,每隔若干时间(通常为若干秒)读取hosts文件内的文件数据,例如,每隔3秒读取hosts文件内的文件数据,根据读取到的文件数据解析出Windows 10系统所在的主机记录的IP地址是否发生变化,若发生变化,则跳转步骤4执行,若未发送变化,则休息若干时间(也通常为几秒)后继续读取hosts文件的文件数据,例如,休息10秒后继续读取hosts文件的文件数据。

其中,hosts文件中记录了debian.wsl(对应为debian分发版的WSL2子系统)固定主机的解析记录。

步骤4:BAT脚本将WSL子系统中的debian模块服务需要的所有端口根据新的IP地址进行映射,完成映射后,跳转至步骤3继续执行。

通过步骤3和步骤4,可以将每一次新的IP地址读取到,并通过BAT脚本重新进行端口映射,建立了WSL2子系统和Windows 10系统之间的端口应用。实现端口的动态映射,每次IP变化后,都可以自动将所需端口自动映射到新IP地址上,确保了WSL2子系统在Windows10系统的永久使用,也即是系统重启后也不需要人为干预,能够自动地进行端口映射。

其中,端口映射可以在BAT脚本中写入对应的代码即可,实现端口映射的关键代码示例如下:

netsh interface portproxy add v4tov4 listenport=22 connectaddress=%myip% listenaddress=* protocol=tcp

netsh interface portproxy add v4tov4 listenport=80 connectaddress=%myip% listenaddress=* protocol=tcp。

本发明具有部署简单,只需要在目标的Windows 10系统上安装WSL2子系统和一套BAT脚本即可,且WSL2子系统稳定地用于实际生产环节,只需要将监控到的新IP地址写入hosts文件即可,可以做到真正的无人值守,具有很好的稳定性。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

相关技术
  • 一种WSL2系统用的端口智能映射方法
  • 一种基于反向多连接的端口映射系统及其端口映射方法
技术分类

06120113804624