我有一台带有两个网络接口的服务器 (debian),我想在上面托管多个服务和域;但我并不完全清楚应该如何设置 hosts 文件。示例:
eth0, bound to WAN interface 1.2.3.4:
mail.example.com
www.example.com
eth0:1, bound to WAN interface 1.2.3.5:
www.other-domain.com
eth1, bound to LAN 192.168.1.123:
some-clever-hostname
我的 hosts 文件应该是什么样的?(包括 localhost、localhost.localdomain 等)我应该对其中一些条目使用 DNS 吗?哪些条目?
谢谢!
编辑:如果我无法使用 DNS 服务器,例如在测试环境中,该怎么办?
答案1
投入和localhost
/etc/hostname
127.0.0.1 localhost.localdomain localhost
就/etc/hosts
可以了。映射可以在 DNS 中设置,您可以明确设置其余内容(apache 将在虚拟主机内配置 ServerName,等等)。
答案2
Linux(或 Windows,或任何其他使用 TCP/IP 的机器)上的多宿主系统与多域系统是两个截然不同的东西。
多域系统:
服务器本身只需要一个主机名,如果不是 Web 服务器名称,效果会更好。无论您是否位于 NAT 路由器后面,它都需要指向标识服务器的公共 IP 地址,而不是私有 IP 地址。如果有多个 IP 地址,它需要指向服务器的主 IP 地址。然后发布给定的主机名以在 DNS 中解析。较大的公司可能有一个编号系统。server001、server002、server003 等。
12.34.56.78 server001.mydomain.com server001
127.0.0.1 localhost.localdomain.local localhost
将 .local 添加到 localhost.localdomain 不是必需的,但这是设置多宿主系统的先决条件。我倾向于出于习惯添加它。如果设置正确,任何其他域都将通过 Web 服务器处理。除了 Web 服务器之外,只要 DNS IP 地址指向服务器(电子邮件等),就足够了。如果您位于 NAT 路由器后面,则可以使用 .local 设置内部主机名。大多数情况下不需要这样做,但可能会解决更困难的系统上的一些问题。
12.34.56.78 server001.mydomain.com server001
10.0.0.78 server001.mydomain.local server001
127.0.0.1 localhost.localdomain.local localhost
多宿主系统:
这是指您物理上拥有多个连接到不同网络的网卡的情况。最常见的情况是,一个接口上有一个公共网络,另一个接口上有一个安全的私有网络。例如,您可能在公共接口上有 Web 服务,在私有接口上的单独服务器上有一个安全的数据库。这可以在不设置多宿主系统的情况下工作,但如果负载过重,则会清除大量 SYN TIMEOUT 连接。假设我们在 12.34.56.50:10.0.0.50 上有一个 Web 服务器 (server001),在 10.0.0.51 上有一个内部数据库服务器 (server002),这两个服务器都需要使用 .local 指令在 /etc/hosts 中映射到另一个服务器
/etc/hosts 服务器
12.34.56.50 server001.mydomain.com server001
127.0.0.1 localhost.localdomain.local localhost
10.0.0.50 server.001.mydomain.local server001
10.0.0.51 server002.mydomain.local server002
/etc/hosts 服务器
10.0.0.1 server002.mydomain.local server002
127.0.0.1 localhost.localdomain.local localhost
10.0.0.50 server.001.mydomain.local server001