AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 640469
Accepted
The Humble Rat
The Humble Rat
Asked: 2014-10-30 01:59:46 +0800 CST2014-10-30 01:59:46 +0800 CST 2014-10-30 01:59:46 +0800 CST

绑定仅在本地工作 - Ping 在本地工作,而不是在外部工作

  • 772

我在 Centos 6.5 服务器上使用 Bind 将子域解析为 IP。

我有 *.ddns.example.com 和 ddns.example.com 通过 A 记录指向我的服务器。我为此添加了一个区域,请参见 named.conf:

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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";
        allow-query     { any; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        };

logging {
    channel default_debug {
            file "data/named.run";
            severity dynamic;
    };
};


zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";




zone "ddns.example.com" {
        type master;
        file "/var/named/ddns.example.com.hosts";
        };

这是我的 ddns.example.com.hosts 文件:

$ttl 38400
ddns.example.com.    IN      SOA     ns1.digitalocean.com. [email protected]. (
                    1414575123
                    10800
                    3600
                    604800
                    38400 )
ddns.example.com.    IN      NS      ns1.digitalocean.com.
bob.ddns.example.com.        IN      A       8.8.8.8

我已经重新启动了命名服务,并且在 ping 域 bob.ddns.example.com 时收到来自 8.8.8.8 的回复,因此从本地服务器 ping 时记录按预期工作。但是,当在服务器外部(即另一个网络)执行 ping 操作时,子域 bob.ddns.example.com 仍然解析为配置了 bind 的服务器的 IP。

我已经完全停止了我的 iptables 以将其排除在等式之外,结果是相同的,绑定服务器的 IP 是从子域解析的,而不是预期的 8.8.8.8。我已经按照其他一些帖子的建议设置了以下选项:

listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
allow-query     { any; };

我需要设置其他一些选项以允许来自外部的分辨率吗?还是我完全错过了什么?

挖

该域实际上是一个.es域,因此我将在此处按原样引用它。

这是一个例子dig +trace bob.ddns.example.es

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> +trace bob.ddns.example.es
;; global options: +cmd
.                       518304  IN      NS      e.root-servers.net.
.                       518304  IN      NS      b.root-servers.net.
.                       518304  IN      NS      f.root-servers.net.
.                       518304  IN      NS      i.root-servers.net.
.                       518304  IN      NS      d.root-servers.net.
.                       518304  IN      NS      g.root-servers.net.
.                       518304  IN      NS      h.root-servers.net.
.                       518304  IN      NS      m.root-servers.net.
.                       518304  IN      NS      l.root-servers.net.
.                       518304  IN      NS      k.root-servers.net.
.                       518304  IN      NS      c.root-servers.net.
.                       518304  IN      NS      j.root-servers.net.
.                       518304  IN      NS      a.root-servers.net.
;; Received 228 bytes from 127.0.0.1#53(127.0.0.1) in 608 ms

es.                     172800  IN      NS      ns1.cesca.es.
es.                     172800  IN      NS      ns-ext.nic.cl.
es.                     172800  IN      NS      ns15.communitydns.net.
es.                     172800  IN      NS      ns3.nic.fr.
es.                     172800  IN      NS      sns-pb.isc.org.
es.                     172800  IN      NS      a.nic.es.
es.                     172800  IN      NS      f.nic.es.
;; Received 461 bytes from 192.36.148.17#53(192.36.148.17) in 1540 ms

example.es.                 86400   IN      NS      ns1.tsohost.co.uk.
example.es.                 86400   IN      NS      ns2.tsohost.co.uk.
;; Received 84 bytes from 192.134.0.49#53(192.134.0.49) in 120 ms

bob.ddns.example.es.      1       IN      A       178.62.171.XXX
;; Received 51 bytes from 95.142.155.4#53(95.142.155.4) in 20 ms

这是命令 dig @127.0.0.1 bob.ddns.example.es 的输出

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @127.0.0.1 bob.ddns.example.es
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11646
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bob.ddns.example.es.               IN      A

;; ANSWER SECTION:
bob.ddns.example.es.        1       IN      A       8.8.8.8

;; AUTHORITY SECTION:
ddns.example.es.            1       IN      NS      ns1.digitalocean.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Oct 30 04:55:19 2014
;; MSG SIZE  rcvd: 83

这是命令的输出dig @8.8.8.8 bob.ddns.example.es

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @8.8.8.8 bob.ddns.example.es
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35748
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;bob.ddns.example.es.               IN      A

;; ANSWER SECTION:
bob.ddns.blu.es.        0       IN      A       178.62.171.XXX

;; Query time: 55 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 30 04:56:48 2014
;; MSG SIZE  rcvd: 49

另请注意,该域已在 Godaddy 注册。在 Godaddy 上,我们将 ns1.tsohost.co.uk 设置为名称服务器。在这里,我们在 tsohost 托管包上提供网站(即 example.es 和 www.example.es)。在 tso 上,我们为 ddns.example.es 和 *.ddns.example.es 创建了一条 A 记录,以转到数字海洋服务器,即 178.62.171.XXX,我们希望在此服务器上为这些服务器操作 IP 地址域。

domain-name-system
  • 2 2 个回答
  • 2412 Views

2 个回答

  • Voted
  1. jpgeek
    2014-11-02T04:36:09+08:002014-11-02T04:36:09+08:00

    至少在撰写本文时,上述示例显示出相互矛盾的结果。我假设您正在更改主机名和 IP 地址以保护您的身份?这一切都很好,但是使诊断问题变得非常困难。

    所以,这就是我的建议。首先确保您的 DNS 记录设置正确。

    验证您的域名已正确注册到根服务器和 .es 域根服务器。这显示在上面的第一个 dig +trace 结果中。据此,您的 dns 服务器是

    example.es.                 86400   IN      NS      ns1.tsohost.co.uk.
    example.es.                 86400   IN      NS      ns2.tsohost.co.uk.
    

    如果这些不正确,那么您的域注册可能有错误的名称服务器,因此您必须解决此问题。如果这些都是正确的,那么当您查询它们时,它们是否返回了正确的答案?在您上面的 dig +trace 中,他们正在返回

    bob.ddns.example.es.      1       IN      A       178.62.171.XXX
    

    这个对吗?我还将专门分别检查它们:

    dig bob.ddns.blu.es @ns1.tsohost.co.uk +norecurse
    dig bob.ddns.blu.es @ns2.tsohost.co.uk +norecurse
    

    这会告诉你问题出在哪里。对于其他两个示例:

    dig @127.0.0.1 bob.ddns.example.es
    dig @8.8.8.8 bob.ddns.example.es
    

    我不知道您从哪个主机运行它们(即在名称服务器或其他主机上运行?)所以我帮不上什么忙。但是,当您运行 dig 时,请使用 +trace 选项,这样您就可以准确地知道事情在哪里偏离了轨道。

    另请注意,该域已在 Godaddy 注册。在 Godaddy 上,我们将 ns1.tsohost.co.uk 设置为名称服务器。在这里,我们在 tsohost 托管包上提供网站(即 example.es 和 www.example.es)。在 tso 上,我们为 ddns.example.es 和 *.ddns.example.es 创建了一条 A 记录,以转到数字海洋服务器,即 178.62.171.XXX,我们希望在此服务器上为这些服务器操作 IP 地址域。

    正如 AndrewB 注意到的那样,我错过了,这看起来像是你的问题。如果您在 tsohost 名称服务器上有一条指向您的数字海洋服务器的 A 记录,那么您就是在告诉它其 A 记录查询的最终答案是数字海洋名称服务器。DNS 不会进一步查询数字海洋服务器——它已经得到了答案。相反,从 tsohost 中删除该 A 记录并告诉它将子域的请求委托给您的其他名称服务器。通过添加委托给您的子域的另一个源和 NS 记录来执行此操作:

    ; sub-domain definitions
    ; zone fragment for ddns.example.com
    $ORIGIN ddns.example.com.
    ; we define two name servers for the sub-domain
    @             IN      NS     <name of your dns server>.
    

    请注意,您的 dns 服务器还必须专门向 GO DADDY 或您的注册商注册为 DNS 服务器。 如何进行子域委派

    • 2
  2. Best Answer
    Andrew B
    2014-11-02T05:01:26+08:002014-11-02T05:01:26+08:00

    根据显示的dig +trace输出,最可能的原因是您认为的服务器进程没有接收到面向 Internet 的 IP 的数据包。这可以通过以下CHAOS查询明确证明,该查询表明面向 Internet 的 IP 由 PowerDNS 守护程序管理。

    $ dig @95.142.155.4 chaos txt version.bind
    
    ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @95.142.155.4 chaos txt version.bind
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24158
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; WARNING: recursion requested but not available
    
    ;; QUESTION SECTION:
    ;version.bind.                  CH      TXT
    
    ;; ANSWER SECTION:
    version.bind.           5       CH      TXT     "PowerDNS Authoritative Server 3.3.1     ([email protected] built 20131217140448 [email protected])"
    
    ;; Query time: 97 msec
    ;; SERVER: 95.142.155.4#53(95.142.155.4)
    ;; WHEN: Sat Nov  1 08:57:18 2014
    ;; MSG SIZE  rcvd: 158
    

    除非极不可能的情况是您version.bind在其中一个包含文件中定义自定义字符串,否则 Internet 上的查询根本不会访问您的 BIND 服务器。


    更进一步,以下评论让我怀疑您可能没有为您的预期目的正确配置它:

    另请注意,该域已在 Godaddy 注册。在 Godaddy 上,我们将 ns1.tsohost.co.uk 设置为名称服务器。在这里,我们在 tsohost 托管包上提供网站(即 example.es 和 www.example.es)。在 tso 上,我们为 ddns.example.es 和 *.ddns.example.es 创建了一条 A 记录,以转到数字海洋服务器,即 178.62.171.XXX,我们希望在此服务器上为这些服务器操作 IP 地址域。

    粗体强调是我的。如果您的目标是让面向互联网的 DDNS 正常工作,您需要使用NS记录而不是A记录指向您的 Digital Ocean 服务器。该NS记录将告诉服务器控制权ddns.example.es已委托给您的 BIND 名称服务器。将dig +trace遵循该推荐并在您的 BIND 名称服务器处停止,显然不是。

    作为旁注,NS记录必须指向名称,而不是 IP 地址,因此A除了记录之外,您还需要为这些名称服务器创建NS记录。

    • 2

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve