第一步:我们安装Win2016和WIN2019自带的hyper-v虚拟化软件,默认安装就行了 不需要任何修改,需要重启服务器生效
第二步:安装好hyper-v后,我们打开hyper-v管理器,找到右侧的hyper-v设置,将虚拟硬盘和虚拟机的路径都改到D盘或你服务器上比较大空闲分区中
第三步:设置虚拟交换机
这里说明下这3个交换机的意思
外部:就是指这个交换机创建后,在这个交换机下的虚拟机就直接和路由器连接,如果你的电脑是通过路由器局域网(家庭网络或公司网络)上网这样创建交换机后,虚拟机就可以直接分配内网IP(如192.168.1.x)直接连接外网;但是如果在IDC机房的服务器,这样创建虚拟机交换机后,需要给虚拟机分配独立的公网IP才能上网。IDC机房虚拟机有独立公网IP才是用这个形式来创建虚拟机交换机。
内部:创建的交换机是母机下的一个内网网络,虚拟机有一个内网IP,母机就相当于一个路由器的角色,虚拟机通过母机上网。一般服务器只有一个IP的时候是这样创建虚拟交换的,然后通过端口隐射方式将母机的公网IP的端口隐射到内网虚拟机上。
专用:就是服务器是独立网络环境,不连接任何网络,既不能和母机互通,更不能连接外网。
我们这里是为了演示虚拟机利用母机上网,虚拟机没有独立公网IP。
另外请注意服务器只有一个网卡连接网络的时候,外部和内部交换机只能创建其中一个(只能二选一),否则会出问题,如果要换虚拟机交换机的类型,就要先删除前面创建的。在有2个网卡连接了网络的情况下,可以将一个网卡专给外部交换机用(不要选配置了公网IP的网卡),还可以再创建内部交换机。
第四步:设置NAT方式令虚拟机使用内网的IP也能上网
在执行命令ncpa.cpl打开网络连接管理器
找到配置了公网IP的物理网卡,右键点击选属性
在这个物理网卡属性的共享设置中,勾选“允许其他网络用户通过此计算机的intel连接来连接”,指定给虚拟网卡,然后点确定.
设置后我们再看看虚拟机网卡的属性,也可修改虚拟机的内网IP段:
通过以上设置后开通的虚拟机就会有一个内网IP,192.168.137.2---192.168.137.255,或者直接给虚拟机设置个段的IP就可以直接让虚拟机上网了!
但是这样设置后只是让虚拟机能访问外部网络,不能让外部网络访问虚拟机,这我们就需要在母机中做端口隐射(端口转发)解决外部能访问处于内网的虚拟机
在做端口映射前要确保母机“IP Helper”服务是启动的,默认情况下这个服务是开启状态。
第五步:端口隐射(端口转发)
A、增加一个端口映射
| netsh interface portproxy add v4tov4 listenport=外网端口 listenaddress=公网IP connectaddress=内网IP connectport=内网IP端口 |
例如:
| netsh interface portproxy add v4tov4 listenport=33891 listenaddress=59.36.100.201 connectaddress=192.100.201.8 connectport=3389 |
另外:还要在母机的防火墙中开放被隐射的端口,如上面的33891端口;在虚拟机中也要开放3389端口。
也可以不指定listenaddress公网IP,如netsh interface portproxy add v4tov4 listenport=33891 connectaddress=192.100.201.8 connectport=3389
如果需要本机端口映射(端口转发)本机的其他端口,只用将connectaddress的内网IP设置为本机的IP地址(可以是公网IP也可以是内网IP,但不能写为127.0.0.1)
另外隐射的端口不能和现有使用的端口冲突,如上面的33891这个端口在母机上在隐射前不能是被使用中的,否则会存在冲突。
B、查询端口映射情况
netsh interface portproxy show v4tov4
说明:如果服务器内没做端口映射,就查询不出任何数据
查询某个IP所有的端口映射(可以是母机IP 也可以是虚拟机的内网IP):
netsh interface portproxy show v4tov4 find "192.100.201.8"
或
netsh interface portproxy show v4tov4 find "59.36.100.201"
说明上面的IP地址可以不加“”也可以查询
可以查询服务器的外网IP,也可以查询虚拟主机的内网IP。
C、删除端口映射方法
netsh interface portproxy delete v4tov4 listenaddress=公网IP listenport=外网端口
或
netsh interface portproxy delete v4tov4 listenaddress=虚拟机内网IP listenport=虚拟机内网端口
例如:
netsh interface portproxy delete v4tov4 listenaddress=59.36.100.201 listenport=33891
或
netsh interface portproxy delete v4tov4 listenaddress=192.100.201.8 listenport=3389
