实现宿主机到虚拟机的端口映射(端口转发)
测试环境:
宿主机: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%上下。
为什么会出现该情况,原因未查到。