内部 DNS 配置问题



好吧,我要预先声明,这个问题对于这种媒介来说可能太复杂了(细节量而不是复杂性(。 但我认为这是最好的起点。

我正在尝试设置一个概念验证项目,我的 BIND 配置是我的第一个大障碍。 我想在 3 个物理设备上设置 3 个 DNS 服务器。 这些框都不需要解析公共地址,这只是内部地址。 我已经阅读了如何在(大部分(优秀的DNS和BIND 5th ed书中设置内部根目录。 但我对他们的例子的翻译是行不通的。所有 IP 都是 RFC 1918 不可路由的。

方框 1 对 box1.bogus 域上的地址具有权威性,框 2 对 box2.bogus 域上的地址具有权威性。 框 3 将充当域虚假的内部根和 TLD 服务器。

当前未解决的问题:

  • 我在框 1 和 2 上有一个提示文件,其中包含根区域的 NS 定义的单个 NS 记录。 此外,还有一条 A 记录将 NS 转换为根的 ip。 如果我从框 1 dig .,我会得到一个带有 NS 名称的权限部分,而不是答案附加记录部分。 因此,我无法从框 1 实际解析根服务器的 IP。

  • 如果我将框 1 中的/etc/resolv.conf直接指向根服务器并执行dig box1.bogus,我会得到 ns.box1.bogus 答复记录和附加部分中的翻译。 但是在下一次迭代(何时应该获得 A 记录(时,我得到了dig: couldn't get address for ns.box1.bogus

显然我的配置不正确。 我看不到将它们附加到这篇文章的方法,所以如果人们想一步一步地完成这个,我会将它们剪切并粘贴到这个问题的评论中。 否则,我愿意与"DNS 人员"一起"离线",以找出我缺少"."或太多的地方!

我个人认为网络可以使用另一个不使用 Movie-U 示例的内部根示例。

好的,如果我们要这样做,那么我们应该使用一个具体的例子,嗯? 我在专用 VLAN 上设置了 3 台机器来测试这一点。 作为健全性检查,我将所有相关配置配对,尽可能压缩,并重新部署了其中 2 个名称。 我暂时省略了Scratchy。 结果与上述相同。 以下是配置和初始挖掘输出。


Machine Name: Bogus (I just realized I should change this...)  
Role:         Internal Root and TLD Nameserver  
IP:           10.0.0.1  
BIND:         9.5.0-16.a6.fc8  
/

etc/named.conf

// Controls who can make queries of this DNS server. Currently only the
// local test bed. When there is a standardized IP addr scheme, we can have
// those addr ranges enabled so that even if firewall rules get broken, the
// public internet can't query the internal DNS.
//
acl "authorized" {
        localhost;      // localhost
        10.0.0.0/24;          // Local Test
};
options {
    listen-on port 53 {
        127.0.0.1;
        10.0.0.1;
    };
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    pid-file    "/var/run/named/named.pid";
    allow-query     { any; };
    recursion no;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
//
// The fake root.
//
zone "." {
    type master;
    file "master/root";
    allow-query { authorized; };
};
//
// The TLD for testing
//
zone "bogus" {
    type master;
    file "master/bogus";
    allow-query { authorized; };
    allow-transfer { authorized; };
};
/

var/named/master/root

$TTL    3600
.                   SOA ns.bogustld. hostmaster.internal.bogus. (
                        2008101601  ; serial
                        1H      ; refresh
                        2H      ; retry
                        14D     ; expire
                        5M )        ; minimum
;
; Fake root zone servers defined.
;
.                   NS  ns.bogustld.
ns.bogustld.        A   10.0.0.1
;
; Testing TLD
;
bogus           NS  ns1.bogus.
ns1.bogus.              A   10.0.0.1
/

var/named/master/bogus

$TTL 3600
@           SOA ns1.internal.bogus. hostmaster.internal.bogus. (
                2008102201  ; serial date +seq
                1H      ; refresh
                2H      ; retry
                14D     ; expire
                5M)     ; min TTL
;
            NS  ns1.internal.bogus.
;
; Auth servers
;
ns1.internal.bogus. A   10.0.0.1
;
; Customer delegations each customer 2nd level domain has it's
; own zone file.
;
;Modified to be unique nameservers in the bogus domain
itchy           NS  ns1-itchy.bogus.
ns1-itchy.bogus.    A   10.0.0.2
;
scratchy        NS  ns1-scratchy.bogus.
ns1-scratchy.bogus. A   10.0.0.3

挖掘的输出。

; <<>> DiG 9.5.0-P2 <<>> .
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57175
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;.                              IN      A
;; AUTHORITY SECTION:
.                       300     IN      SOA     ns.bogustld. hostmaster.internal
.bogus. 2008101601 3600 7200 1209600 300
;; Query time: 1 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Tue Oct 21 12:23:59 2008
;; MSG SIZE  rcvd: 88

挖掘+跟踪痒的输出

; <<>> DiG 9.5.0-P2 <<>> +trace itchy.bogus
;; global options:  printcmd
.                       3600    IN      NS      ns.bogustld.
;; Received 57 bytes from 10.0.0.1#53(10.0.0.1) in 1 ms
itchy.bogus.            3600    IN      NS      ns1-itchy.bogus.
;; Received 69 bytes from 10.0.0.1#53(ns.bogustld) in 0 ms
itchy.bogus.            3600    IN      A       10.0.0.2
itchy.bogus.            3600    IN      NS      ns1.itchy.bogus.
;; Received 79 bytes from 10.0.0.2#53(ns1-itchy.bogus) in 0 ms

Machine Name: Itchy   
Role:         SLD Nameserver (supposed to be owner of itchy.bogus) 
IP:           10.0.0.2  
BIND:         9.5.0-16.a6.fc8  
/

etc/named.conf

// Controls who can make queries of this DNS server. Currently only the
// local test bed. When there is a standardized IP addr scheme, we can have
// those addr ranges enabled so that even if firewall rules get broken, the
// public internet can't query the internal DNS.
//
acl "authorized" {
        localhost;      // localhost
        10.0.0.0/24;          // LAN Test
};
options {
    listen-on port 53 {
        127.0.0.1;
        10.0.0.2;
    };
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
    pid-file    "/var/run/named/named.pid";
    allow-query     { any; };
    recursion no;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
    type hint;
    file "master/root.hint";
 };
zone "itchy.bogus" {
    type master;
    file "master/itchy.bogus";
    allow-query { authorized; };
    allow-transfer { authorized; };
};
/

var/named/master/itchy.bogus

$TTL    3600
@       SOA     ns1.itchy.bogus. hostmaster.itchy.bogus. (
                2008102202  ; serial
                1H      ; refresh
                2H      ; retry
                14D     ; expire
                5M )        ; minimum
;
        A   10.0.0.2
        NS      ns1.itchy.bogus.
ns1     A   10.0.0.2
/

var/named/master/root.hint

.                        3600000      NS    ns.bogustld.
ns.bogustld.         3600000       A    10.0.0.1
; End of File
/

etc/resolv.conf

nameserver 10.0.0.2

挖掘的输出。

; <<>> DiG 9.5.0-P2 <<>> .
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31291
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;.                              IN      A
;; AUTHORITY SECTION:
.                       3600000 IN      NS      ns.bogustld.
;; Query time: 0 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Tue Oct 21 17:09:53 2008
;; MSG SIZE  rcvd: 41

挖掘+跟踪的输出 痒痒的

; <<>> DiG 9.5.0-P2 <<>> +trace itchy.bogus
;; global options:  printcmd
.                       3600000 IN      NS      ns.bogustld.
;; Received 41 bytes from 10.0.0.2#53(10.0.0.2) in 0 ms
dig: couldn't get address for 'ns.bogustld': failure

通过使用@,你正在定义itchy.bogus。然后,您不能在区域中用 itchy.bogus 线进一步重新定义它。

试试这个:

@       SOA     ns1.itchy.bogus. hostmaster.itchy.bogus. (
                        2008102201      ; serial
                        1H              ; refresh
                        2H              ; retry
                        14D             ; expire
                        5M )            ; minimum
;
            NS      ns1
            A       10.0.0.2
    ns1     A       10.0.0.2

由于这是itchy.bogus的区域文件,因此应该做正确的事情。

现在我的代表团问题看起来已经解决了,但我仍然在根查找时遇到问题(我认为这很容易。

我认为问题源于这样一个事实,即当我从发痒的机器中dig时,我得到的是权威记录而不是答复记录。 我只是不确定我做了什么(或没有(导致这种情况。

如果您使用互联网的典型提示文件从机器上"挖掘[无参数]",您将获得根名称服务器的答案块和附加部分中的翻译。

如果我从虚假机器(根和 TLD 名称服务器(执行此操作,我会得到

;; QUESTION SECTION:
;.                              IN      NS
;; ANSWER SECTION:
.                       3600    IN      NS      ns.bogustld.
;; ADDITIONAL SECTION:
ns.bogustld.            3600    IN      A       10.0.0.1

如果我从发痒的机器上这样做,我会得到

;; QUESTION SECTION:
;.                              IN      NS
;; AUTHORITY SECTION:
.                       3600000 IN      NS      ns.bogustld.
;; Query time: 0 msec

如果你尝试dig +trace .它会变得更有趣

互联网盒

; <<>> DiG 9.5.0a6 <<>> +trace .
;; global options:  printcmd
.                       3005    IN      NS      C.ROOT-SERVERS.NET.
.                       3005    IN      NS      D.ROOT-SERVERS.NET.
.                       3005    IN      NS      E.ROOT-SERVERS.NET.
.                       3005    IN      NS      F.ROOT-SERVERS.NET.
.                       3005    IN      NS      G.ROOT-SERVERS.NET.
.                       3005    IN      NS      H.ROOT-SERVERS.NET.
.                       3005    IN      NS      I.ROOT-SERVERS.NET.
.                       3005    IN      NS      J.ROOT-SERVERS.NET.
.                       3005    IN      NS      K.ROOT-SERVERS.NET.
.                       3005    IN      NS      L.ROOT-SERVERS.NET.
.                       3005    IN      NS      M.ROOT-SERVERS.NET.
.                       3005    IN      NS      A.ROOT-SERVERS.NET.
.                       3005    IN      NS      B.ROOT-SERVERS.NET.
;; Received 500 bytes from 64.105.172.26#53(64.105.172.26) in 19 ms
.                       86400   IN      SOA     a.root-servers.net. nstld.verisi
gn-grs.com. 2008102201 1800 900 604800 86400
;; Received 92 bytes from 128.63.2.53#53(H.ROOT-SERVERS.NET) in 84 ms

我的内部根盒(假(

; <<>> DiG 9.5.0-P2 <<>> +trace .
;; global options:  printcmd
.                       3600    IN      NS      ns.bogustld.
;; Received 57 bytes from 10.0.0.1#53(10.0.0.1) in 1 ms
.                       3600    IN      NS      ns.bogustld.
;; Received 72 bytes from 10.0.0.1#53(ns.bogustld) in 0 ms

; <<>> DiG 9.5.0-P2 <<>> +trace .
;; global options:  printcmd
.                       3600000 IN      NS      ns.bogustld.
;; Received 41 bytes from 10.0.0.2#53(10.0.0.2) in 0 ms
dig: couldn't get address for 'ns.bogustld': failure

为什么我的面向互联网的机器找到 SOA,但我的内部机器却找不到?

假设您已经检查了所有明显的事情 - 例如确保主绑定配置文件是您认为的那样。首先检查您认为命名正在使用的文件是否正确 - 有时很容易编辑错误目录中的文件并想知道为什么没有注意到更改。

你也用过命名检查和命名检查区吗

调试绑定已经够难的了,但是如果不看到配置文件,几乎是不可能的,所以请将它们添加到原始帖子中。

(我已将此作为评论添加到问题中 - 我已作为答案发布,因为 OP 在这里是新的(。

3 台

服务器中的每一个都需要具有相同的提示文件。它应该有一个 "." 的 NS 记录,其中包含根服务器的名称和该名称的 A 记录。

根服务器应设置"."区域。"." 区域需要具有具有自身 ns 记录的"虚假"。然后,它应该有 box1.bogus 到 box1 和 box2.bogus 到 box2 的 A 记录。

请注意,您不应将 box1 和 box2 同时用作主机名和二级域的名称。假设域是zone1.bogus和zone2.bogus。

所以 box1 和 box2 应该在虚假区域,并带有 A 记录。 区域 1 和区域 2 应该是指向 box1 和 box2 的 NS 记录。

清澈如泥? :)

好的。我看到你已经添加了你的配置。非常好。

我会这样更改根区:

;Should this be ns1.itchy.bogus or ns1.itchy.internal.bogus??
itchy                   NS      ns1-itchy.bogus.
ns1-itchy.bogus.    A   10.0.0.2
;
scratchy        NS      ns1-scratchy.bogus.
ns1-scratchy.bogus. A   10.0.0.3

我认为问题是你委派了 itchy.bogus,所以你不能把名字放在那里。

我相信,"com"名称服务器使用提示,以便它们可以为委派区域的名称服务器提供 A 记录,但在您的情况下,确保所服务的任何给定区域仅具有当前区域内的子区域和主机的委派会更干净。

像高地人一样,只能有一个。

通过使用正常的互联网根提示,你或多或少地被排除使用自己的内部根,因为没有一个真正的互联网根服务器知道"虚假"。

您唯一的选择是从"."中镜像根"."区域,但随后向其添加"虚假"。为此,您可以定期转储根区,然后通过一些处理运行它以将自定义区添加到其中。

一些备用 DNS 根提供商会这样做,但它们为其"客户"提供根提示,这些提示根本不引用"真正的"根服务器。

。我是否正确理解了这个问题?不确定。

dig .

@10.0.0.1(假(应该返回"."的权威记录,因为它确实是该区域的权威记录。

dig . @10.0.0.2(痒(不应该返回"."的权威记录,因为它不是。当您第一次查询根区域中的名称时,它可能会返回权威记录,因为它必须递归并从权威服务器获取权威记录。但是,如果您第二次执行此操作,您将获得缓存结果,并且"aa"标志将清除。

您的名称服务器不会使用该提示来给出答案以进行挖掘。也就是说,它不会给出提示来挖掘作为答案。它将坚持实际查询 10.0.0.1 以查找 bogustld。我不认为你把假的设置为一个区域,只是假的。

您可能应该将ns.bogustld更改为ns.bogus。给 10.0.0.1 命名 ns.bogus。

或者,您可以在 中为伪造添加 NS 和 SOA 记录。

如果你挖ns1.bogus.@10.0.0.2,那行得通,对吧(假设上面的配置仍然存在(?

相关内容

  • 没有找到相关文章

最新更新