Domain-Name-System

為什麼即使設置了 PTR 記錄,SSH 也會報告“反向映射檢查 getaddrinfo 失敗”?

  • March 6, 2017

我正在嘗試使用子網 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.

如果您有任何想法,將不勝感激!

這完全是關於 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 域的重要性,我只是將其視為內部網路的一個很好的約定。

引用自:https://serverfault.com/questions/835697