实现宿主机到虚拟机的端口映射(端口转发)

测试环境:

宿主机:Windows Server 2003 R2 Enterprise X64 Edition

虚拟机:VM10.0.2 ,装的CentOS7.4

 

需求背景:

宿主机系统更换麻烦,把外部请求从宿主机转发到虚拟机内的linux处理,宿主机开放端口8080,linux开放端口80,linux的ip为192.168.150.128

 

实现方式:

     实现的方法有以下几种:

  • 用软件实现

                 比如经常使用的Porttunnel,还有其他类似的tcpmapping

 

  • 使用windows自带的netsh

               基本命令如下:

          查看所有已有的端口映射:

netsh interface portproxy show all

 

          创建新的端口映射关系:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=192.168.150.128 connectport=80

  /**这里是把本机8080的端口数据转发到192.168.150.128的80端口上去**/

 

           删除已有的端口映射关系:

netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8080

           

 

  • 使用虚拟机配置实现

        1.在vm虚拟机菜单上点击“编辑”菜单,选择“虚拟网络编辑器”

        实现宿主机到虚拟机的端口映射(端口转发)

 

         2.在弹出窗口左上方选择“VMnet8”,然后在右边选择“NAT设置”

实现宿主机到虚拟机的端口映射(端口转发)

 

 3.在弹出的“NAT设置”窗,中间位置点击“添加”按钮

实现宿主机到虚拟机的端口映射(端口转发)

 

4.在弹出的“映射传入端口”窗,按要求填入信息

实现宿主机到虚拟机的端口映射(端口转发)

 

这里的配置是把宿主机8080的端口数据转发到虚拟机内的linux系统192.168.150.128的80端口

 

小结

       通过对服务器的压测发现,在100用户并发下,通过端口映射后都会有错误率,直接在宿主机内通过linux的80端口压测则没有错误。其中用软件实现的方式的错误率最高,在60%上下,netsh次之,在30%上下;通过虚拟机配置的最好,错误率15%上下。

      为什么会出现该情况,原因未查到。