设置 DNS 服务器以将对域“abc.com”的请求解析到其自己的主机

设置 DNS 服务器以将对域“abc.com”的请求解析到其自己的主机

我有一台具有公共 IP 地址的服务器(假设)198.20.30.40

我正在尝试在此主机上设置 DNS 服务器,以便我可以解析对“stackoverflow.com”的所有请求,并将其解析为“198.20.30.40”,而不是实际的 stackoverflow。当然,我已将请求 stackoverflow 的客户端中的主 DNS 服务器设置为 198.20.30.40。还有其他开放 DNS 服务器 (8.8.8.8) 设置为辅助 DNS。

遵循教程,我无法让它工作。

这是我进行“挖掘”时得到的结果。看起来它正在发挥作用

$ dig stackoverflow.com
; <<>> DiG 9.8.3-P1 <<>> stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43984
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;stackoverflow.com.         IN  A
;; AUTHORITY SECTION:
stackoverflow.com.      86400   IN  SOA ns.stackoverflow.com. hostmaster.linux.bogus. 990 28800 7200 2419200 86400
;; Query time: 152 msec
;; SERVER: 198.20.30.40#53(198.20.30.40)
;; WHEN: Thu Mar  3 15:14:45 2016
;; MSG SIZE  rcvd: 90

但是,当我执行 nslookup 时,我得到了以下信息。它没有给出我的服务器的 IP 地址,即 198.20.30.40

$ nslookup stackoverflow.com
;; Got recursion not available from 198.20.30.40, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53
Non-authoritative answer:
Name:   stackoverflow.com
Address: x.y.z.d

以下是我的 /etc/bind/named.conf.local 配置文件

zone "stackoverflow.com" {
        type master;
        notify no;
        file "/etc/bind/stackoverflow.com";
};
zone "30.20.198.in-addr.arpa" {
        type master;
        file "/etc/bind/198.20.30";
};

我的 /etc/bind/stackoverflow.com

$TTL 3D
@       IN      SOA     ns.stackoverflow.com. hostmaster.linux.bogus. (
                        990       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                NS      ns              ; Inet Address of name server
                MX      10 mail.linux.bogus.     ; Primary Mail Exchanger
                MX      20 mail.friend.bogus.   ; Secondary Mail Exchanger
;
localhost       A       198.20.30.40
ns              A       198.20.30.40
www             CNAME   ns
media           CNAME   ns
jobs            CNAME   ns
ir              CNAME   ns
help            CNAME   ns
mail            A       198.20.30.40

我的 /etc/bind/198.20.30

$TTL 3D
@               IN      SOA     ns.stackoverflow.com. hostmaster.linux.bogus. (
                                989       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                4W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.stackoverflow.com.
40                     PTR      ns.stackoverflow.com.
40                     PTR      jobs.stackoverflow.com.
40                     PTR      help.stackoverflow.com.

答案1

你已经回答了你自己的问题,只是你没有意识到这一点。

dig当不执行时+norecurse,你会看到:

;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

当您尝试使用时nslookup,您会看到:

;; Got recursion not available from 198.20.30.40, trying next server

您已配置权威性DNS 服务器,它不会响应任何 DNS 查询。它只响应已配置的域的请求。仅权威服务器不应该配置为 DNS 服务器以便使用所有递归查询由工作站或服务器创建,这就是您上面所做的。换句话说,绝对不能在与递归服务器(例如 8.8.8.8)相同的上下文中使用仅权威服务器。

dig您在这里遇到的是在这种特定的错误配置下的行为方式和行为方式的差异nslookupdig将显示有关递归不可用的警告,但如果可用,则提供权威答案。nslookup还会警告您递归不可用,但会不是显示权威答案并完全跳至下一个服务器。

此时,强烈建议从递归服务器列表中删除仅权威服务器,并对这些类型的服务器之间的差异进行一些独立研究。虽然可以将权威服务器配置为递归服务器,如果这是面向互联网的权威服务器,这几乎总是一个坏主意,因为这会导致不安全的配置,称为“开放解析器”。 (谷歌上有很多关于这些的信息)

相关内容