DNS 服务器无法解析邮件服务器主机名

DNS 服务器无法解析邮件服务器主机名

我使用 bind 设置了两个名称服务器。网站 example.com 可以 ping 并显示正常,所以我知道它的 dns 记录没有问题。但是,浏览 mail.example.com 和 ping mail.example.com 时 90% 都会失败。

有趣的是,有时 ping 测试确实能找到 mail.example.com,而且我可以通过浏览 mail.example.com 正常检查我的网络邮件,但这只能持续大约 30 分钟,之后的任何 ping 测试都会无法解析 mail.example.com,而且我无法导航到 mail.example.com。

顺便说一句,如果我仅通过其公共 IP 而不是主机名 mail.example.com 来 ping 邮件服务器,则一切正常,并且 100% 的时间都能解析。我还可以 100% 的时间在浏览器中导航到我的邮件服务器 IP 来检查我的邮件,一切正常。我知道这不是服务器问题,一定是 DNS 问题。

我的 DNS 服务器有些问题。

请查看下面的信息,看看你是否能告诉我我做错了什么。

当 mail.example.com 在浏览器中加载时,我运行了 ping 测试,得到了以下结果。

Pinging mail.phrixis.com [52.27.16.178] with 32 bytes of data:
Request timed out.

它实际上显示的是我的邮件服务器的 IP。

当我浏览 mail.example.com 并且它没有加载时,我进行了 ping 测试,这就是我得到的结果。

ping mail.phrixis.com
ping: uknown host mail.phrixis.com

它此时根本没有获取邮件服务器IP,所以这就是它无法在浏览器中加载的原因。

就好像我的 DNS 服务器有一半的时间在说“是的,我知道 mail.example.com 在哪里”,而另一半的时间却在说“不,我忘了 mail.example.com 在哪里”。

当登录到 ns1.example.com 时,我搜索 mail.example.com 并得到以下结果。

[root@ns1 ~]# dig @localhost mail.phrixis.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.1 <<>> @localhost mail.phrixis.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8581
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;mail.phrixis.com.              IN      A

;; ANSWER SECTION:
mail.phrixis.com.       86400   IN      A       52.27.16.178

;; AUTHORITY SECTION:
phrixis.com.            86400   IN      NS      ns1.phrixis.com.
phrixis.com.            86400   IN      NS      ns2.phrixis.com.

;; ADDITIONAL SECTION:
ns1.phrixis.com.        86400   IN      A       107.170.58.69
ns2.phrixis.com.        86400   IN      A       138.197.212.168

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Mon May  8 20:00:02 2017
;; MSG SIZE  rcvd: 118

[root@ns1 ~]#

当登录 ns1.example.com 时,我挖掘 example.com 并得到以下结果。

[root@ns1 ~]# dig @localhost phrixis.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.1 <<>> @localhost phrixis.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31758
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;phrixis.com.                   IN      A

;; ANSWER SECTION:
phrixis.com.            86400   IN      A       162.243.60.215

;; AUTHORITY SECTION:
phrixis.com.            86400   IN      NS      ns1.phrixis.com.
phrixis.com.            86400   IN      NS      ns2.phrixis.com.

;; ADDITIONAL SECTION:
ns1.phrixis.com.        86400   IN      A       107.170.58.69
ns2.phrixis.com.        86400   IN      A       138.197.212.168

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Mon May  8 20:03:58 2017
;; MSG SIZE  rcvd: 113

[root@ns1 ~]#

这是我的 named.conf 文件

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        #listen-on port 53 { 127.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";
        allow-query     { any; };
        allow-transfer  { localhost; 138.197.212.168; };
        recursion no;

        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";
};

zone "phrixis.com" IN {
        type master;
        file "phrixis.com.zone";
        allow-update { none; };
};

这是我的 example.com.zone 文件

$TTL 86400
@  IN   SOA     ns1.phrixis.com. root.phrixis.com. (
        2013042201      ;Serial
        3600            ;Refresh
        1800            ;Retry
        604800          ;Expire
        86400           ;Minimum TTL
)
; Specify our two nameservers
                IN      NS              ns1.phrixis.com.
                IN      NS              ns2.phrixis.com.
; Resolve nameserver hostnames to IP, replace with your two droplet IP     addresses.
ns1             IN      A               107.170.58.69
ns2             IN      A               138.197.212.168

; Define hostname -> IP pairs which you wish to resolve.
@               IN      A               162.243.60.215
WWW             IN      A               162.243.60.215
mail            IN      A               52.27.16.178
            IN      MX      10      mail.phrixis.com.

由于我是运行 DNS 服务器的新手,因此非常感谢您的任何回复。

答案1

很明显,为什么 DNS 解析有时有效,有时无效。您已公布了两个权威名称服务器 -ns1.phrixis.com.ns2.phrixis.com.。其中一个 - ns2.phrixis.com.- 未解析 DNS 条目 -

$ dig @ns1.phrixis.com mail.phrixis.com +short
52.27.16.178
$ dig @ns2.phrixis.com mail.phrixis.com +short
$

解决方案 - 确保 ns2 也具有正确的记录。我可以看到您有 ns2 的允许传输块,allow-transfer { localhost; 138.197.212.168; };但您需要验证区域记录是否正在复制到 ns2。

如果 ns2 是辅助 DNS 服务器,请确保它具有正确的配置,并且从 ns1 到 ns2 的区域传输正常进行。

还要确保 ns2 没有任何防火墙阻止端口 53 udp/tcp。

参考设置从属 DNS 服务器 -http://www.microhowto.info/howto/configure_bind_as_a_slave_dns_server.html

相关内容