gpt4 book ai didi

dns - 我可以将一个域别名为另一个域吗?

转载 作者:行者123 更新时间:2023-12-02 09:55:35 25 4
gpt4 key购买 nike

我正在合并两个 DNS 域。它们是内部的,因此我不必担心是否适合主 DNS 系统。它们大部分是相同的:即它们包含大部分相同的主机。

我想要做的是为其中一个域创建一个别名。

RFC 规定您不能拥有与 cname(或者可能是 A 记录)相同的 NS 记录或 MX 记录,因此我创建了一个仅包含 cname 的区域,并且它可以工作:

区域 1 = example.com(普通域)
尝试1:
zone 2 = example.internal(具有单个别名的域)
不幸的是,Windows(它必须是Windows,不是吗)会不断添加 ns 记录。咕噜咕噜。
尝试2:
区域 2 = 内部(域)
包含正常的 Gumpf 和一个 CNAME

sample CNAME example.com.

但两者给出了相同的结果:

nslookup sample.internal
Server: ns.example.com
Address: 172.16.xx.xx

Name: example.com
Addresses: 172.16.xx.xx
172.16.xx.xx
Aliases: sample.internal

但是此查找 fred.example.com 存在的位置不起作用:

nslookup fred.sample.internal
Server: ns.example.com
Address: 172.16.xx.xx

*** ns.example.com can't find fred.sample.internal: Non-existent domain

是否可以在别名域中进行递归查找?

最佳答案

是的,你可以。使用 DNS 实现此目的有两种主要方法(我将使用“BIND”配置示例):

  1. 使用 DNAME(委托(delegate)名称)记录
  2. 在 BIND 配置中重载区域文件

第一个选项留下了它的起源和设置方式的痕迹,而第二个选项最容易实现,但需要仔细规划并对区域使用施加限制。

DNAME 方法

假设您希望“bad.com”中的每个主机都转到“good.com”。首先在“named.conf”中设置区域:

// Malicious external domain, redirected to "good.com"
zone "bad.com" in {
type master;
file "security/good.com";
check-names ignore;
};

“good.com”的区域文件(请记住,这是我们重定向到的区域) 看起来像这样:

; Name:         security/good.com
; Date: 2/19/2016
; Purpose: General-use redirection to "good.com" using DNAME

$TTL 3600
@ IN SOA dns.good.com. admin.dns.com. (
2016021900
7200
600
2592000
3600 )

IN NS dns1.good.com.
IN NS dns2.good.com.

IN DNAME good.com.

当您重新加载名称服务器时,“bad.com”区域中的任何 DNS 查询现在都将委托(delegate)给“good.com”:

> nslookup www.bad.com
Server: dns1.good.com
Address: 10.9.8.7#53

bad.com dname = good.com.
www.bad.com canonical name = www.good.com.
Name: www.good.com
Address: 10.1.2.3

我故意使用区域文件的默认行为,使用包含 SOA、NS 和 DNAME 记录的单个“@”,这使得可以轻松地将“security/good.com”区域文件重新用于任何其他区域您可能想要重定向的此类区域:

// Malicious external domain, redirected to "good.com"
zone "bad.com" in {
type master;
file "security/good.com";
check-names ignore;
};

// Another malicious external domain, redirected to "good.com"
zone "worse.com" in {
type master;
file "security/good.com";
check-names ignore;
};

// Yet another malicious external domain, redirected to "good.com"
zone "evil.com" in {
type master;
file "security/good.com";
check-names ignore;
};

你明白了...

请注意 DNAME 委托(delegate)在查询结果中的显示方式。有些人可能不喜欢这个,可以使用第二种方法来克服。

区域文件重载方法

实际上,我们已经在上面介绍过这一点。我们所做的只是重新使用具有默认记录的区域文件,并且从不显式引用区域名称。在我们的示例中,我们使用“目录”选项,但将所有区域文件放在名为“zone”的文件夹中,并为文件名指定与区域名称相同的名称​​(我从来不喜欢“db.xxxx” ):

$TTL 14400
@ IN SOA dns.good.com. admin.good.com. (
2016021900 ; Serial No.
1800 ; Refresh
600 ; Retry
604800 ; Expire
3600 ) ; Minimum

IN NS dns1
IN NS dns2
IN MX 10 mail
IN A 10.11.12.13

; A records

dns1 IN A 10.9.8.7
dns2 IN A 10.9.8.6
mail IN A 10.9.8.5
files IN A 10.9.8.4

; CNAME records

www IN CNAME @
ftp IN CNAME files

现在是“named.conf”文件的元素:

zone "good.com" in {
type master;
file "zones/good.com";
check-names ignore;
notify yes;
};

现在假设您希望域名“goodness.com”本质上是“good.com”。只需在“named.conf”中重新使用“good.com”文件,但指定重载区域名称即可:

zone "goodness.com" in {
type master;
file "zones/good.com";
check-names ignore;
notify yes;
};

现在,当您查询“goodness.com”中的记录时,它们将成为“good.com”区域中的记录:

> nslookup files.good.com
Server: dns1.good.com
Address: 10.9.8.7#53

Name: files.good.com
Address: 10.9.8.4

> nslookup files.goodness.com
Server: dns1.good.com
Address: 10.9.8.7#53

Name: files.goodness.com
Address: 10.9.8.4

如上所述,您绝不能在区域文件中显式引用区域名称,而应使用“@”默认引用,并且切勿使用完全限定域名作为引用区域内 A 记录的 CNAME 记录的目标。

这种方法的缺点是必须非常小心地使用“$ORIGIN”指令,而使用“$GENERATE”指令则变得非常困难。此外,它占用权威服务器内存的两倍,因为就服务器而言,它们是单独的区域。

无论如何,这应该演示使用 DNS 将一个区域的记录重定向到另一个区域的两种方法。

关于dns - 我可以将一个域别名为另一个域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com