状況
Linux VM を昨日削除し、同じ名前・同じ設定で作り直した。手元の PC で ~/.ssh/config に書いてある IP へ ssh すると、しばらく待ってから Connection timed out になる。ポータルのブート診断では、OS が起動してログイン待ちの画面まで出ている。
原因を調べる順番として、最も適切なものは?
- AVM を再デプロイする
- BNSG の受信セキュリティ規則(ポート 22 と送信元 IP)
- C接続先が、作り直した VM の現在のパブリック IP か
- DVM 内の sshd の設定と authorized_keys
- Eゲスト OS のファイアウォール(ufw など)
正答
- A → C → B → E → D
- D → E → B → C → A
- C → B → E → D → A
- C → D → E → B → A
解説
VM を作り直すと新しいパブリック IP が割り当てられ、アドレスが変わることが多い。手元の設定は古い IP のままなので、ポータルで現在の IP を見るだけの C を最初に確かめる。タイムアウトは応答が返らない、つまりパケットが途中で捨てられている症状で、次に疑うのは Azure 側の NSG(B)、その次にゲスト OS のファイアウォール(E)。NSG はポータルや IP フロー検証で外から確かめられるが、ゲスト OS はシリアルコンソールなどで中に入る必要があるので後にする。sshd が止まっていれば通常は Connection refused、鍵の不一致なら Permission denied になるので、IP の次に sshd を疑う(C → D …)のは遠回りで、D はさらに後。OS は起動済みと分かっている。再デプロイは別のホストへ移し、一時ディスクの内容も失うので最後の手段。
この問題を含む Azure のテストを制限時間つきで解く
Azureクイズへ