34.3.虚拟主机 ============= FreeBSD 的一个常见用途是虚拟站点托管,其中一台服务器在网络上显示为多台服务器。这是通过将多个网络地址分配给单个接口来实现的。 给定的网络接口有一个“真实”地址,并且可以有任意数量的“别名”地址。这些别名通常是通过在 **/etc/rc.conf** 中放置别名条目来添加的,如本例所示: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" 别名条目必须从 ``alias0`` 开始,使用连续的数字,例如 ``alias0``\ 、\ ``alias1`` 等。配置过程将在第一个缺失的数字处停止。 别名网络掩码的计算很重要。对于给定的接口,必须有一个地址正确地表示网络的掩码。该网络中的任何其他地址都必须有一个全为 ``1`` 的网络掩码,表示为 ``255.255.255.255`` 或 ``0xffffffff``\ 。 例如,考虑 ``fxp0`` 接口连接到两个网络的情况:网络掩码为 ``255.255.255.0`` 的 ``10.1.1.0`` 和网络掩码为 ``255.255.255.240`` 的 ``202.0.75.16``\ 。系统将配置在 ``10.1.1.1`` 至 ``10.1.1.5`` 和 ``202.0.7.5.17`` 至 ``202.0.7.5.20`` 范围内。只有给定范围中的第一个网络地址才应该具有真正的网络掩码。所有其余部分(\ ``10.1.1.2`` 至 ``10.1.1.5`` 和 ``202.0.7.5.18`` 至 ``202.0.7.5.20`` )必须配置 ``255.255.255.255`` 的网络掩码。 以下 **/etc/rc.conf** 条目为该场景配置了正确的适配器: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" # sysrc ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" # sysrc ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" # sysrc ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255" 一种更简单的表达方式是使用 IP 地址范围的空格分隔列表。第一个地址将获得指定的子网掩码,其他地址将使用 ``255.255.255.255``\ 作为子网掩码。 .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc ifconfig_fxp0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28"