0.はじめに
「パブリックサブネット」「プライベートサブネット」というサブネットの分類というのは、そもそもそういった設定があるのではなく、各サブネットが持つ役割をベースとした概念の俗称です
また、記事内でも誤った認識がある、現在時点では既に解釈が変わっている可能性があるのでご注意ください。
その場合はコメントでご指摘頂けますと幸いでございます。
記事はAWSでの利用を前提とした内容となっています。ネットワーク全般としては誤った内容である可能性もあります。
1.パブリックサブネットの定義
「パブリックサブネット」
ルートテーブルでデフォルトゲートウェイへの通信がインターネットゲートウェイへ接続されているサブネットの総称です
各用語についても解説していきます
「ルートテーブル」
ルートテーブルは、外への通信を行う際にどういった経路で通信を流すか定義したテーブルのことです。
どのIPアドレスへの通信に対して、どういった経路を用いて接続を試行するか定義する事ができます。
「デフォルトゲートウェイ」
宛先が分からない通信に対してルートされるゲートウェイの名称です。
個別でルーティングが設定されているルーティング(xxx.xxx.xx.xx宛てはyyy.yyy.yy.yyに飛ばす)以外の宛先の通信は全てデフォルトゲートウェイへ転送される事になります。
AWSの場合は「0.0.0.0」(すべてのトラフィック)というルートテーブルの設定を加える事でデフォルトゲートウェイの設定が可能となります。
一般大多数のドメインへの接続、プライベートネットワーク外、インターネット上への接続すべてがこの「0.0.0.0」のルートテーブルを用いてルーティングされる事になります。
「インターネットゲートウェイ」
VPCとインターネット間の接続を可能とするVPCコンポーネントです。AWSリソースの中でも可用性、冗長性が非常に高く、ネットワークトラフィックに帯域制限が掛けられることは無いとされています。
VPCネットワークとインターネットを接続する門のようなものだと認識して頂ければ大丈夫です。
つまりパブリックサブネットとは、事前に定義されていない宛先への通信(外部への通信)に対して、インターネットゲートウェイへ接続するようにルートテーブルで定義されたサブネットの事を指しています。
2.プライベートサブネットの定義
パブリックサブネットに対して、プライベートサブネットはデフォルトゲートウェイがインターネットゲートウェイに接続されていないサブネットの総称になります。
ただプライベートサブネット上にあるリソースでもインターネットへOUTの通信をする必要がある事は多々あります。
OUTの通信ができないのであれば、インターネットへの接続ができないため外部からデータを取得したり、外部ライブラリのインストール、リポジトリへの接続ができなくなります。
そこでNATゲートウェイの出番となります。
「NATゲートウェイ」
NAT ゲートウェイは、ネットワークアドレス変換 (NAT) サービスです。 NAT ゲートウェイを使用すると、プライベートサブネット内のインスタンスは VPC 外のサービスに接続できますが、外部サービスはそれらのインスタンスとの接続を開始できません。
NATゲートウェイはインターネットゲートウェイと違い、OUTの通信のみを通すため、外部への接続は可能とし、外部から内部への接続は受け付けません。
そのため、外部からの接続が想定されるサーバー(ロードバランサーや、FTPサーバー、直接的に接続を受けるウェブサーバー等)を除いて、基本的にはプライベートサブネットに配置するべきです(データベースサーバー、ロードバランサーのターゲットとなるウェブサーバー、バッチサーバー等)
3.まとめ
パブリックサブネットと、プライベートサブネットはルートテーブルによる接続先がインターネットゲーウェイである事、それ以外である事で分類されます。
また、インターネットゲートウェイは、外部から内部への通信を許可するため、原則としてパブリックサブネットに配置されたリソースはインターネット上からアクセスを受け付ける事が可能となります
(インターネットゲートウェイのネットワークACLを駆使して、トラフィックを制限する事は可能です)
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html
一方でプライベートサブネットで一般的に使用されるNATゲートウェイは、外部へのトラフィックのみを許可するため、セキュリティ的な担保は可能ですが、AWSの料金としては圧倒的にNATゲートウェイの方が高価となります
(インターネットゲートウェイが原則としてそのものに課金が発生しないため)
リソースやセキュリティ要件によって、柔軟に配置する先のサブネットを切り替えましょう。