我对 bind9 做错了什么?

我对 bind9 做错了什么?

我正在尝试将域名绑定到 vps,但是失败了。

当我挖掘时我得到了这个:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> ns1.example.com @61.15.2.95
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49520
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns1.example.com.           IN  A

;; ANSWER SECTION:
ns1.example.com.        604800  IN  A   61.15.2.95

;; AUTHORITY SECTION:
example.com.        604800  IN  NS  ns2.example.com.
example.com.        604800  IN  NS  ns1.example.com.

;; ADDITIONAL SECTION:
ns2.example.com.        604800  IN  A   178.159.2.95

;; Query time: 314 msec
;; SERVER: 178.159.2.95#53(178.159.2.95)
;; WHEN: Sat Apr 15 14:26:22 +04 2017
;; MSG SIZE  rcvd: 106

问题 ;; WARNING: recursion requested but not available 因为这只是一个警告,所以我尝试在 quickhostuk 上注册它,但是在 dns 管理中收到此错误:

Failed to Modify Domain Nameservers: Nameserver not found at registry

这是我所做的......

比如我的 vps IP 是:61.15.2.95
域名:示例.com
名称服务器:

  • ns1.example.com=>61.15.2.95
  • ns2.example.com =>61.15.2.95

1.我安装了bind9。

2.我在命名的.conf.本地

zone "example.com" {
        type master;
        file "/etc/bind/db.example.com";
};

3. 我创建了一个数据库文件db.example.com

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.example.com. root.ns1.example.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@                IN      NS      ns1.example.com.
@                IN      NS      ns2.example.com.
@                IN      A       61.15.2.95
ns1              IN      A       61.15.2.95
ns2              IN      A       61.15.2.95

4.我修改了命名的.conf.选项我将我的 vps ip 添加到转发器,我也尝试了谷歌8.8.8.88.8.4.4

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
                61.15.2.95;
        };


        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

我应该如何正确地将它们组合在一起才能使其发挥作用?

答案1

;; WARNING: recursion requested but not available这实际上是一个好兆头,当运行权威服务器时,它不应该提供递归。
您无需在服务器端进行任何更改,只需+norecdig命令行中添加不请求递归,警告就会消失。

对于权威服务器,您也不需要forwarders。您实际上可能想更进一步,并指定recursion no以确保您不会意外提供递归访问。

关于您在与注册商互动时收到消息的问题,Failed to Modify Domain Nameservers: Nameserver not found at registry我猜这与通过此注册商更改名称服务器的具体过程有关。
由于您的名称服务器名称位于您自己的区域内,因此您将需要粘合记录。我猜想添加这些粘合记录的必要信息可能是您需要首先完成的单独步骤。

您的问题还暗示您对“两个”名称服务器使用了相同的 IP 地址。这听起来像是在欺骗执行实际上非常合理的冗余策略的一种方式。


最后,我要指出的是,如果您不知道如何运行名​​称服务器,而您的最终目标是完全不同的东西(运行一些其他服务),那么您最好使用一些已建立且管理得当的 DNS 托管解决方案,而不是为此设置您自己的基础设施。

答案2

看起来您正在尝试在自己的机器上使用一个 IP 地址托管整个 DNS,并将您自己的域作为 DNS 服务器。

你不能从这里到达那里。

首先,您需要 2 个可解析不同 IP 的 DNS 服务器。

如果您希望将 DNS 服务器命名为 ns1.example.com 和 ns2.example.com,则需要与注册商建立所谓的“粘合记录”。这将允许 ns1.example.com 和 ns2.example.com 成为 example.com 域的唯一 DNS 服务器。

设置好粘合记录后,从 /etc/bind/named.conf.options 中删除转发器 - 除非有客户端直接查询您的服务器,否则您不需要它。

相关内容