热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

利用IP 别名托管多个SSL 站点

来源: 作者: 时间:2007-02-27 Tag: 点击:
人们对于结合使用 SSL 和基于名称的虚拟主机的兴趣与日俱增。有些人认为这是不可能的,但是在 Apache 中,您可以通过基于 IP 的虚拟主机实现虚拟主机。在这篇文章中,John Liao 和 Jim Miles 将为您介绍具体做法。

在以前的 developerWorks 文章 “Secure remote data access for Domino®” 中,我们讨论了如何利用 Apache Web 服务器以节约预算的方式解决企业问题。(参见 参考资料中的链接。)在本文中,我们继续讨论这个主题,解释在一台通过一块物理网卡连接到网络的服务器上,如何使用 Apache Web 服务器提供多个 Secure Sockets Layer(SSL)Web 站点。

为什么需要在一台服务器上安置多个 SSL 站点?确实有企业需要在一台服务器上托管多个 SSL 站点吗?我们将通过一个真实的场景来解释这些问题。有创新精神的用户肯定会为这种思想找到更新颖的用途。

案例研究:两个应用程序,一台服务器

在我们公司早期的一个项目中,人力资源(HR)部门希望为一个基于 Web 的福利应用程序提供外部互联网访问。用户大多是从公司网络内部访问这个 Web 应用程序的,但是偶尔也会通过外部互联网访问它。为了满足安全需求,我们决定将这个应用程序放在公司网络内部的一台服务器上,使用 Apache 的 HTTP 服务器构建一个反向代理服务器。反向代理服务器会终止 SSL 连接,再重新打开另外一个到托管 HR 应用程序的 Web 应用服务器的 SSL 连接。通过在 Apache Web 服务器中添加 mod_security 模块,即可将反向代理服务器改为应用网关,并为 Web 应用程序提供更高的安全性。HR 部门精心挑选了一个完全限定域名(FQDN),这个域名是用户友好的,易于记忆。随后,我们继续向前推进,获得了 SSL 证书,我们认为一切就这样圆满结束了。

一年的时间很快就过去了。另一个企业 Web 应用程序出现了,它的需求与 HR 应用程序极为相似。它也需要为外部用户提供访问能力。外部用户的数量非常少。大多数访问都是在公司网络中进行的。我们立刻想到使用反向代理服务器为这个新的 Web 应用程序提供外部访问。

但是,这个新的应用程序有点儿麻烦。首先,我们很关心数据中心的物理空间,竭力在一切应用程序的部署中寻求整合服务器的机会。其次,我们必须证明购买额外的反向代理服务器是值得的。这两个因素结合在一起,促使我们仔细研究如何使用现有的反向代理服务器满足新 Web 应用程序的需求。惟一的问题是,这个应用程序需要一个与现有 HR 应用程序不同的 FQDN。

我们研究了几种为新的 Web 应用程序使用现有反向代理服务器的方法。第一种想法是,将新旧两个应用程序的域名都改为某个通用域名,比如 rp.company.com,并用上下文路径区分这两个应用程序。但是,原来的反向代理服务器用户强烈反对改变域名。如果改变域名,他们必须将域名变更情况通知公司中的所有人,还要修改所有印刷资料,以反映新的 URL。改变域名的成本非常高,而且可能会影响客户支持部门,他们不可避免地会收到大量用户投诉。另外,两个应用程序组都希望保留自己的 FQDN,他们认为自己精心选择的 FQDN 比这种一般化的 URL 更醒目,而且也是宣传推广这些 Web 应用程序的有效手段。

另一个想法是:为什么不注册一个 DNS 入口,让它将新的域名指向现有的服务器?这个想法很快就被否决了。在 SSL 应用程序中,SSL 证书必须与用户请求的 URL 匹配,否则会弹出一个警告消息,指出所请求的 URL 与 SSL 证书的域名不匹配。由于弹出式广告和恶意软件日益猖獗,公司中每个训练有素的人都会取消产生弹出警告框的 Web 交互。根据公司架构标准的要求,生产性 Web 应用程序严禁生成弹出警告消息。

另一个建议是:使第二个 SSL 站点驻留在运行第一个站点的服务器的不同端口上。但是,我们觉得这会给用户带来过多的困扰,用户很难同时记住站点 URL 和端口号。如果用户只输入 URL 而没有输入端口号,他们就会被重定向到 HR 应用程序。这会导致很多问题。

解决方案:IP 别名

最终敲定的解决方案是 IP 别名(IP aliasing)。在寻找这个解决方案时,最需要技巧的部分就是确定正确的术语。最初引入这个概念时,我们听到了虚拟接口(virtual interface)虚拟 IP(virtual IP) 等术语。我们艰难地寻找着关于这些概念的信息;但我们最终意识到,我们正在寻找的东西是通常被称为 IP 别名功能的概念,这帮助我们找到了关于该主题的更多文献。IP 别名有时候也称为网络接口别名(network interface aliasing)逻辑接口(logical interface)

Linux 系统上的 IP 别名

混杂模式:一个警告
配置了多个 IP 地址时,某些以太网卡会进入所谓的混杂模式(promiscuous mode)。在混杂模式下,网卡将捕捉本地网络上的所有通信流量。这可能导致服务器易受网络上其他主机转发的攻击。大多数嗅探器和网络监视软件会使以太网卡进入混杂模式,以便捕捉所有网络通信包。

IP 别名背后的概念很简单:可以在一个网络接口上配置多个 IP 地址。这样就能够在使用单一接口的同一个服务器上运行多个 Web 服务器。设置 IP 别名也非常容易。只需配置系统上的网络接口,让它监听额外的 IP 地址。在 Linux™ 系统上,可以使用标准的网络配置工具(比如 ifconfigroute 命令)添加 IP 别名,也可以利用图形化网络管理工具。

在一般情况下,会为每块以太网卡配置一个物理单元号。要想在已经配置的以太网卡上添加额外的 IP 别名,应该为一个接口配置同样的物理单元号,但是要用一个逻辑单元号来限定它。例如,如果在物理单元号为 eth0 的以太网卡上已经配置了一个现有的 IP 地址,那么可以通过添加一个逻辑单元号 :1 来创建 IP 别名,如清单 1 所示。可以通过递增逻辑单元号来添加更多的 IP 地址。(注意,需要作为 root 用户登录。)



清单 1. 在现有的网络接口上添加额外的 IP 地址

				
ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0
    

在您正在配置的系统上,Linux 内核必须支持 IP 别名,这样才能使用这种技术。如果内核没有提供这种支持,可能需要重新构建内核。要想了解您的内核是否支持 IP 别名,可检查 /proc/net/alias* 文件是否存在。

配置了新的 IP 地址之后,要为新的接口设置路由,如清单 2 所示。



清单 2. 为新的 IP 地址添加路由

				
route add -host 192.168.0.2 dev eth0:1
    

在创建新的 IP 地址之后,还需要在 /etc/hosts 文件中给这个新地址命名,如清单 3 所示。



清单 3. 为新的 IP 地址命名

				
192.168.0.1 primaryserver
192.168.0.2 secondaryserver
    

Solaris 系统上的 IP 别名

要想在 Solaris™ 上设置 IP 别名,使用的命令稍有不同。网络接口的配置如清单 4 所示。需要作为 root 用户登录。



清单 4. 在 Solaris 上添加虚拟 IP




相关文章:
				
ifconfig eth0:1 plumb
ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0
ifconfig eth0:1 up
    
eG Citrix 监控器
Ethernet的帧格式和结构
华为(Quidway AR18-22-24)路由器配置实例
简单利用路由黑洞解决DDOS流量攻击
我的linux试验题目
如何在HMC上激活网络时间协议NTP
Resin泛解析 - 三级域名最优应用方案
Resin多域名绑定 + 泛解析
resin 负载均衡
linksys wap54g 设置注意事项
acegi RememberMe&退出&匿名登陆
vnd命令~
LINUX网卡绑定
TCP包首部
IP包首部格式
指纹锁也不靠谱 电脑“破解”六大事件!
linux配置网关
使用 SCTP 优化网络
IPv4/IPv6过渡技术和方案分析
用三个源码包libnet、libnids、libpcap轻松搭建Li
Extensible Messaging and Presence Protocol (XM
组建CISCO多层交换网络入门
CISCO多层交换机的初始配置和排错
实施和配置VLAN
理解和配置802.1Q/802.1S和802.1W生成树协议
理解和配置cisco特定的生成树协议特性和STP排错
配置第二层和第三层的特性
理解和配置VLAN间的路由选择
理解和配置多层交换
理解和配置cisco多层交换网络中的服务质量