我有一台 FreeBSD 机器,有两个网卡,设置如下:
em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
em1 ---> IP set statically (10.0.0.2). "lab" domain
出于所有意图和目的,我的主域运行良好。我可以访问互联网并对网络上的任何主机执行 ping 操作。路由也可以工作,我可以通过 IP 从 FreeBSD 机器 ping 任一域中的任何主机,但是我只能解析家庭网络上的名称。
我创建了一个/etc/resolvconf.conf
文件,将搜索域和名称服务器添加到该resolv.conf
文件中,如下所示:
search_domains="lab"
name_servers="10.0.0.10"
然后我使用以下命令更新 resolv.conf:
$ sudo resolvconf -u
我现在可以解析lab
网络上的名称,但不能再解析home
网络上的名称。手动编辑 resolv.conf 文件并反转域和名称服务器的顺序会导致解析,home
但不会lab
- 完全相反。
我如何知道resolv.conf
对特定域(静态设置的 IP)使用一台 DNS 服务器并允许它通过 DHCP 获取另一个 IP 的 DNS 信息?
仅供参考....
/etc/rc.conf:
hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
/etc/resolv.conf
# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1
域 10.0.0.0上的 DNS“服务器”lab
只不过是一个提供 DHCP 租用的廉价消费者 Netgear 路由器。我仅静态设置此设置,因为它是用于启动映像的 TFTP 服务器,并且我特意将其设置为 10.0.0.2,以便在尝试在某些 Cisco 设备上刷新固件更新时方便使用。
答案1
您使用的工具完全错误。
这项工作不是在 DNS 客户端库内完成的。 DNS 客户端库不够复杂,无法根据所查找的名称来决定将查询路由到不同的内容 DNS 服务器集。 DNS 客户端库将查询解析的繁重工作(包括此类工作)委托给解析代理 DNS 服务器。 他们是什么实施水平分割 DNS 服务,这就是您想要的机制。
就您而言,如果您直接使用 FreeBSD(或其衍生产品,例如 DragonFly BSD 和 TrueOS),则这将是unbound
本地运行的实例。
你做三件事:
- 你跑
unbound
。使其能够以通常的方式自动local_unbound_enable=YES
启动。/etc/rc.conf
- 您配置
unbound
执行水平分割 DNS 服务。 你这样做存根区域inunbound.conf
代表您lab.example.com.
和您的home.example.com.
域,表示10.0.0.10
和192.168.1.1
作为这些域名及其下面所有内容的内容 DNS 服务器。 - 您告诉 DNS 客户端库查询您的服务器,并且仅查询您的服务器。您有一行
nameserver
(/etc/resolv.conf
来自 中的一个name_servers
键值对/etc/resolvconf.conf
)指示您的 DNS 客户端库与 进行通信unbound
。
笔记:
- 您不使用
home.
和lab.
。 这些都是真正的顶级域名,你不拥有的。home.
目前已向 ICANN 提交了 10 份申请。使用域名你拥有的,而不是那些你不知道的。将其替换为example.com.
上面的内容。不,您不拥有local.
、localhost.
、dev.
或corp.
许多其他内容。例如,如果您拥有
radiantnexus.com.
,您将使用home.allan.radiantnexus.com.
和lab.allan.radiantnexus.com.
。 - 适当调整您的搜索域,如果您希望在本地命名空间中找到非完全限定域名。
search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"
继续前面的例子。 - 不要认为您可以使用其他人的代理 DNS 服务器进行解析。 添加由现成路由器、ISP 或 Google 提供的解析代理 DNS 服务器是一个很大的错误。您的 DNS 客户端库直接与之通信的所有服务器必须提供相同的观点DNS 名称空间的一部分,彼此一致。谷歌公共 DNS什么都不知道对于初学者来说,关于您的内部命名空间。如果您想要后备 DNS 服务器,您需要另一个当地人DNS 服务器位于某个位置,配置了您的相同的水平分割设置。
- 您还需要所有非公共 IPv6 和 IPv4 地址到名称查找名称的存根区域。 实际上有很多这样的东西,它们的查找流量确实不应该泄漏到您/您的组织的边界之外。是的,他们确实应该如果您希望地址到名称查找适用于组合 DHCP/DNS 服务器分发的租约,则应为存根区域,而不是本地区域。
奖励内容
我在 FreeBSD 上使用 djbdns(由……嗯……我修补)。
- nosh 工具集的配置导入子系统为我设置了一个
[email protected]
运行本地解析代理 DNS 服务器的服务,以及一个[email protected]
运行[email protected]
与之通信的本地根内容 DNS 服务器的服务[email protected]
。enable
我使用以下指令启用这些服务/etc/system-control/presets/20-djbwares.preset
:使能够[电子邮件受保护] 启用 cyclog@axfrdns 使能够[电子邮件受保护] 启用 cyclog@tinydns 使能够[电子邮件受保护] 启用 cyclog@dnscache
- 本地根内容 DNS 服务器在其数据库中混合了公共
.
数据(大约每年使用 )从 ICANN 提取axfr-get
,以及我拥有的域名下的内部名称数据。% ls -dl root/{数据*,p*,根*,Makefile} -rw-r--r-- 1 根轮 968 9月16日 09:43 root/Makefile -rw-r--r-- 1 根轮 571334 11 月 28 日 00:33 根/数据 -rw-r--r-- 1 根轮 1088169 11 月 28 日 00:33 root/data.cdb -rw-r--r-- 1 根轮 3243 9 月 16 日 09:55 root/private -rw-r--r-- 1 根轮 6962 11 月 28 日 00:32 root/public -rw-r--r-- 1根轮 560853 2017年3月11日 根/根 -rw-r--r-- 1根轮 3668733 2017年3月11日 root/root.zone %
该
root/private
文件是我将拥有私人数据的地方,例如:=machine97.jdebp.eu:192.168.100.97:::lo
- 我为各个水平分割修剪点克隆该
root/servers/@
文件,以便知道覆盖可能发送的那些点的任何公共内容 DNS 服务器地址信息:[email protected]
dnscache
% ls -dli root/servers/{@,CEFip6.arpa,machine97.jdebp.eu} 352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日 root/servers/@ 352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日 root/servers/CEFip6.arpa 352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日 root/servers/machine97.jdebp.eu %
(实际上,nosh 工具集为我设置了私有 IP 地址,作为标准。有一整章介绍所提供的内容以及使用它的各种方法,在小吃指南.)
这是一个私有根设置。它是其中之一其他使用两个内容 DNS 服务器提供水平分割 DNS 服务的方法(有多种)。 (在上述unbound
设置中,您也有一个多内容 DNS 服务器安排;您的本地内容 DNS 服务器是 LAN 上其他计算机上的服务器,10.0.0.10
而192.168.1.1
不是127.53.0.1
计算机本身上的专用 DNS 服务器。)
私有根还为我带来了对不存在的东西的 Duff DNS 查询流量的好处,从 Google Chrome 的探测到试图反向映射 中的 IPv6 地址fec0::/12
和 中的 IPv4 地址的东西192.168.0.0/16
,而不是逃逸到整个互联网。
您也可以使用它进行私人root unbound
。但它比存根区域更复杂。我将其作为读者的练习,它超出了本答案的范围。
进一步阅读
- 乔纳森·德博因·波拉德 (2004)。什么是 DNS 查询解析。经常给出的答案。
- 乔纳森·德博因·波拉德 (2002)。提供“水平分割”DNS服务。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2003)。您的后备代理 DNS 服务器必须提供与主要 DNS 命名空间相同的 DNS 命名空间视图。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2012)。使用您拥有的域名,不要滥用不属于您的域名。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2017)。什么是 DNS 名称资格。经常给出的答案。
- 乔纳森·德博因·波拉德 (2000)。“内容”和“代理”DNS 服务器。经常给出的答案。
- 乔纳森·德博因·波拉德 (2004)。如果您使用非公共 IP 地址范围,请使用水平分割 DNS 服务。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2003)。您忘记用数据填充“内部”DNS 数据库。。经常给出的答案。
- 迈克·韦斯特 (2012-02-18)。 Chrome 在启动时会连接到三个随机域。。 mikewest.org。
- 乔纳森·德博因·波拉德 (2016)。 “
dnscache
、、tinydns
和axfrdns
服务”。 小吃指南。软件。 - 乔纳森·德博因·波拉德 (2016)。Daniel J. Bernstein 的软件合一。软件。
- ”域名系统”。FreeBSD 手册。免费的BSD。