host
nslookup
dig
などのコマンドでは名前解決(正逆引き)出来るのに、pingやsshだとresolve出来ないというのがその現象。
おいらんちの環境でもそうなった。なにかの拍子にうまくいってくれるのだが、リブートすると水の泡。これではローカルネット用にホスト名を付けた意味が半減する(メインのマシンがMacOSなのだから)。
しばしば見られる解決アドバイスとしてはMacOSXのmDNSResponderキャッシュを消すというのがあって、
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistしなさいというのがひとつ。同じことだが
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo killall -HUP mDNSResponderしなさいというのがひとつ。
さらに、
sudo dscacheutil -flushcacheしなさい、というのがひとつ。で、この3つとも効果が無い。
DNS Name lookup (was SSH) Not Working After Snow Leopard Upgrade
のコメントの中にある「要するにMacOSXのsshとかpingは
gethostbyname2()関数をつかっていて、これは/etc/hostsに書かれてるものじゃないとだめみたいなんでAppleの修正待つしかないんじゃないですかね
」というのが説得力をもってしまった。ちなみに上のフォーラムのコメントの中には「自分はMacOSXにdnsmasqをインストールして/etc/resolve.confでDNS指定したら上手く行った」という人も居て、結構泥沼になりそうな雰囲気である。OSXデフォルトのnamedをunloadしてdnsmasq経由で対象DNS(dnsmasq)と通信すれば改善しそうな気もするが、そこまでやるのはどんなもんだろうか。
というわけでdnsmasqのホストにrsyncをかけて/etc/hostsを取ってきて、メインマシンmacの/etc/hostsに書き込むという原始的解決法を採用した。スクリプトで自動化すれば手間じゃないし一台だし。
0 件のコメント:
コメントを投稿