单个公网ip在多台虚拟机上的应用

服务器在托管的时候,运营商会提供一个固定的IP地址,此IP可以管理一个OS。但有时服务器上会装上虚拟软件比如微软自带的HYPER-V,同时运行多个OS。需要在此IP上绑定不同端口来访问不同的OS或应用。本篇将描述如何实现上述功能。

环境

宿主机为 win Server 2012R2 64bit

虚拟机为OS自带的Hyper-V

虚拟机1为Ubuntu 18.0.4

虚拟机2为win Server 2008R2 32bit

步骤

1.首先升级2012R2,打上最新的补丁。毕竟到时候要放到外网上,安全性可靠性等方面都会好很多。

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

让我们先看看宿主服务器此时的网络状况:

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
IP为192.168.0.112
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
此时有一个网卡,ip地址为192.168.0.112,自动获取得到的。(公司的网段为192.168.0.0,DHCP

2.在服务器管理器里面添加脚色和功能-安装Hyper-V,(需要选择、改动的我列到下图,其他的保持默认,点击下一步)

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
选择 Hyper-V,Web服务(一会要用)
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
勾选以太网
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
需要重启服务器,起来之后应该多出一块网卡,实际上是所谓的虚拟交换机

3.安装虚拟机,这里不论述。我安装的第一台虚拟机为2008R 32Bit。

4.虚拟机安装好后,不用启动,先关着。开始配置宿主机的虚拟网卡。

打开设备管理器,添加过时硬件:

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
这样宿主机上又多出一块虚拟网卡,这个网卡是连接虚拟机用的

5.创建虚拟交换机

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

随便起个名字,我起名叫2008,网卡选择刚才添加的虚拟网卡。这一步建立名为2008的虚拟交换机的同时,也连接上了宿主机的网卡。

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

名字叫2008的虚拟交换机建立后,在属性里面只保留IPV4属性,并设置地址为192.168.111.1,24位的掩码。

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

这一步就是把虚拟机的网卡连接到虚拟交换机2008上。

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

这个时候用192.168.111.0这个网段地址,就可以相互ping通宿主机和虚拟机了。

宿主机通过默认的网卡连接外网,通过添加的虚拟网卡连接虚拟机,虚拟机虽然可以上网,但是外部访问不了,因为没有做路由哦。

6.先看一下虚拟机的ip,为192.168.111.117

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

7.下面继续做路由。先配置一下路由协议,把它启动。

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客

8.打开NAT,在默认网卡上设置服务和端口,

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
打开后默认为上图显示,点击 添加…
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
先把虚拟机的远程桌面放通,因为宿主机要用3389端口,所以我们把虚拟机的此端口映射到3381上,(不一定是3381,可以随意,不要和其他冲突了就行)
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
把虚拟机的80端口映射到IP的81上

生产环境下可能需要其他端口,比如,虚拟机需要用到SQL Server的话放通1433,mysqld的话需要放通3306. 注意宿主机上有同样应用或端口一样的话,映射时需要改掉传入端口。

9.测试

win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
在另外一台机器上远程宿主服务器
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
宿主连接成功
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
连接虚拟服务器
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
成功
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
另外一台机器的浏览器上输入:192.168.0.112(宿主的网站地址)
win2012环境下Hyper-V虚拟机共用单个公网ip-风君雪科技博客
另外一台机器的浏览器上输入:192.168.0.112:81(虚拟机的网站地址)

写在最后,次篇主要是针对一个公网ip对应多个虚拟机,提供不同服务。其原理是通过默认网卡连接外网,(本篇基本未对默认网卡做任何改动,仅在路由配置里面做了指定),新建虚拟交换机和虚拟网卡连接虚拟机和宿主机,并通过宿主机上的路由分配端口和服务。 既然是公网ip,建议在配置路由时,把必要的端口号修改掉,如3389。并设置多用户可登陆和复杂的密码,启用防火墙或安装杀毒软件。安全很重要!!!