我想在 VMWare 中设置多个本地服务器。例如,一台Web服务器、一台文件服务器、一台openvpn服务器等。
我想创建一个在本地工作的域(例如示例.localservers),它指向他们都可以访问的 Web 服务器。但是,我还想与其他服务器共享该域(例如文件.example.localservers、vpn.example.localservers)这样一切都是分开的,并且它们都位于不同的本地 IP 上。
我该如何处理这个问题?
答案1
快速、10,000 英尺的 DNS 服务器工作原理视图(至少包含您的问题):
DNS 服务器是普通主机上的普通守护进程。它在 TCP 和 UDP 端口 53 上侦听查询。出于我们的目的,唯一的查询是的 IP 地址是什么
foo.example.com
?(或任何主机名)。DNS 对该查询给出了一些可能的答案:
- 没有这样的主机名。
- 我没有任何线索。 (这是一个错误情况。)
- IP 地址是 10.11.12.13(或其他)。
- 询问位于(某个主机名)的 DNS 服务器/名称服务器。
上面的第四个答案是 DNS 委派的工作原理。有很多根服务器。这些告诉您向名称服务器询问
com
.然后这些服务器告诉你向名称服务器询问example.com
等等。DNS 服务器有两个知识来源:本地配置和与其他 DNS 服务器通信(注意:为了提高效率,从其他服务器获得的知识被缓存)。本地配置包括根名称服务器列表(或至少其中一些;您可以向其中任何一个索要完整列表)、该服务器处理的区域列表以及这些区域的主机→IP 映射。
区域只是 DNS 中的一个控制区域。通常,一个或多个点分隔的部分。在 中
foo.example.com
,有根区域、区域com
和example.com
区域。如果有a.foo.example.com
,有时它会成为该example.com
区域的一部分,有时会有一个附加foo.example.com
区域 - 这是管理员的配置决定example.com
。DNS 服务器处理两种不同类型的查询:递归查询和非递归查询。递归查询主要来自随机计算机(客户端)。非递归查询主要来自其他DNS服务器。递归查询要求 DNS 服务器完全解析名称,并自行处理“询问其他服务器”。非递归查询只返回询问的位置。
如果您有 3 个主机,不了解 DNS,并且不想学习它,stevieb 建议使用主机文件就可以了。每次添加主机时,都必须将其添加到全部主机,但如果只有几个主机,那就没什么大不了的。
OTOH,如果您想设置 DNS,您将不得不花一些时间阅读它 - 我个人从早期版本中学到了很多DNS 和绑定但已经有一段时间了,现在可能有更好的来源。简而言之,您将配置一个本地缓存名称服务器,使其具有权威性example.localservers
,然后为其提供所有主机→IP 映射。 (还有IP→主机映射,可能还有其他东西)。
最后,如果您使用的是注册的、全球认可的域名(您在 Namecheap 等处获取的域名),您可能会发现将名称→IP 映射添加到其 DNS 服务会更容易,您可以使用他们网站上的控制面板。
答案2
如果您没有运行 DNS 服务器,请将条目添加到/etc/hosts
所有相关计算机上的文件中:
echo "
10.0.1.1 files.example.local
10.0.0.4 vpn.example.local
10.0.0.4 www.example.local
" | sudo tee --append /etc/hosts