![SSHD 反向映射失败,但 nslookup、dig 和 host 解析正确](https://linux22.com/image/1415692/SSHD%20%E5%8F%8D%E5%90%91%E6%98%A0%E5%B0%84%E5%A4%B1%E8%B4%A5%EF%BC%8C%E4%BD%86%20nslookup%E3%80%81dig%20%E5%92%8C%20host%20%E8%A7%A3%E6%9E%90%E6%AD%A3%E7%A1%AE.png)
我刚刚设置了一个 dhcp/dns 服务器来管理我的家庭网络。在我完成所有设置并运行后(可能在此之前 - 我当时没有仔细注意),我注意到登录 ssh 的速度很慢。我以调试模式启动了 sshd,/sbin/sshd -ddd
并启动了第二个 PuTTy 实例。
当然,罪魁祸首很快就显而易见:
debug3: Trying to reverse map address 10.0.0.22.
reverse mapping checking getaddrinfo for mt.local [10.0.0.22] failed - POSSIBLE BREAK-IN ATTEMPT!
它无法将我的 IP 反向映射到我的主机名。考虑到 DNS 记录按照 nslookup 都是按顺序排列的,这很奇怪:
[root@media] # nslookup mt.local
Server: 10.0.0.2
Address: 10.0.0.2#53
Name: mt.local
Address: 10.0.0.22
[root@media] # nslookup 10.0.0.22
Server: 10.0.0.2
Address: 10.0.0.2#53
22.0.0.10.in-addr.arpa name = mt.local
主持人:
[root@media] # host mt.local
mt.local has address 10.0.0.22
[root@media] # host 10.0.0.22
22.0.0.10.in-addr.arpa domain name pointer mt.local.
并挖掘:
[root@media] # dig mt.local
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> mt.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12144
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mt.local. IN A
;; ANSWER SECTION:
mt.local. 300 IN A 10.0.0.22
;; AUTHORITY SECTION:
local. 300 IN NS media.local.
;; ADDITIONAL SECTION:
media.local. 300 IN A 10.0.0.2
;; Query time: 0 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Tue Jul 15 23:02:34 EDT 2014
;; MSG SIZE rcvd: 89
[root@media] # dig -x 10.0.0.22
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> -x 10.0.0.22
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5476
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;22.0.0.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
22.0.0.10.in-addr.arpa. 300 IN PTR mt.local.
;; AUTHORITY SECTION:
0.0.10.in-addr.arpa. 300 IN NS media.local.
;; ADDITIONAL SECTION:
media.local. 300 IN A 10.0.0.2
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Tue Jul 15 23:03:59 EDT 2014
;; MSG SIZE rcvd: 109
并且,为了冗长起见,我的/etc/resolv.conf
:
search local
nameserver 10.0.0.2
我找不到任何导致反向映射失败的原因。我也找不到任何导致它在失败前挂起这么长时间的原因——DNS 服务器距离只有 0.5 毫秒。
是的,我知道我可以关闭反向映射,但这不是重点。我非常感谢大家的帮助!
我可能应该注意,这是在 10.0.0.0/24 网络上;调制解调器/网关位于 10.0.0.1;dns/dhcp/我所说的盒子(媒体)位于 10.0.0.2;我的桌面(mt)位于 10.0.0.22。本地域是 .local,我有与 DHCP 绑定的反向 DNS 映射。
答案1
.local 通常被认为是一个“特殊”域名。avahi/bonjour/mdns 等使用它作为域名,虽然您没有说您使用什么来提供 DNS,但我猜它不是 avahi。
/etc/nsswitch.conf 中的“hosts”行是什么样的?
nslookup、host 和 dig 将使用您配置的解析器,但 ssh 将使用 nsswitch.conf,它将为其提供要逐步执行的选项列表。其中一个选项可能是 mdns 或 mdns4,例如:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
我建议将您的本地域名更改为 .local 以外的其他名称,或者从 nsswitch.conf 中的 hosts: 行中删除任何 mdns* 条目,例如:
hosts: files dns
答案2
问题原来既简单又愚蠢,是由操作员错误引起的。显然,凭借我的无限智慧,我对 mt 的静态租约进行了以下配置(在我的 dhcpd.conf 中):
host mightyturing {
hardware ethernet <MAC>;
option host-name "mightyturing";
ddns-hostname "mt";
fixed-address 10.0.0.22;
};
因此 SSHD 是正确的 - 反向映射与设置的主机名不匹配。将 更改ddns-hostname
为“mightyturing”即可解决问题。将 更改option host-name
为mt
可能也会有效。
至少,我思考这就是问题所在...修复 dhcp 配置并更新我的 IP 后它就停止挂起了。
无论如何,感谢大家抽出时间:)