假设你有一个 Web 服务器和数据库服务器,Web 服务器是公开可访问的,而数据库仅由 Web 服务器使用,它们的 DNS 是
web.example.com
web-internal.example.com
db-internal.example.com
因此,显然数据库应该只使用内部 DNS 作为主机名,那么 Web 服务器呢?为了保持一致性,我是否也应该使用内部 DNS 作为主机名?
答案1
一般而言,主机名与服务器上运行的服务完全无关。只要用户和应用程序(包括公共和内部)使用的实际 DNS 记录正确且指向提供该特定服务的服务器即可。
有关命名约定的更多信息,请参阅这个答案。
唯一想到的例外是传出 SMTP 服务器,因为除非明确配置,否则它们将通过其主机名来标识自己,并且该主机名应该是可解析的并且与 PTR 记录相同。
答案2
公共 Web 服务器应使用公共 DNS。如果可能,您希望 Web 服务器位于 DMZ 中。根据您的网络寻址方式,您可能希望外部名称指向内部 IP 地址上的内部 IP 地址。公共 DNS 应具有从 Internet 访问服务器所需的 IP 地址。如果您使用 NAT 或代理,这可能不是 Web 服务器的地址。
除非您希望数据库服务器可从 Internet 访问,否则它应该位于内部网络上并使用内部 DNS。您希望服务器可从 Internet 访问的情况相对较少。根据内容,他们可能有义务保护数据库以防止从 Internet 访问。
的值/etc/hostname
可以是任何你想要的,但应该是内部名称。服务通常有自己的名称,与运行它们的主机的名称不同。将服务名称与主机名分开有助于移动或扩展服务。
如果您添加地址以/etc/hosts
使用内部 DNS 地址。此文件中的任何内容都应与主机从 DNS 获取的值相同。除非您的内部 DNS 不可靠,否则没有必要在此处包含地址。在我的情况下,我将其用作dnsmasq
内部 DNS,它是从hosts
文件中配置的。这使得获取one true source
IP 地址变得非常容易。
如果您确实将地址放入 hosts 文件中,请尝试自动更新,这样您就不必手动编辑每个服务器文件。手动编辑往往容易出错,因此您希望尽可能少地进行手动编辑。