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

测试环境:

宿主机: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.0listenport=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%上下。

相关推荐