很早以前就已经使用这个方法开始做托管服务器了,服务器运行也很稳定,所以今天将这个方法写成文档。此方案通过一个服务器托管实例说明整个服务器的配置过程。
一般的机房服务器托管只给一个IP地址,要使用多个虚拟机对外提供web或其他服务就需要自己想办法将多个虚拟机中的应用通过这一个IP地址发布出去,整个服务器的配置分以下几个步骤:
1、 物理服务器安装操作系统并安装防火墙软件
2、 安装虚拟机软件
3、 在物理主机上发布各虚拟机中的web服务
4、 在物理主机上发布虚拟机中的其他服务
5、 配置虚拟机上网
此方案中,重点解决的是多个虚拟机中的站点怎样使用共享一个公网IP地址对外提供web访问服务,下面按照以上的步骤详细介绍配置方法。
1 物理服务器安装操作系统并安装防火墙软件
系统配置环境
下表中列出了本方案的各种配置信息:
操作系统 |
相关软件 |
网络配置 |
备注 |
Windows 2003(建议企业版)此为宿主机,安装到物理服务器上 |
Vmware Server 2.0(用于虚拟化的实现)ISA Server 2006标准版 |
VMNET1:192.168.10.5/24 WAN:10.10.5.254 (此ip为实验环境,实际应用时要修改此IP) |
后文对物理主机上的操作系统称为宿主机 宿主机的VMNET1:内网网卡(与虚拟机相连的虚拟网卡vmnet1) 宿主机eth1 :外网网卡(此网卡绑定了公网IP地址) 虚拟机系统,对外提供各种服务 虚拟机网卡的连接方式选Host-only
|
CentOS/Linux(版本根据需要可自选) |
安装相关应用程序Apache、FTP、Mysql |
Etho0:192.168.10.20/24 网关:192.168.10.5 |
|
Windows操作系统 |
IIS、FTP、MSSql、Mail |
本地连接:192.168.10.10/24 网关:192.168.10.5 |
|
其他虚拟机系统 |
|
|
虚拟机和宿主机的拓扑图如下:
安装配置ISA Server 2006(宿主机)
有关ISA Server 2006的相关介绍不再介绍,网上有很多介绍,在这里直接介绍软件的安装和基本配置。
在安装ISA Server2006之前,需要对服务器进行相关配置,要求服务器最少有两块网卡,但是一般服务器虽然有多块网卡,却只有一个网卡是接了网线,所以需要我们想办法解决这个问题。可以有三个方法解决这个问题。
第一种是使用一个水晶头做一个环回的线,就是将网线上的发送线直接连到自己的接受线上就成了一个环回路,不要着急使用这个方法,因为下面介绍的两个方法比这个还要方便。
第二种方法,通过“添加硬件”的方法添加一个微软的虚拟环回网卡,如下图所示。
按照以上步骤添加了一个虚拟的网卡后,就可以为此网卡设置一个IP地址了,注意是个内网的IP,这里就设置成192.168.0.1吧。
第三种方法更简单,不用添加虚拟网卡了。调换一下软件的安装顺序,先安装VMware Server,因为安装完虚拟机软件后,会自动为系统添加2个虚拟网卡,选择VMNET8那块网卡并设置IP地址为192.168.0.1吧,因为VMNET1在后面我们要用它来做虚拟机网关。
本例中使用了第二种方法,为系统添加了一块虚拟网卡,同时将虚拟网卡重命名为LAN,配置有公网IP的网卡命名为WAN,以便以后辨认。
下面开始安装ISA Server 2006,有两种方法:第一种是手动按照步骤安装,第二种是通过配置文件自动安装。第一种方法适合在现场安装,第二种适合远程安装。
第一种安装方法:
将ISA Server 2006标准版光盘放入光驱,自动运行后出现安装界面,如下图所示。
按照提示进行安装,在选择“安装类型”时,要选择“自定义”,在自定义安装中去掉“高级日志”组件的安装,避免ISA Server产生大量日志占用磁盘空间,如下图所示。
在安装向导的“内部网络”中为ISA Server添加内网的地址段,也可以选择指定的网卡作为内网的网段地址,在此处将你所指定的所有内网IP地址全部加入,图示
在接下来的安装步骤中,根据自己的情况进行相应的选择就可以了,直到安装完成。
安装完ISA Server2006后,默认的策略是禁止所有进出的数据,下面要对ISA Server进行简单的配置,发布物理服务器的远程桌面端口,使外网可以通过远程桌面对服务器进行远程的管理。
打开ISA Server2006的管理器,转到“防火墙规则”右键单击选择“新建”——“非web服务器协议发布规则”,如下图所示。
在弹出的对话框中输入规则名,如“RDP”,然后继续。在“选择服务器”对话框中输入内网的IP地址,本例中使用的是192.168.0.1,继续。
在“选择协议”对话框中,因为发布的是3389端口,所以选择下图所示的“RDP服务器”。
在“网络监听器IP地址”对话框中选择“外部”来监听连接请求,如下图所示。
继续下一步,直到完成,然后单击“应用”使刚创建的防火墙策略生效。
经过以上配置后,就可以通过远程桌面连接到服务器进行远程管理了。
第二种安装方法:
利用配置文件实现ISA Server 2006的无人值守安装,适合通过远程安装ISA Server。下面简单介绍一下此方法。
在ISA Server 2006安装光盘的FPC目录中找到msisaund.ini这个文件,这个文件就是在安装ISA Server 2006时自动加载的安装应答配置文件。我们只要编写这个配置文件即可,以下为编写好的自动应答文件内容:
[Setup Property Assignment]
PIDKEY=12345678901234567890ASDFG ;序列号
INTERNALNETRANGES=3 10.0.0.0-10.255.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255 ;内网地址段
ADDLOCAL=MSFirewall_Management,MSFirewall_Services ;安装的组件
REMOVE=MSDE :要删除的组件
IMPORT_CONFIG_FILE=c:\3389.xml ;此文件时一个防火墙规则,可以将备份的或者创建的防火墙规则在装完后,自动导入并应用。
保存好应答文件于C盘根下,然后在运行中输入(ISA Server安装盘是D) D:\FPC\setup.exe /v"/qb FULLPATHANSWERFILE=\"c:\msisaund.ini\"" 命令就会自动开始安装了。
2 安装虚拟机软件
软件的安装步骤比较简单,所以在此略过。
3 在物理主机上发布各虚拟机中的web服务
在这里我们以发布192.168.10.10虚拟机中的www1.duxt.net和www2.duxt.net以及1912.168.10.20虚拟机中的www3.duxt.net和www4.duxt.net 这4个站点为例来配置ISA Server。
1、 发布192.168.10.10中的站点
在防火墙策略中新建发布,选择“网站发布规则”规则名为“web-10”,在发布类型中选择“发布单个网站或负载平衡器”,如下图所示
在“服务器连接安全”选项卡中选择“使用不安全的连接发布的WEB服务器或服务器场”。
在“内部发布详细信息”对话框中,内部站点名称填写“web-10”,同时选中“使用计算机名称或IP地址连接到发布服务器”并填写虚拟机的IP地址 192.168.10.10如下图所示。
在下图中,路径写“/*”,同时选中“转发原始主机头而不是前一页的内部站点名称字段中指定的实际主机头”选项。
在下图的“公共名称细节”中,接受请求选择“此域名(在以下输入)”,同时要在下面的公共名称中填如域名,如www1.duxt.net。
在下图中由于防火墙中并不存在web侦听器所以,需要新建一个新的,新的web侦听器名称“web-80”。
新建的web侦听器,客户端连接安全配置选择“不需要与客户端建立SSL安全连接”,如下图所示。
在“web侦听器IP地址”对话框中选择“外部”侦听,同时选中下边的复选框,这样访问网站时可以节省带宽。
在“身份验证设置”中选择“没有身份验证”。
完成web侦听器的创建,回到“选择web侦听器”对话框继续下一步,在“身份验证委派”对话框中选择“无委派,客户端无法直接进行身份验证”。
在下图中默认即可,允许所有用户。
创建好网站发布策略后,查看属性。选择“公共名称”选项卡后,在下面再加入www2.duxt.net域名,完成两个网站的发布。
2、 发布192.168.10.20中的站点
按照“web-10”的规则再发布一个名为“web-20”的web发布规则,方法参考第一步。
在下图中只要直接选择在第一步中创建的web侦听器即可。
同样需要修改新建好的web-20的发布规则,公共名称中加入要发布的站点域名,在添加域名时可以使用通配符*(星号)来做域名的匹配。
在使用通配符域名时,需要将“链接转换”选项卡中的“对此规则应用链接转换”复选框去掉,否则会报错。
到这里,两个虚拟机中的站点都已经发布完成,当用户访问指定的域名时,ISA Server 会根据创建的web发布规则进行域名匹配,然后转发请求到相应的虚拟机中。
需要注意的是,两条web发布规则的上下顺序在一定条件下是有要求的,ISA Server会从上到下进行规则匹配,如果遇到匹配的规则,将不再匹配后面的web发布规则,所以如果两条规则中存在相同的域名,则只响应第一条规则而忽略后面的。
实践:一般情况下,最后一条web发布规则在“公共名称”中应该选择“所有请求”,将所有不匹配的域名请求都转发到此规则中。
4 在物理主机上发布各虚拟机中的其他服务
根据以前写的Linux版的实例,我们在这里发布相同的服务端口。
1、设置IIS FTP连接端口为10000。被动模式的端口范围(10001-10005),使用以下vbs脚本命令进行修改
cscript.exe adsutil.vbs set /MSFTPSVC/PassivePortRange "10001-10005" (在Windows虚拟机中执行)
2、发布内网虚拟机192.168.10.10的10000-10005端口
创建名为“FTP-10000”的“非web服务器协议发布规则”规则。由于发布的虚拟机192.168.10.10上的FTP,所以在“选择服务器”对话框中填写此IP地址,如图
在“选择协议”对话框中,由于这里并没有提供10000-10005这个端口范围的协议,所以需要我们自己创建一个,单击“新建”命名为FTP10000 。
在下图的“端口范围”中填写10000-10005的范围,方向是 “入站”,如下图所示。
注意,确定后,弹出的“辅助连接”中选择“否”,不要用辅助连接。
创建好自定义协议后,应用并继续下一步,以后的步骤按照发布“RDP”的方法选择即可。完成后的截图如下
创建完后,将虚拟机192.168.10.10中的FTP端口改成10000,然后进行测试。
3、发布内网虚拟机192.168.10.10的远程桌面端口
创建名为“RDP-3310”的“非web服务器协议发布规则”规则。由于发布的虚拟机192.168.10.10上的3389端口,所以在“选择服务器”对话框中填写此IP地址,步骤参考“RDP”规则的创建方法。
但是在“选择协议”对话框中,需要另做配置,在此对话框中,单击“端口”在弹出的对话框中,改变一下对外发布的端口号,因为之前我们发布“RDP”规则时已经占用的公网IP的3389端口,所以在此需要将端口改成3310(根据个人喜好自己可以使用其他端口),如图所示
应用以上规则后,在远程连接服务器公网IP的3310端口,防火墙会将连接请求转发到内网192.168.10.10的3389端口上,实现连接虚拟机的远程桌面服务。
4、发布内网虚拟机192.168.10.10的MSsql端口
发布虚拟机中的MSSql服务器,其实就是发布1433端口,按照“RDP”发布的方法进行就可以了,只是在选择协议时,在下拉列表中选择“Microsoft SQL Server”协议就可以了,如图所示
5、发布内网虚拟机192.168.10.20的20000-20005端口
参考发布2的发布方法,需要注意的是,选择协议中并没有20000-20005端口的协议,需要自己定义一个协议。
6、发布内网虚拟机192.168.6.200的SSH端口
方法同上
7、发布内网虚拟机192.168.6.200的Mysql端口
方法同上
以上各种服务发布完成后的截图如下:
解决虚拟机中网站日志中客户端真实IP问题(虚拟机)
通过ISA Server发布的网站同样会出现虚拟机中网站的日志文件中记录的都是宿主机的内网IP,影响网站日志的访问统计。
解决此问题其实很简单,打开防火墙的网站发布规则修改属性,选择“到”选项卡,可以看到下面有两个选项,默认选择的是“使请求显示为来自ISA服务器计算机”,所以网站日志记录的都是宿主机的IP地址,只要选择“使请求显示为来自初始客户端”即可解决此问题,就这么简单。
5 配置虚拟机上网
创建访问规则,使虚拟机系统可以访问网络以便更新操作系统补丁。
选择防火墙策略,选择“新建”——“访问规则”规则名称“to internet”。规则操作选择“允许”,在“协议”对话框中选择“所选的协议”,然后选择需要的协议。
选择内网的IP地址,“内部”表示物理服务器中的内网地址和主机,“本地主机”表示物理主机本身。
然后选择访问的目标地址,“外部”表示外网。
创建规则后的截图
这样虚拟机中的系统就可以通过ISA Server访问互联网。
实践:出于安全考虑,也可以在规则选择目标时,指定访问的域名、IP地址或者某个URL地址。
总结
到这里算是将全文都写完了,这种方案托管应用多年了,一直很稳定,而且利用ISA Server这个企业级的防火墙来保护系统真的是很安全也很稳定,一般的DDOS攻击,只要不是流量型的攻击都是可以很好的保护服务器正常运行的。
ISA Server的操作其实都比较简单、直观的,本文档中只是简单举了几个比较典型的实例,可以根据个人的需要参照本文档中的步骤进行创建。
宿主机的系统不用安装杀毒软件了,不然会拖慢系统速度,我的服务器一直没装,也没出什么问题,只要严格限制宿主机访问网络一般不会出什么问题。
可以在网上查一些系统优化方面的资料优化一下系统,然后对系统做一个GHOST备份,最好装一个一键GHOST,这样可以远程对系统进行回覆操作。
注意:在恢复系统之前,对防火墙策略做一下备份。
最后,此方案中没有提到服务器硬件的配置,这个可以根据不同的需求配置硬件。我个人建议增加内存和提高磁盘IO是关键。因为运行的虚拟机多了,磁盘IO就会成为瓶颈。