我有一台带有两个 NIC 的 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
将一个 DNS 服务器用于特定域(静态设置的 IP)并允许它通过 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 设备上刷新固件更新时使用。
您为这项工作使用了完全错误的工具。
此工作不在 DNS 客户端库中完成。DNS 客户端库不够复杂,无法根据正在查找的名称来决定将查询路由到不同的内容 DNS 服务器集。DNS 客户端库将查询解析的繁重工作(包括这类东西)委托给解析代理 DNS 服务器。 它们是实现水平分割 DNS 服务的,这是您在这里想要的机制。
在您的情况下,如果您正在使用开箱即用的 FreeBSD(或其衍生产品,如 DragonFly BSD 和 TrueOS),这将是一个
unbound
本地运行的实例。你做三件事:
unbound
。local_unbound_enable=YES
使其以/etc/rc.conf
通常的方式自动启动。unbound
为执行水平分割 DNS 服务。 您可以使用您和您的域的存根区域来执行此操作,将这些域名及其下面的所有内容 表示为内容 DNS 服务器。unbound.conf
lab.example.com.
home.example.com.
10.0.0.10
192.168.1.1
nameserver
一行 in/etc/resolv.conf
(来自 中的一个name_servers
键值对/etc/resolvconf.conf
)指示您的 DNS 客户端库与unbound
.笔记:
home.
andlab.
。 这些是真正的顶级域名,您并不拥有.home.
目前是 ICANN 的 10 份申请的主题。使用您拥有的域名,而不是您不拥有的域名。用上面的那个代替example.com.
。不,您不拥有local.
,localhost.
,或许多其他人。dev.
corp.
例如,如果您拥有
radiantnexus.com.
,您将使用home.allan.radiantnexus.com.
andlab.allan.radiantnexus.com.
。search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"
继续前面的例子。奖励内容
我在 FreeBSD 上使用 djbdns(由……好吧……我修补)。
[email protected]
运行本地解析代理 DNS 服务器的服务,以及一个运行[email protected]
与之对话[email protected]
的本地根内容 DNS 服务器的服务[email protected]
。enable
我使用以下指令启用这些服务/etc/system-control/presets/20-djbwares.preset
:.
数据,大约每年从 ICANN 提取axfr-get
,以及我拥有的域名下的内部名称数据。该
root/private
文件是我将拥有私人数据的地方,例如:root/servers/@
文件,以便知道覆盖可能恰好发送的那些点的任何公共内容 DNS 服务器地址信息:[email protected]
dnscache
(实际上,nosh 工具集为我设置了私有 IP 地址,作为标准。在nosh 指南中有一整章介绍了提供的内容以及使用它的各种方式。)这是一个私有根设置。这是使用两个内容 DNS 服务器提供水平分割 DNS 服务的其他方式之一(有几种方式)。(在上述
unbound
设置中,您也有多个内容 DNS 服务器安排;您的本地内容 DNS 服务器是LAN 上的其他机器上10.0.0.10
和其他机器上的服务器,而不是机器本身上的私有服务器。)192.168.1.1
127.53.0.1
私有根还给我带来了不存在的东西的 duff DNS 查询流量的好处,从谷歌浏览器的探测到试图反向映射 IPv6 地址
fec0::/12
和 IPv4 地址的东西192.168.0.0/16
,而不是逃逸到整个互联网。您也可以使用私人根
unbound
。不过,它比存根区域更复杂。我把它留给读者作为练习,它超出了这个答案的范围。进一步阅读
dnscache
,tinydns
和axfrdns
服务”。 小吃指南。软件。