我想运行 DNS 设置,其中区域在内部 Active Directory DNS 服务器上进行管理。网络边缘有一个运行 BIND 的从属 DNS 服务器(我愿意切换它,我读到 Unbound 可能更好?)。我想要做的是在拆分 DNS 中运行边缘上的 DNS 服务器;对于内部网络,它应该是 AD DNS 的从属,对于互联网,它应该充当主服务器并对区域进行一些更改(即删除指向 RFC1918 IP 的 A 记录)。
我制作了一个图表来说明。IP 地址和名称是虚构的。10/8 是本地的,192.168/16 和 172.16/12 是可公开路由的,仅供参考。EXAMPLE.COM 和 EXAMPLE.ORG 代表两个不同的组织:
LOCAL NETWORK PUBLIC INTERNET
+------------------+
| |
| 10.0.0.1 |
| AD.EXAMPLE.COM |
| |
| EXAMPLE.COM |
| (master) |
| |
+------------------+
|
+--------+ +------------------+------------------+
| CLIENT |-| | |
+--------+ | 10.0.0.2 | 192.168.200.1 |
+--------+ | BIND.EXAMPLE.COM | NS1.EXAMPLE.COM |
| CLIENT |-| | |
+--------+ | EXAMPLE.COM | EXAMPLE.COM |
+--------+ | (slave) | (master) |
| CLIENT |-| (resolver) | |
+--------+ +------------------+------------------+
|
+------------------+
| |
| 172.16.100.1 |
| NS1.EXAMPLE.ORG |
| |
| EXAMPLE.COM |
| (slave) |
| |
+------------------+
一些关键点:
- 我不想手动更新 BIND 服务器上的区域;区域应该从 AD 服务器传输并自动修改/重写。
- 从公共互联网来看,AD.EXAMPLE.COM 未在 SOA 或 NS 记录中提及。就互联网而言,它不是 DNS 服务器。NS1.EXAMPLE.COM 是面向互联网的唯一主服务器。
- 其他面向互联网的服务器可以作为 NS1.EXAMPLE.COM 的从属服务器,因此必须能够从 BIND 进行区域传输(我预计这里不会出现任何问题)。
- BIND 服务器对于互联网而言是仅具有权威性的,但是对于本地网络而言是一个开放的解析器。
- DNSSec(如果适用)在 BIND 服务器上终止。
答案1
一种解决方案是使用 Split-DNS 设置 BIND,一个视图作为从属视图,另一个视图作为主视图,并在 BIND 服务器上运行 cron 作业。cron 作业获取从属区域(来自内部视图),对其进行编辑并将其写入另一个区域文件(用于外部视图)。
然而,这感觉很不寻常,我不认为这是最好的解决方案。