不确定我在这里使用了正确的术语,这基本上就是我问的原因(使用正确的术语我可以肯定地用谷歌搜索)。
我有一个装有 Windows 2008 的“一台大服务器”,上面有几个虚拟机(linux、win7.win2k8)。可以使用公共 IP 地址访问服务器。我想启用以下功能,只是不知道从哪里开始:
- 将网站放在不同的虚拟机上(即 VM1 主机 a.com 和 VM2 主机 b.com)
- 网站应使用 http 和 https (ssl) 协议
- 允许在每个 VM 上使用远程桌面或类似的 RDP
- 允许每台机器使用其他协议,如 webdav、scp 或 ftp
我假设我需要一个用于远程桌面访问的 VPN,并且我需要某种基于主机或基于主机 + 基于协议的 NAT(如果是这样的话)。
这似乎已经完成了一百万次了,我只是不知道从哪里开始,使用什么软件或者只是谷歌搜索什么。另外,恐怕 SSL 不会以这种方式工作,因为主机名在握手之前是不可见的。
您的问题确实涉及很多内容,但我将重点关注 SSL 网站部分,因为它具有超出技能水平/知识的实际限制;如果您需要 VPN 配置、WebDAV、FTP 等方面的具体帮助,将问题的其余部分分解成更小的块是有意义的。
如果您只计划托管几个 SSL 网站,或者它们将是通配符网站(即 *.example.com)并且您前面有一个反向代理服务器,那么您可以坚持使用一个公共 IP 地址。如果您需要多个域(example.com、example.net、foo.com、bar.com 等),那么您可以使用反向代理上安装的主题备用名称 (SAN) 或 UCC 证书。维基百科上有一个方便的图表,向您显示了流行证书供应商的列表以及您从他们的产品中获得了多少域;Global Sign 最多提供 40 个证书。
您还可以使用替代端口(
https://vm1:443
等https://vm2:444
)和适当的 NAT 规则(在 VM 前面的防火墙中),但这对于公共站点来说通常是不可取的。现在,您不能只让服务器使用 SSL 处理不同站点的原因是因为 SSL 的工作原理:SSL 对话(握手)发生在主机标头(“主机名”)从客户端发送之前并由终止 SSL 连接的服务器解释,例如像 Apache 或 IIS 这样的网络服务器或像nginx这样的反向代理/网络服务器。这是因为服务器“不知道”此时要出示什么证书,并且(通常)只会出示配置中定义的默认(或第一个)证书。此“默认”SSL 证书可以是主题备用名称 (SAN) 证书或通配符证书,这可能适合您的需要。
服务器名称指示(SNI) 是多 SSL 站点问题的新替代方案(实际上是 SSL/TLS 协议的扩展,它允许客户端将主机标头指定为 SSL 对话的一部分),但受阻老化的浏览器数量,并且仅在 IE7+(也仅适用于 Vista+)、Firefox 2+ 等中可用,因此如果您希望未清洗的大众访问您的 SSL 站点,则可能不适合您的需求。
因为听起来您正试图成为某种托管服务提供商(这是一整套蠕虫病毒),所以我想尽可能多地从我的 ISP/colo 提供商处获得大量 IP,或者代理 ARP 或在配置过程中为 VM 物理分配一个公共 IP 地址,并让它们获得自己的证书等。没有 NAT 的东西会更好地工作,并且会减少管理开销。如果每个 VM 都是多租户的(即商品“共享主机”,您可以在 VM 上放置尽可能多的站点),那么您可能可以使用 SAN 证书/IP 地址的组合,但请记住,您不能随便在证书中添加/删除域:您必须再次完成证书请求/签名过程,他们可能会再次向您收费。
我也会非常小心地保护主机(“一个大服务器”)并假设您使用的是 Hyper-V,专用物理网卡(即不要作为虚拟网络包含在您的 Hyper-V 配置中)到受真实(硬件)防火墙保护的盒子的远程管理,并建立某种安全连接(如始终在线的 IPSec 隧道),最好在单独/有保证的 Internet 连接上*或至少在公共 IP 上用于防火墙 ACL 目的和QoS的“客户端”块之外的不同块。我还想看看你的服务器是否支持IPMI(戴尔所说的 DRAC)并将其与您的专用物理 NIC 一起用作无法从公共互联网访问的管理网络的一部分;这将允许您获得对盒子的裸机访问权限,以便您可以远程重启它、进行固件升级等。
*这种专用连接要求在托管设施中可能不是问题,他们可能会采取自己的步骤来确保/保证(通过 SLA)正常运行时间/带宽/弹性。
我不是 Windows 用户,但我可以给你正确的条款,你可以用谷歌搜索并了解它是如何完成 Windows 的。
您正在寻找的是一个“反向代理”,它将您的网站路由到 VM 的本地 IP 地址。在我的例子中,我使用 nginx 作为反向代理。我希望这对您有所帮助,如果您需要任何其他信息,请告诉我们。