VPCで混乱しがちな「IGW」と「NAT GW」。名前は似ていますが役割が違います。初心者向けに、違いをはっきりさせます。
インターネットゲートウェイ(IGW)
VPCをインターネットに接続するための出入口です。VPCに1つアタッチします。
- 双方向: 外へ出ることも、外から入ることもできる(設定次第)
- パブリックサブネットのEC2に「パブリックIP」を付け、ルートテーブルで
0.0.0.0/0 → IGWにすると、インターネットと直接通信できる
Webサーバのように「外部からアクセスされたい」ものは、IGW経由で公開します。
NATゲートウェイ(NAT GW)
プライベートサブネットのサーバが、外へ出るためだけの出口です。
- 片方向: 内から外へは出られるが、外から内へは入れない
- パブリックサブネットに置き、プライベートサブネットのルートを
0.0.0.0/0 → NAT GWにする
用途は、プライベートなサーバが「パッケージ更新やAPI呼び出しで外に出たいが、外部からは隠しておきたい」場合です。オンプレのNAPTと同じ発想で、外部からは中が見えません。
何が違うのか(一言で)
- IGW: 公開したいもの用。双方向。
- NAT GW: 隠したいけど外に出たいもの用。内→外の一方向。
典型的な構成
パブリックサブネット
├─ Webサーバ(IGW経由で公開)
└─ NATゲートウェイ
プライベートサブネット
└─ DB/APサーバ(NAT GW経由で外へ出るだけ、外からは入れない)
Webは公開、DBは隠す。でもDBもたまに外部へ出たい(更新など)。この要求を、IGWとNAT GWの組み合わせで実現します。
注意点
- NAT GWは、パブリックサブネット側に置く(そこがIGWで外に繋がっているから)
- NAT GWは従量課金。台数と通信量でコストがかかる点に注意
- 冗長化するなら、AZごとにNAT GWを置く
まとめ
IGWは「公開用の双方向ゲート」、NAT GWは「隠しつつ外に出るための一方向ゲート」。この役割分担が、パブリック/プライベート設計の要です。「外から入れたいか、内から出したいだけか」で使い分けると、迷わなくなります。