6.9. 虚拟主机

FreeBSD 的一个很普通的用途是虚拟主机站点,一个服务器虚拟成很多服务器一样提供网络服务。这通过在一个接口上绑定多个网络地址来实现。

一个特定的网络接口有一个 ``真实'' 的地址,也可能有一些 ``别名'' 地址。这些别名通常用 /etc/rc.conf 中的记录来添加。

一个 fxp0 的别名记录类似于:

ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

记住别名记录必须从 alias0 开始并且按顺序递增(例如 _alias1, _alias2)。配置程序将会停止在第一个缺少的数字的地方。

计算别名的子网掩码是很重要的,幸运的是它很简单。对于一个接口来说,必须有一个描述子网掩码的地址。任何在这个网段下的地址必须有一个全是 1的子网掩码。

例如,假设 fxp0 连接到两个网段,子网掩码是 255.255.255.010.1.1.0 和子网掩码是 255.255.255.240202.0.75.16。我们将要系统使用从 10.1.1.110.1.1.5 和从 202.0.75.17202.0.75.20 的地址。

下面的记录会正确的设置这个适配器:

 ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
 ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
 ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
 ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
 ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
 ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
 ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
 ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
 ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"