為什麼即使設置了 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.
如果您有任何想法,將不勝感激!
這完全是關於 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 域的重要性,我只是將其視為內部網路的一個很好的約定。