为什么即使设置了 PTR 记录,SSH 仍会报告“反向映射检查 getaddrinfo 失败”?

为什么即使设置了 PTR 记录,SSH 仍会报告“反向映射检查 getaddrinfo 失败”?

我正在尝试使用子网 10 上的私有网络设置集群。一台机器有两个接口,一个用于连接到常规网络,另一个用于连接到子网 10 上的所有节点。这台 CentOS 6 机器(我们称之为“zaza.domain.com”)运行 DHCP、DNS,目前这两者都由 Cobbler 管理,这可能是问题的一部分,也可能不是(尽管禁用它并手动执行所有操作仍然会给我带来问题)。

如果我通过 SSH 进入 zaza,然后尝试从 zaza 通过 SSH 进入 node1,我会收到如下警告消息:

[root@zaza ~]# ssh node1
reverse mapping checking getaddrinfo for node1.cluster.local [10.69.0.1] failed - POSSIBLE BREAK-IN ATTEMPT! 

我仍然收到密码提示并且仍然可以登录。

我知道sshd 警告,“可能存在入侵尝试!”,表示反向 DNS 失败/var/log/secure 中出现“可能存在入侵尝试!”——这是什么意思?经过大量其他搜索,发现导致此错误的原因通常是未设置 PTR 记录。但是,它已设置 - 请考虑以下内容:

[root@zaza ~]# nslookup node1.cluster.local   
Server:     10.69.0.69   
Address:    10.69.0.69#53

Name:   node1.cluster.local   
Address: 10.69.0.1

[root@zaza ~]# nslookup 10.69.0.1   
Server:     10.69.0.69   
Address:    10.69.0.69#53

1.0.69.10.in-addr.arpa  name = node1.cluster.local.

10.69.0.69 IP地址是zaza的第二个接口。

如果我尝试使用 dig 等其他工具来实际查看 PTR 记录,我会得到以下输出:

[root@zaza ~]# dig ptr 1.0.69.10.in-addr.arpa    
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.4 <<>> ptr 69.0.69.10.in-addr.arpa
;; global options: +cmd
;; Got answer:   
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29499   
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.0.69.10.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:  
1.0.69.10.in-addr.arpa. 300 IN  PTR node1.cluster.local.

;; AUTHORITY SECTION:  
10.in-addr.arpa.    300 IN  NS  zaza.cluster.local.

;; ADDITIONAL SECTION:   zaza.cluster.local.    300 IN  A   10.69.0.69

;; Query time: 0 msec
;; SERVER: 10.69.0.69#53(10.69.0.69)
;; WHEN: Wed Mar  1 17:05:44 2017   
;; MSG SIZE  rcvd: 110

在我看来,PTR 记录已设置,所以我不知道为什么当我尝试连接到其中一个节点机器时,SSH 会发出嘶嘶声。为了提供所有信息,以下是相关的配置文件,经过剧透以使内容看起来更易读...

/etc/named.conf

[root@zaza ~]# cat /etc/named.conf 
options {
          listen-on 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; }; # was localhost
          recursion yes;

          # setup DNS forwarding
          forwarders {1.2.3.4;}; # Real IP goes in here
};

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

zone "cluster.local." {
    type master;
    file "cluster.local";

    # these two lines allow DNS querying
    allow-update { any; };
    notify no;
};

zone "10.in-addr.arpa." {
    type master;
    file "10";

    # these two lines allow DNS querying
    allow-update { any; };
    notify no;
};

/var/named/cluster.local

[root@zaza ~]# cat /var/named/cluster.local 
$TTL 300
@                       IN      SOA     zaza.cluster.local. nobody.example.com. (
                                        2017030100   ; Serial
                                        600         ; Refresh
                                        1800         ; Retry
                                        604800       ; Expire
                                        300          ; TTL
                                        )

                        IN      NS      zaza.cluster.local.

zaza     IN  A     10.69.0.69



node1  IN  A     10.69.0.1;
node2  IN  A     10.69.0.2;

/var/命名/10

[root@zaza ~]# cat /var/named/10 
$TTL 300
@                       IN      SOA     zaza.cluster.local. root.zaza.cluster.local. (
                                        2017030100   ; Serial
                                        600         ; Refresh
                                        1800         ; Retry
                                        604800       ; Expire
                                        300          ; TTL
                                        )

                        IN      NS      zaza.cluster.local.

69.0.69 IN  PTR  zaza.cluster.local.



1.0.69  IN  PTR  node1.cluster.local.
2.0.69  IN  PTR  node2.cluster.local.

如果您有任何想法,我们将非常感激!

答案1

这一切都与 Avahi 和 .local 域名有关,与 PTR 记录无关。

我又搜索了一番,发现主机解析成功了,但 FQDN 解析失败了。这最终让我https://superuser.com/questions/704785/ping-cant-resolve-hostname-but-nslookup-can我从中链接到http://www.lowlevelmanager.com/2011/09/fix-linux-dns-issues-with-local.html这为我解决了所有问题。

最终的问题在于,/etc/nsswitch.conf有一行写着:
hosts: files mdns4_minimal [NOTFOUND=return] dns
通过将其更改为:
hosts: files dns
问题消失了,我不再收到有关可能的入侵尝试的错误。

我测试的另一个解决方案是简单地重命名域,因为此行为特定于 .local 域。通过将 cluster.local 重命名为 cluster.bob,错误消息也消失了。

另一个解决方案是将 Avahi 从 .local 移至 .alocal 之类的名称,这样多播 DNS 就不会应用于 .local 域,并且默认的 nsswitch 配置似乎可以正常工作。我认为删除该[NOTFOUND=return]参数也可以,因为如果未找到 .local 主机,它将阻止多播 DNS 结束查找,但这可能是一个坏主意。

归根结底,这是一个边缘情况,因为我没有完全理解 .local 域的意义,我只是将其视为内部网络的一个良好约定。

相关内容