1

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

我正在尝试建立一个概念验证项目,而我的 BIND 配置是我的第一个大障碍。我想在 3 个物理盒子上设置 3 个 DNS 服务器。 这些盒子都不需要解析公共地址,这只是内部。我已经阅读了(主要是)优秀的 DNS & BIND 第 5 版书中如何设置内部根。但是我对他们示例的翻译不起作用。所有 IP 都是 RFC 1918 不可路由的。

框 1 对box1.bogus域中的地址具有权威性,框 2 对box2.bogus域中的地址具有权威性。框 3 将作为域bogus的内部根和 TLD 服务器。

当前未解决的问题:

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

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

显然我的配置正确。我看不到将它们附加到此帖子的方法,因此,如果人们想逐步完成此操作,我会将它们剪切'n'粘贴到此问题的评论中。否则,我愿意与“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 的输出。

; <<>> 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 +trace itchy.bogus 的输出

; <<>> 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 的输出。

; <<>> 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 + trace itchy.bogus 的输出

; <<>> 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
4

8 回答 8

1

通过使用@,您定义了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 的区域文件,所以应该做正确的事情。

于 2008-10-22T18:50:14.390 回答
1

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

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

如果您使用 Internet 的典型提示文件从机器“挖掘 [no args]”,您将获得根名称服务器的答案块和附加部分中的翻译。

如果我从伪造的机器(根和 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

为什么我的面向 Internet 的机器找到 SOA,但没有找到我的内部机器?

于 2008-10-22T19:41:50.307 回答
0

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

你也用过named-checkconf和named-checkzone

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

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

于 2008-10-21T22:22:49.670 回答
0

3 个服务器中的每一个都需要具有相同的提示文件。它应该有一个“。”的 NS 记录。带有根服务器的名称和该名称的 A 记录。

根服务器应该有“。” 区设立。这 ”。” zone 需要自己拥有带有 ns 记录的“伪造”。然后它应该有 box1.bogus 到 box1 和 box2.bogus 到 box2 的 A 记录。

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

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

清如泥?:)

于 2008-10-21T22:24:15.177 回答
0

行。我看到你已经添加了你的配置。优秀的。

我将因此更改根区域:

;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 记录,但在您的情况下,确保所服务的任何给定区域仅具有子区域的委托和当前区域内的主机。

于 2008-10-22T16:58:16.283 回答
0

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

通过使用正常的 Internet 根提示,您或多或少地无法使用自己的内部根,因为没有一个真正的 Internet 根服务器知道“伪造”。

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

一些备用的 DNS 根提供商会这样做,但他们为“客户”提供根提示以供使用,这些提示根本不引用“真正的”根服务器。

...我是否正确理解了这个问题?没有把握。

于 2008-10-22T21:51:03.590 回答
0

挖。@10.0.0.1 (bogus) 应该返回 '.' 的权威记录,因为它确实对该区域具有权威性。

挖。@10.0.0.2 (itchy) 不应该返回 '.' 的权威记录,因为它不是。它可能会在您第一次在根区域中查询名称时返回权威记录,因为它必须递归并从权威服务器获取权威记录。但是如果你第二次这样做,你会得到一个缓存的结果,并且'aa'标志将被清除。

于 2008-10-22T23:33:32.943 回答
0

您的名称服务器不会使用提示来给出 dig 的答案。也就是说,它不会给出挖掘作为答案的提示。它将坚持实际为 bogustld 查询 10.0.0.1。我认为您没有将 bogustld 设置为区域,只是伪造的。

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

或者,您可以在 . 对于bogustld。

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

于 2008-10-24T18:17:58.247 回答