EC2は性能や構成を色々と選択できる自由度の高い仮想マシンサービスですが、CentOS6を複数NIC接続にした時に私がハマったことを書きたいと思います。大まかにですが、次のような流れで操作を行っていました。
2.各種パッケージのアップデートやサービス設定
3.NIC追加
4.再起動
5.あれ? インターネット経由でSSH接続できない?
3.のNIC追加はAWSの管理コンソールから追加するだけの操作です。管理コンソールからNICを追加・接続し、SSHから再起動を行ったわけです。
すると、再度SSH接続をしようとしてもできないという現象が起きました。
このEC2インスタンスはVPCを利用し、インターネット側NICとプライベート側NICの2つのセグメントに接続させるようにする予定でした。 そこで、プライベート側の他のインスタンスからSSH接続を試みたところ接続できたので、調査することにしました。結果…
原因 デフォルトゲートウェイが勝手にプライベート側に設定されていた
どうもEC2でNICを後付けしようとすると、設定ファイルを編集しないままではこうなるようです。
routeコマンドで表示されるデフォルトゲートウェイがプライベート側になっていたため、そのためにインターネット側への接続ができずにいたのです。 VPCのプライベートセグメントはNATインスタンスを経由しないとインターネットアクセスができないようになっているため、プライベートセグメントのゲートウェイ(=NATインスタンスではない)をデフォルトゲートウェイにしてもダメ…ということです。
これはVPCのプライベートセグメントであれば当然の話で、そもそもプライベートセグメントのゲートウェイはインターネットへの経路情報を持っていません。だからNATインスタンスという、プライベートセグメント専用のインターネットゲートウェイ的なインスタンスを作成する必要があるのです。
解決策は単純で、プライベート側NICの設定ファイル(ifcfg-ethX)に次の行を追加するだけでした。
DEFROUTE=NO
こうすることで、プライベート側のゲートウェイを勝手にデフォルトゲートウェイにしてしまう事象を防げるわけです。
CentOSだけの現象かは未確認ですが、LinuxインスタンスにNICを後付けしたらSSH接続できない場合はもしかするとこれが原因となっているかもしれませんね。