名前解決できずSSHサーバに蹴られる
突然サーバにSSH接続できなくなった、と言っても原因はいろいろある。今日あるVPSサーバでscreen内のsshが切れているのを見つけ、再接続しても繋がらない問題が出た(ウェブにはつながる)。
海外の安サーバで最近AlphaRacks*1に買収されたところの一つだ。この新会社は買収に際して突然に収容ホストやIPアドレスを変更しても半日アナウンスせず、こちらが自己解決してから文句付けがてらに問い合わせた後でしれっと告知メールを出すようないい加減なところ*2。なのでまた何かやらかしたんだろうと思い、とりあえずシリアルコンソール経由で接続する。
SolusVMを使っているので本来はブラウザ経由でコンソールにつなげられるはずなのだが、受け側が整っていないのかWebSocketのエラーで接続できない。
なのでVNC接続ページに出る接続先にVNC Viewerを使って接続した。適当に見繕ったVNC Viewerにはポート番号を入力する欄がないので、コロン付きでIPアドレスとポートを区切って入れる。
コンソール接続してログインし、sshdのエラーを確認してみる。
refused connect from x.x.x.x (x.x.x.x)
普通にはじかれているが、カッコ内もIPアドレスのみで逆引きされていない。
もしやと見てみると、予想通り /etc/resolv.conf が空(自動生成コメントのみ)になっていて、/etc/sysconfig/network-scripts/ifcfg-eth0 にもDNS設定が欠落していた。
そうしてサーバが名前解決できなくなり、そして /etc/hosts.{allow,deny} で名前解決に頼ったフィルタをしていたため、接続拒否されていたようだ。
ネットワーク設定を戻す。おまけに何度もsshを試したせいでFail2Banにマークされてしまっていたのでunbanしたら復活した。
/etc/sysconfig/networkも書き換わっていたようで、先頭に"# Generated by SolusVM"とある。
修正日が収容ホスト変更があった日になっているので、ホスト側が指定するネットワーク設定が間違っているのだろう。
そういえばこのサーバは最初のセットアップ時からsshが繋がらない欠陥ノードだった。ネットワークが再設定されてその状態に戻っていたのだ。