AWS無料枠を使って当ページを作っています。
人の真似でサクッと出来上がると思ったのですが、https化で苦労しました。
結果から伝えると、なんてことないセキュリティグループの開放漏れでしたが、こんなとこで躓くやつがいるんだな!という感じで記事にします。
ちなみに、インストール・ELB・証明書などのhttps化までの設定は真似事で完了しましたので、そこは割愛します。
原因
EC2の初期使用の段階で、default というセキュリティグループ名が登録されています。
今回、ELBを作った際にセキュリティグループを適用するのですが、defaultを適用してしまったのが、駄目だったようです。
駄目というか、defaultはインバウンドルールは全拒否で、アウトバウンドルールは全許可という設定だったため、外部からのアクセスがインバウンドルールによって拒否されていることが原因でした。
試したこと
DNS周りを調べる
とりあえず名前解決できるか確認。
ドメインはお名前ドットコムで取得しているので、DNSをAWSへ振っています。
以下nslookupのサイトを使って、正引き逆引きできるかチェックしました。
ドメインを入力します。

すると結果がでます。
普通にバレますがIPはマスクします。


結果は、ちゃんとAWSのDNSからIPアドレスが伝搬されていることが確認できました。
IPアドレス直打ちで試す
ブラウザでIPアドレス直打ちします。
結果は、タイムアウト。
※エンジニアなら、ここで原因に気付けって話ですが、端くれは気づけません。
Route53のAレコードをElasticIPに戻す
ELBに向けていたAレコードをElasticIPに戻します。
ElasticIPにhttpアクセスしたところ、正常に当サイト表示された。
再びELBに書き換えると、やっぱり繋がらない。
ELBを作り直す
ELBを一旦削除して作り直しましたが、もちろん変わらず。
リスナーを作り直す
リスナーで、httpとhttpsを登録してますので、ここだ!っと意気込んで見るも無惨に分からず、なので削除して作り直すも変わらず。
セキュリティグループを見直す
真似事だとこうなることはわかっていました。
悩んだすえ、やっとセキュリティ周り?と気づく。
使っているものでセキュリティと言えば、リスナーかセキュリティグループと当たりをつけ、AWSの公式サイトを見に行きます。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-security-group.html
セキュリティグループのデフォルトルールは以下であるらしい。

実際の設定がこちら


全許可で問題ないなさそうだが、送信元がアウトバウンドは0.0.0.0でインバウンドのsgってなってるな。
普通に考えれば、sgを送信元とするものだけ許可されてるってことなので、セキュリティグループ内の送信元に制限されてるってことになる。
確認のため、WordPress Certified by Bitnami and Automatticをインストール時に作られたセキュリティグループをクリックしてみると、httpとhttpsが0.0.0.0で許可されてるようです。

これか。
解決策
セキュリティグループ作る
セキュリティグループを作成する。
インバウンドアウトバウンド共に0.0.0.0を送信元オールANYのグループを作る。


ELBのセキュリティグループを新規グループに再適用。
解決
無事アクセスできるようになりました!
この件の解決まで3日ほど掛かりました。
こういうことが起きるから、事前調べは必要ということはわかるが、なにぶんめんどくさいので、今後も真似事を増やしていく予定。
コメント