症状
% ping 取得したドメインで設定したRoute53のレコード名
ping: cannot resolve 取得したドメインで設定したRoute53のレコード名: Unknown host
解決策
% sudo killall -HUP mDNSResponder
参考記事 : OS X で DNS キャッシュをリセットする
エラーまでの流れ
- AWSでドメインを取得し、Aレコードを作成
- WebサーバーのIPアドレスと紐付け
- 紐付けたWebサーバーにpingで疎通確認
- とある理由からAレコード名を変更
- 変更したレコード名で再度ping
- 上記の症状
解決までに確認したこと
- ドメイン名(レコード名)の正誤
- 更新したドメイン名でブラウザからアクセスの可否
- IPアドレスでのpingの可否
- nslookupコマンドが有効
原因
OS X では、DNS サーバで定義されている期間内は、解決済みの DNS クエリのローカルキャッシュが保管されますが、ときには、このキャッシュをすぐにリセットして、DNS サーバに対する再クエリを行わなければならなくなることもあります。たとえば、DNS サーバ上のエントリが最近変更された場合は、ネットワーク管理者またはサーバ管理者として、そうした対応が必要になることがあります。
という記述があることから、今回の場合はDNS上の解決済みクエリのキャッシュが、レコードを変更したために一致しなくなった事が原因だと考えました。新しいドメインでpingを送信しているのだから、新しく名前解決してくれるんじゃないの!?と思ったのですが、どうやらpingコマンドはDNSではなく、mDNSResponderに問い合わせるらしいです。このあたりに関しては、この質疑応答が役に立ちました。DNS Resolution Fails for ping and curl, but not dig
また、同じキーワードで検索を掛けているとこちらの記事にあたり、とても参考になりました。
macでnslookupできるけどpingできない時の対処法
原因については、なんかしっくり来ていないところもあり、表現も正確でない可能性があります。