假设你有一个Web服务器和数据库服务器,Web服务器可以公开访问,而数据库只能被Web服务器使用,他们的DNS是
web.example.com web-internal.example.com db-internal.example.com
所以显然,数据库应该只使用内部DNS作为主机名,那么Web服务器呢? 为了保持一致性,我是否也应该使用内部DNS作为主机名?
一般来说,主机名与服务器上运行的服务完全无关。 只要实际的DNSlogging用户和应用程序将使用(公共和内部)都是正确的,并指向提供该特定服务的服务器。
更多关于这个答案的命名约定。
唯一出现的例外是传出的SMTP服务器,因为除非明确地configuration,否则这些服务器将通过它们的主机名来识别它们自己,并且该主机名应该是可parsing的并且与PTRlogging相同。
公共Web服务器应该使用公共DNS。 如果可能的话,你需要在DMZ中的Web服务器。 根据networking地址的完成方式,您可能希望外部名称指向内部IP地址的内部IP地址。 公共DNS应具有从Internet访问服务器所需的IP地址。 如果您使用NAT或代理,则这可能不是Web服务器的地址。
除非您希望可以从Internet访问数据库服务器,否则应该在内部networking上并使用内部DNS。 您希望通过Internet访问服务器的情况相对较less。 根据内容,它们可能是保护数据库免受因特网访问的义务。
/etc/hostname的值可以是任何你想要的,但应该是一个内部名字。 有自己名字的服务通常与他们运行的主机的名称不同。 将服务名称与主机名称分开便于移动或缩放服务。
如果您将地址添加到/etc/hosts使用内部DNS地址。 这个文件中的任何东西应该和主机从DNS获得的值相同。 除非您的内部DNS不可靠,否则不需要在其中包含地址。 在我的情况下,我使用dnsmasq作为我的内部DNS,它是从hosts文件configuration的。 这使得拥有one true source的IP地址one true source变得非常简单。
如果确实将地址放在hosts文件中,请尝试自动执行更新,以便不必手动编辑每个服务器文件。 手动编辑往往容易出错,而且你希望尽可能less做。