インフラ

EC2で502 Bad Gatewayが出る原因としてVPCを疑ってみる

投稿日:

はじめに

これは頭ぱやぱやな自分への切実なメモです。
宜しくお願い致します。

 

そもそも502 Bad Gatewayって何?

直訳すると「不正なゲートウェイです」になりますけど、こっちは普通に表示されるもんだと思っているので「ゲートウェイのせいやで!」とか言われても知らんがなーという気持ちにしかならないんですよねマジ。

しかし、ステータスコードは別に嘘をついている訳ではないのでちゃんと何を言おうとしているか理解すべく、寄り添ってあげるとしましょう……。

 

レスポンスが受信出来てない

端的に解釈すると、リクエストを送信したクライアントが、リクエストを処理するサーバからレスポンスを受信出来てないよ~ということだと思っています。
つまり、

あなた「なぁ https://example.sujico.netのページを表示してくれよ」
example.sujico.net「……(ガン無視)」

これが502 Bad Gatewayです。
ステータスコードで知れるのはここまでで、後のトラブルシューティングは自分で行う必要があります。
アプリケーション側の問題かも知れませんし、ネットワークの問題の可能性もあります。

 

トラブルシュートしてみよう

EC2に到達するまでの経路を整理しよう

なんかよく分かんないけど、EC2でWebアプリケーションをデプロイして公開しているのに
アクセスできなーい!てか絶対アタイのアプリのせいじゃないしぃ、という時はまずリクエストがEC2に辿り着くまでに何を経由しているかを整理してみましょう。

例えば、
① [Route53] - [EC2]
② [Route53] - [CloudFront] - [EC2]
③ [Route53] - [CloudFront] - [ALB] - [EC2]

 

セキュリティグループはどうだった?

②や③のように、EC2のフロントに何らかのリソースが介している場合、ありがちな凡ミスとしてセキュリティグループの設定があります。
例えばそのEC2、検証中だからといって特定のIPアドレスからのみ80/443ポートを許可していたりしませんか?
その特定のIPアドレスは自分が開発しているローカルネットワークのゲートウェイですか?
リクエストを送った時、リクエスト元IPアドレスはEC2に到達するまでの間に変わる可能性はありませんか?

例えば②③の場合は、EC2から見たときのリクエスト元IPはCloudFrontやALBになります。
そしてあなたのゲートウェイアドレス(真のリクエスト元IP)は、XFFの中にあるはずです。

EC2は少なくともCloudFront、もしくはALBのVPC側のインタフェースからの接続を許可されていなければリクエストを受け取ることが出来ません。

つまり、セキュリティグループお前だな!!!ということになります。

 

ネットワークACLは?

セキュリティグループを直しても改善されないという場合でも、まだVPC周りで確認するところはあります。
ネットワークACLです。
ネットワークACLでインバウンド、アウトバウンドの設定は適切ですか?
先ほどと同様の理由ですが、リクエスト元IPは本当に許可されていますか?デフォルトの状態なら、ネットワークACLは全許可状態になっている筈ですが、検証の為に誰か触ったりしてませんか?
設定しているならそれはそれでいいですが、本当に適切な設定かどうかを確認する必要はあると思います。

 

ルートテーブル及びインターネットゲートウェイも確認!

そのVPCのルートテーブルは!本当にインターネットに接続出来る状態になってますか!?!?
いや、0.0.0.0/0の設定はルートテーブルにありますが……と言う前に!
インターネットゲートウェイは設定されていますか!?!?
誰かが設定後に誤って削除したりしていると、状態はBlackholeとかになってたりするのでよく見てね!?!?!?

 

おわりに

頭ぱやぱやな私は、次に502 Bad Gatewayになったらまずこのページを見てください。
宜しくお願いします。

-インフラ
-, ,

Copyright© すじこネット , 2019 - 2021 All Rights Reserved Powered by STINGER.