我刚开始一份新工作,我们有一个内部网,有自己的顶级域名,例如 .abc。因此,如果我想登录我们的“电子福利网站”,我只需打开网络浏览器并转到工作链接.abc并从那里登录。
作为对 DNS 和系统 IT 了解甚少的开发人员,我很好奇它的工作原理,以及我需要做什么才能在家里完成类似的事情。
我叫 Adam,我想拥有一个家庭内部网,其中所有域名可能都以管理员后缀。这样,我就可以开发内部 Java Web 应用程序来映射到诸如http://mydomain.adm?foo=bar
等页面。我非常确定这会将我带入 DNS 服务器和配置的新世界,但这并不会吓到我。
你们这些“系统专家”能否为可怜的 Java 开发人员提供高水平的、外行人能理解的介绍,让我知道如何实现这一点?目前我甚至不知道从哪里开始。如果你能给我一份像样的待办事项清单,我可以从那里研究细节。提前谢谢!
答案1
正如 Dan 所说,您可以使用系统/etc/hosts
文件来实现您想要的功能。这并非以任何有意义的方式“设置 TLD”,因为它实际上与 DNS 无关。/etc/hosts
通常由您的系统引用前它会检查 DNS。该hosts
文件只是将名称映射到地址,它对域一无所知。因此,如果您将其放入/etc/hosts
:
127.0.0.1 localhost apple.com
然后执行以下操作:
curl http://apple.com/
curl
将尝试连接到127.0.0.1
。但如果您这样做:
curl http://www.apple.com/
您的系统将(...可能...)引用 DNS,因为在文件www.apple.com
中未找到hosts
。由于大多数软件使用系统名称解析功能(由 控制/etc/nsswitch.conf
),因此这几乎适用于所有软件。这很简单,但也有一些缺点:
- 如果您有多台机器,则需要使
hosts
所有机器上的文件保持最新。 - 除了使用文件进行名称到地址的映射之外,您无法提供任何其他内容
hosts
。因此,没有MX
或SRV
记录,没有CNAME
记录,等等。
下一个最简单的解决方案是使用域名系统,这是一个非常实用的工具,可提供 DNS、DHCP 和 TFTP 服务——换句话说,它几乎提供了小型网络所需的一切。使用dnsmasq
,您可以:
- 创建您自己的顶级域名(TLD)供您在网络上使用,
- 通过 DHCP 自动向客户端提供本地名称服务器的 IP 地址,
- 覆盖来自公共 DNS 服务器的答案(例如,您可以用您选择的内部服务器替换“www.google.com”)。
dnsmasq
有很好的文档记录,但如果您在看完文档后有具体问题,请回来,我会看看我能做些什么。
这是一个非常简短的例子...如果你运行它:
dnsmasq -C /dev/null --local=/localnet/ -s localnet -E
是-C /dev/null
为了确保我们从“空”配置开始,因为我不知道您的本地配置中可能有什么/etc/dnsmasq.conf
。此命令行是否dnsmasq
会使/etc/hosts
文件中的任何条目通过“localnet”域中的 DNS 可用。例如,如果我的文件中有以下内容hosts
:
10.10.10.10 fluff
10.10.10.11 nutella
dnsmasq
我可以在配置为使用我的实例进行 DNS 的系统上执行此操作:
$ host fluff.localnet
fluff.localnet has address 10.10.10.10
我也可以使用不合格的名称:
$ host nutella
nutella has address 10.10.10.11
你可以使用dnsmasq
,这对于家庭网络来说可能已经足够了。如果你需要为更多的人提供服务——并提供冗余的 DNS 服务、内部/外部视图、ACL 等等——那么你会看到类似绑定,但这对于您所做的事情来说不是必要的(或者对于我所做的事情来说,就此而言 - 我dnsmasq
在家里使用)。