Edgerouter DNSmasq 将更新发送到 BIND

Edgerouter DNSmasq 将更新发送到 BIND

TL;DR:如何配置运行 DNSmasq 的 Ubiquiti EdgeRouter或者DHCPd 和 NSupdate 将其 DHCP 租约发送到中央 BIND 服务器?


我有一个由几个组成的系统Ubiquiti EdgeRouter X全部充当本地子网的 DHCP 和 DNS 服务器。ERX 之间的子网间路由由核心路由器处理。我想要做的是配置 ERX 网关,使其在更新 DHCP 租约时更新运行 BIND 的主 DNS 服务器。

参考下图:每个 ERX 都为其本地子网提供 DHCP 和 DNS 服务,客户端只能解析其本地 ERX 后面的其他客户端的 DNS 名称。但是,如果每个 ERX 都在dns-master发生 DHCP 租约更新时将其记录发送到,并且每个客户端都用作dns-master其 DNS 服务器,那么任何客户端都可以解析任何其他客户端的名称。这就是我想要实现的目标。

        路由器核心
       / | \
      /DNS主服务器
     / \
 ERX-1 ERX-2
   | |
   |-- 客户端-1a |-- 客户端-2a
   |-- 客户端-1b |-- 客户端-2b

我目前所做的:

  • BIND 是配置为接受更新通过nsupdate我确认它可以在我的本地工作站上运行
  • dnsutils在 ERX 上安装了激活 Debian 仓库
  • 我已经探索dhcp-scriptDnsmasq 配置文件(更好地描述该选项在手册页中),但我无法执行我的脚本
    • EdgeRouter 上的 Dnsmasq 似乎同时使用了/etc/dnsmasq.conf/etc/dnsmasq.d/dnsmasq-dhcp-config.conf,但将dhcp-script选项添加到前者没有效果,而将其添加到后者则产生了配置语法错误
    • 我尝试过直接修改 Dnsmasq 配置文件和在 ERX 配置中设置选项set service dhcp-server global-parameters,但似乎都没有用(但我也不确定我是否做对了)

[编辑]:Edgerouter 还支持使用 Dhcpd 作为 DHCP 服务器,因此我愿意接受一个描述如何在 ER 上配置 DHCPd 的答案;我并不只使用 DNSmasq

答案1

在@Tom 的建议下,我找到了一种无需使用 BIND 服务器即可实现此目的的方法。

解决方案是将每个 ERX 配置为其本地子网的权威 DNS 服务器,并在核心路由器上为每个子域创建服务器委派,然后将所有客户端指向核心路由器。Edgerouter 特定的配置指令如下所示,sub1.local用正确的 DNS 子域和192.168.100.5ERX 的 IP 地址替换:

core-router在(LAN IP )上192.168.100.1

设置服务 dns 转发监听 eth1
设置服务 DNS 转发名称服务器 8.8.8.8
设置服务 DNS 转发名称服务器 8.8.4.4
设置服务 dns 转发选项“server=/.sub1.local/192.168.100.5”

在每个 ERX 上(例如 WAN IP 192.168.100.5):

设置服务 dns 转发监听 eth0
设置服务 dhcp 服务器共享网络名称 [服务器] 子网 [子网] 域名 sub1.local
设置服务 dhcp 服务器共享网络名称 [服务器] 子网 [子网] dns 服务器 192.168.100.1

当客户端向 提交 DNS 查询时router-core,将发生以下三件事之一:

  • 如果router-core可以解决,那么它确实
  • 如果请求与子域匹配,则请求将转发到为子域指定的 ERX
  • 如果请求不匹配,则将其传递给上游 DNS 服务器

相关内容