DNS解析问题;挖掘SERVFAIL错误

DNS解析问题;挖掘SERVFAIL错误

我正在设置几个专用服务器,但在正确设置名称服务器时遇到问题。其中一个是 LEMP 服务器(使用 nginx 代替 Apache 的 LAMP),另一个将仅用作电子邮件服务器,运行 exim/dovecot/ASSP 反垃圾邮件(无 Apache)。LEMP 服务器是 CentOS 5.5,没有控制面板,而电子邮件服务器也是 CentOS 5.5,带有 cPanel/WHM。

因此,我在正确设置 DNS 时遇到了问题。我有两个域,每个域都指向其中一个服务器。名称服务器已在域名注册商处正确注册,名称服务器 IP 也输入正确。我已与注册商的技术支持人员交谈过,他们确认他们那边已设置好一切。由于对 DNS 了解不多,我搜索了名称服务器和 DNS,直到我几乎失明,并花了几个小时来摆弄配置。

最终,我让 LEMP 服务器的 DNS 正常工作(没有 cPanel)。我对这一胜利感到高兴,我试图模仿该配置,并在电子邮件服务器上重复该过程,但就是没有发生。名称服务器启动和停止,但域名无法解析。

我尝试过的事情
通过标准程序在 WHM 中设置 DNS 清除所有 DNS 信息,卸载 BIND,然后重新安装所有这些,并再次通过 WHM 程序设置 DNS 清除所有 DNS 信息,并使用来自 LEMP 服务器的配置和区域文件作为模板通过 shell(完全在 cPanel 之外)设置 BIND

命名运行正常,但什么都没解析。当我“挖掘任何 example.com”时,我收到 SERVFAIL 消息。Nslookups 不返回任何信息。

这是我的配置和区域文件。

命名配置文件

controls {
        inet 127.0.0.1 allow { localhost; }
        keys { coretext-key; };
};
options {
        listen-on port 53 { any; };
        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";

        // Those options should be used carefully because they disable port
        // randomization
        // query-source    port 53;
        // query-source-v6 port 53;

        allow-query     { any; };
        allow-query-cache { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view "localhost_resolver" {
        match-clients      { 127.0.0.0/24; };
        match-destinations { localhost; };
        recursion yes;

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

        include "/etc/named.rfc1912.zones";
};
view "internal" {
/* This view will contain zones you want to serve only to "internal" clients
   that connect via your directly attached LAN interfaces - "localnets" .
*/
    match-clients        { localnets; };
    match-destinations    { localnets; };
    recursion yes;

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

    // include "/var/named/named.rfc1912.zones";
    // you should not serve your rfc1912 names to non-localhost clients.

    // These are your "authoritative" internal zones, and would probably
    // also be included in the "localhost_resolver" view above :
        zone "example.com" {
                type master;
                file "data/db.example.com";
        };
        zone "3.2.1.in-addr.arpa" {
                type master;
                file "data/db.1.2.3";
        };
};
view "external" {
/* This view will contain zones you want to serve only to "external" clients
 * that have addresses that are not on your directly attached LAN interface subnets:
 */
        match-clients           { any; };
        match-destinations      { any; };

        recursion no;
        // you'd probably want to deny recursion to external clients, so you don't
        // end up providing free DNS service to all takers

        allow-query-cache { none; };
        // Disable lookups for any cached data and root hints

        // all views must contain the root hints zone:
        //include "/etc/named.rfc1912.zones";

        zone "." IN {
                type hint;
                file "/var/named/named.ca";
        };
        zone "example.com" {
                type master;
                file "data/db.example.com";
        };
        zone "3.2.1.in-addr.arpa" {
                type master;
                file "data/db.1.2.3";
        };
};

include "/etc/rndc.key";

db.example.com

$TTL 1D
;
; Zone file for example.com
;
; Mandatory minimum for a working domain
;
@       IN  SOA ns1.example.com. contact.example.com. (
                2011042905 ; serial
                8H ; refresh
                2H ; retry
                4W ; expire
                1D ; default_ttl
        )

                NS      ns1.example.com.
                NS      ns2.example.com.

ns1             A       1.2.3.4
ns2             A       1.2.3.5

example.com.            A       1.2.3.4

localhost               A       127.0.0.1

www                     CNAME   example.com.
mail                    CNAME   example.com.
;

数据库.1.2.3

$TTL 1D
$ORIGIN 3.2.1.in-addr.arpa.

@       IN      SOA     ns1.example.com  contact.example.com.   (
                        2011042908 ;
                        8H      ;
                        2H      ;
                        4W      ;
                        1D      ;
                )

                NS      ns1.example.com.
                NS      ns2.example.com.

4               PTR     hostname.example.com.
5               PTR     hostname.example.com.
;

还要注意:这两台服务器都是托管的。技术支持非常响应,但基本上没什么用。几个小时过去了,他们问我问题,缩小了可能出现问题的范围,然后他们把票交给了下一班的技术人员,这位技术人员无视已经发生的一切,整个班次都在问上一个人问的所有问题。

总结一下:

  • 名称服务器和 IP 已在域名注册商处正确注册
  • named 已配置并正在运行...并且一定不能配置
  • 正确,因为什么都没有解决。

任何帮助都非常好。我将文件中的域和 IP 更改为通用的,但如果您需要了解相关域,请告诉我。

谢谢!

更新

我发现 /etc/resolv.conf 中没有 127.0.0.1,因此我添加了它,以及我已经命名监听的两个公共 IP。

解析配置文件

search www.example.com example.com
nameserver 127.0.0.1
nameserver 7.8.9.10   ;Was in here by default, authoritative nameserver of hosting company
nameserver 1.2.3.4    ;Public IP #1
nameserver 1.2.3.5    ;Public IP #2

现在,当我从主机 DIG example.com 时,它会解析。如果我尝试从我的其他服务器(在同一个数据中心)或从互联网进行 DIG,它会超时或出现 SERVFAIL。

答案1

我首先要验证你的服务器是否运行:

netstat -an | grep ^udp | grep 53

它应该显示类似

udp        0      0 0.0.0.0:53                0.0.0.0:*

如果 named 未运行,则停止它(只是为了清理),然后启动并查看它向日志文件(/var/log/messages、/var/named/data/named.run)写入了什么。可能存在一些拼写错误,导致守护进程无法成功启动。

然后我会从 named.conf 中剥离尽可能多的内容。最小的基本配置应该更容易排除故障。然后我会一点一点地添加条目,看看哪个条目导致服务器出现故障。

另外,请分别尝试从服务器本地解决问题,并从外部客户端解决问题。希望您能找到问题所在。

答案2

您的“example.com”ns1.example.com与您的中的“example.com”相同吗www.example.com

如果是,那么是否whois example.com列出了您的域名服务器的 IP 地址?如果没有,您需要让您的注册商使用您的域名服务器的 IP 地址设置“粘合记录”,因为如果不知道 IP 是什么,就没有人可以询问ns1.example.comIP 地址。ns1.example.com

此外,为了确保您没有设置某些防火墙阻止或其他东西,请dig www.example.com @1.2.3.4从其他地方尝试(1.2.3.4 是 ns1.example.com 的 IP 地址)并查看是否有效。

相关内容