🌟 NATインスタンスってなに?簡単に説明するよ!
NAT(ナット)インスタンスは、家の「Wi-Fiルーター」みたいなものだよ🏠✨
家の中にあるいろんなデバイス(スマホやパソコン)が、外のインターネットとやり取りできるのは、このWi-Fiルーターのおかげ。
NATインスタンスも同じように、内部のコンピュータが外の世界(インターネット)と通信できるよう手助けしているんだ🤖
🌐 Internet Gateway との関係
似たような概念で、Internet Gateway とは何が違うんでしょうか?
AWSでは、サブネットごとにインターネット接続の方法が異なります:
接続方法 | 対象サブネット | 特徴 |
---|---|---|
Internet Gateway | パブリックサブネット | パブリックIPを持つインスタンスが直接インターネットにアクセスします。 |
NAT Gateway/NAT Instance | プライベートサブネット | プライベートIPのみのインスタンスが、NATを通してインターネットにアクセスします。 |
🌍 NAT Gatewayとの違い
似たような概念で、NAT GatewayとNAT Instanceは何が違うんでしょうか?
AWSでプライベートサブネットからインターネットに接続する場合、NAT Gateway または NAT Instance を使用します。
どちらを選ぶべきか、それぞれの特徴を見てみましょう。
NAT Gateway
大規模で安定したインフラが必要な場合
- マネージドサービス
- 高可用性と自動スケーリング
- 帯域幅の自動調整
- メンテナンスが不要
- 設定が比較的簡単
- やや高コスト
NAT Instance
コスト重視で、カスタマイズ性を求める場合
- EC2インスタンスベース
- 手動で管理が必要
- インスタンスタイプによる性能制限
- カスタマイズ性が高い
- コスト効率が良い
- セキュリティグループの設定が柔軟
個人開発や検証用環境ならNAT Instanceで十分かもね☺️
🔧 インスタンスをNAT化してみよう
Amazon Linux 2023を使ってNATインスタンスを作ってみよう💪
1️⃣ インターネットを通す「道」を作る
NATインスタンスが、データを中継できるように設定するよ。
sudo sysctl -w net.ipv4.ip_forward=1 | sudo tee -a /etc/sysctl.conf
💡 簡単に言うと
これで、「データを通してもいいよ!」とNATインスタンスに許可するんだ。
2️⃣ 「箱」を作る(テーブルの作成)
次に、データを整理する「箱」を用意するよ。これを テーブル って呼ぶんだ。
sudo nft add table nat
3️⃣ 入ってくるデータを処理する「入り口」を作る
NATインスタンスに届くデータを整理するための「入り口」を用意するよ。
sudo nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
4️⃣ 出ていくデータを処理する「出口」を作る
データを外に送り出すための「出口」を作るよ。
sudo nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
5️⃣ データを外に送るための「ルール」を作る
ここがとっても大事!「マスカレード」という設定をして、内部のコンピュータが一つのIPアドレスを使って外部と通信できるようにするよ。
sudo nft add rule nat postrouting oifname "$(ip -o link show | awk -F': ' '/device-number-0/{print $2}')" masquerade
6️⃣ 今の設定を保存する
ここまでの設定を忘れないようにファイルに保存しよう!
sudo nft list table nat | sudo tee /etc/nftables/al2023-nat.nft
7️⃣ システムに設定を教える
さっき保存した設定をシステムが読み込むように教えてあげるよ。
echo 'include "/etc/nftables/al2023-nat.nft"' | sudo tee -a /etc/sysconfig/nftables.conf
8️⃣ NATインスタンスを「動かす」
設定が終わったら、NATインスタンスをスタートしよう!
sudo systemctl start nftables
9️⃣ システム起動時に自動スタート!
最後に、この設定がコンピュータを再起動しても動くようにするよ。
sudo systemctl enable nftables
🎉 お疲れさま
これで、NATインスタンスが「Wi-Fiルーター」のように働いて、内部のコンピュータが外のインターネットと安全に通信できるようになったよ😊✨