質問内容を読む限り、構成そのものは正しいのですが、
ルートテーブルの役割と IGW / VGW の違い が混線しているだけです。
⸻
▼ポイントはたった3つ
① IGW と VGW は性質が全く違う
• IGW(Internet Gateway)
VPC の外=インターネットへ出すための出口
→ 0.0.0.0/0 を IGW に向ける
• VGW(Virtual Private Gateway)
オンプレと IPsec VPN でつなぐ専用のゲート
→ VPC ↔ オンプレ間の経路だけをここに向ける
(0.0.0.0/0 は本来 “向けてはいけない” )
⸻
② パブリックサブネットは “IGW に出られる” が本質
パブリックサブネットの定義はこれ↓
自サブネットのルートテーブルに
0.0.0.0/0 → IGW
が存在すること。
VGW があっても関係ない。
IGW 経路を消した瞬間に「パブリックじゃなくなる」。
⸻
③ オンプレへの経路(例:192.168.50.0/20)は VGW へ足すだけ
つまり、正しいルートテーブルの姿は以下のようになる。
⸻
▼【正しい結論】
質問者のケースでは 選択肢⑤が正解 です。
⸻
■ パブリックサブネットのルートテーブル(そのまま)
0.0.0.0/0 → IGW(既存)
192.168.50.0/20 → VGW(追加)
■ プライベートサブネットのルートテーブル
192.168.50.0/20 → VGW
※ IGW は不要
⸻
【理由】
1. IGW 経路(0.0.0.0/0 → IGW)を消したら
「パブリックじゃなくなる」ため絶対消してはダメ。
2. オンプレ向けのルートは 目的ネットワークだけ VGW に送れば良い。
→ 0.0.0.0/0 を VGW に向ける必要は一切なし。
3. AWS で VGW 経由のデフォルトルート配布はできないため
IGW のデフォルトルートを残すしかない。
⸻