DNSでUbuntuサーバーのIPアドレスを変更しました。
今後
10.x.x.111
後ろに
10.x.x.222
DNSキャッシュをフラッシュしましたが、システムにsshを接続しようとすると、sshはまだ古いIPに接続しようとします。
host foo.example.com
10.10.10.222 <= 222 is the correct *new* ip address
ssh -vv -F /dev/null -o UserKnownHostsFile=/dev/null foo.example.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /dev/null
debug2: ssh_connect: needpriv 0
debug1: Connecting to foo.example.com [10.x.x.111] port 22. <= 111 is the incorrect *old* address
以前のIPが存在しないか存在しないことを確認しました/etc/hosts
~/.ssh/known_hosts
。~/.ssh/config
SSHが間違ったIPアドレスを見つけるのはなぜですか?
修正する
一晩待った後、今朝SSHが正しいIPアドレスに接続されているようです。
答えがないので質問を説明します。 DNS名の解決方法の違いは何ですかssh
?host
アップデート2
これを再現してみました。host
正しいIPを表示しping
、ssh
古いIPを表示します。
これはpingのstrace出力です。 http://pastebin.com/ifnrqDP6
答え1
その理由は、OSXにはフラッシュする必要があるキャッシュが複数あるためです。私のワークステーションはヨセミテを実行しているMacなので、次のコマンドを実行しました。
sudo discoveryutil mdnsflushcache
https://support.apple.com/en-us/HT202516
udnsキャッシュも更新する必要があることがわかりました。
sudo discoveryutil udnsflushcaches