Mac PC Web

sshで名前解決ができない

OS X をMarvericks (10.9)にアップグレードしてからだと思う。

こんなメッセージが出てSSHに繋がらない症状が時々起きるようになった。

ssh: Could not resolve hostname example.com: nodename nor servname provided, or not known

しかし、digやnslookupでは期待通りの結果が返ってくる。

$ dig example.com
 
; <<>> DiG 9.8.3-P1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60646
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;example.com.	IN	A
 
;; ANSWER SECTION:
example.com. 10800 IN	A	192.168.1.2
 
;; Query time: 1017 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Fri Dec 27 13:40:04 2013
;; MSG SIZE  rcvd: 60
$ nslookup example.com
Server:		192.168.1.1
Address:	192.168.1.1#53
 
Non-authoritative answer:
Name:	example.com
Address: 192.168.1.2

googleで調べてみると、mDNSResponder というプログラムのキャッシュが原因ということがわかった。
1.1. Macのsshで正しく名前解決ができない – 技術メモ」というページに、まさに本件のことが書かれていた。

$ sudo killall mDNSResponder

でmDNSResponder を停止させれば良い。

manを見てみると、mDNSResponderはMulticast and Unicast DNS daemon ってなってて、結局killallしても自動的に再起動してくるから、キャッシュをクリアして対処するしてるってことなのね。

根本的な解決方法は別で探さないといけないようだ。

1件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください