この記事の目次
AWSのNAT gatewayとは
AWSのNAT gatewayとは、プライベートネットワークに設定した複数のインスタンスやAWSのサービスに、特定のIPアドレスを介してインターネットから接続できるようにしてくれるサービスです。
AWSのNAT gatewayの使い方を説明する前に、NATとは何かについて解説します。
NATとは
今回紹介するAWS NAT gatewayのNATとはNetwork Address Translationの略で、日本語に翻訳するとネットワークアドレス変換です。
インターネットの通信に使われるTCP/IPプロトコルでは、通信データのヘッダにIPアドレスが含まれており、そのIPアドレスがあることで瞬時に送信先に送られます。
通信経路の途中にNATを適用すると、通信データのヘッダに含まれるIPアドレスを別のIPアドレスに置き換えることが可能です。
具体的にNATはプライベートネットワークに繋がった複数のコンピュータを、1つのIPアドレスでインターネットにアクセスする際に利用されます。
プライベートネットワークとは
先ほどのプライベートネットワークとは、インターネットで使われることが無いIPアドレスを割り振り、直接インターネットに接続していないサブネットのことです。
インターネットに接続するコンピュータは必ずユニークなIPアドレスを割り振らなければなりません。しかし直接インターネットに接続しないサブネットもあります。そのようなサブネットでは専用のIPアドレスが割り振られます。
もし、インターネットで使われることが無いIPアドレスとインターネットに接続できるIPアドレスを変換できれば、1つのIPアドレスで複数のコンピュータをインターネットに接続できます。
そしてNATはこのようにプライベートネットワークに接続したコンピュータをインターネットに接続するための技術です。
NATの例
NATの例としてよく挙げられるネットワーク機器がWiFiルータです。WiFiルータは、有線LANに接続した1つのIPアドレスを使い、無線で接続した複数のパソコンやスマホ、ゲーム機などをインターネットに接続します。
なおWiFiルータは無線で接続した機器にIPアドレスを自動的に割り振ります。さらにこの割り振るIPアドレスはインターネットに直接繋がるIPアドレスではありません。プライベートネットワーク用のIPアドレスです。
WiFiルータはNATの機能を持っており、プライベートネットワーク用のIPアドレスをインターネットに繋がるIPアドレスに変換するので、WiFiに繋がった機器はインターネットに接続できます。
AWS NAT gatewayの機能
AWS NAT gatewayの機能は、AWSのプライベートネットワークに設置されたコンピュータのIPアドレスをインターネットから利用できるIPアドレスへの変換です。そしてAWS NAT gatewayを利用するには時間単位の使用料金とデータ処理料金が適用されます。
次からAWS NAT gatewayの機能について紹介します。
1つのElastic IPアドレスに関連付ける
AWS NAT gatewayは、作成時に1つのインターネットから直接アクセスできるIPアドレス、具体的にAWSのElastic IPアドレスに関連付けします。なおElastic IPアドレスは、有償で利用できるインターネットからアクセスできるIPアドレスで、AWSのインスタンスの1つが割り当てされることもあります。
AWSのインスタンスにはAWSの内部ネットワークでのみ使えるIPアドレスが割り当てられますが、AWSの内部ネットワークは外部と閉ざされており、インターネットからアクセスできません。そこでインターネットに公開用のIPアドレスとしてElastic IPアドレスと関連付けします。
今回紹介しているAWS NAT gatewayは、1台のインスタンスが使うはずの1つのElastic IPアドレスを複数のインスタンスやAWSのサービスを利用するための仕組みです。
料金の仕組み
AWS NAT gatewayは、時間単位料金とデータ処理料金の2つの料金を合計した金額が請求されます。このうち時間単位料金は有効になってから1時間当たりで計算されます。またデータ処理料金は1Gバイトのデータが通過した毎に適用されます。
AWS NAT gatewayを通過するデータとは
AWS NAT gatewayは、インターネットに公開されたIPアドレスとAWSのアベイラビリティーゾーン内に作成されたサブネットを接続するための仕組みです。そのためインターネットからサブネットにアクセスする全てのデータがAWS NAT gatewayを通過します。
ただし、その通過データがAWSの外からアクセスされたデータとは限りません。もしサブネットがあるアベイラビリティーゾーン以外に設置されたAWSのサービスを利用している場合、別の経路を設定していないとそのデータもAWS NAT gatewayを通過します。
そのためサブネットをどこに設置するか、また、AWSのどのサービスを利用するかをチェックしてルーティングテーブルを設定していないと、予想外に高い料金を請求される可能性があるので注意してください。
AWS NAT gatewayの料金見直しのポイント
AWS NAT gatewayの料金が高すぎる場合、ルーティングテーブルの見直しがポイントです。まずはどんな通信データが通過しているかを検討し、その中でも大きな通信データを別の経路に分けられないかを検討してください。
次から料金見直しの考え方について解説します。
AWSのサービスへのアクセスをチェック
AWS NAT gatewayを通過するデータに、Amazon S3のようなAWSのサービスへのアクセスによるデータが含まれていないかチェックしてください。
なおAWS NAT gatewayを通過するデータをチェックする際、VPCフローログを使用します。そしてCloudWatchを利用することで、詳しい情報を取得することが可能です。もしAWSのサービスを利用するデータが多い場合は、別の経路を作成することで料金を節約できます。
ゲートウェイVPCエンドポイントを設定する
AWSでは、サブネットに作成したインスタンスからAWSのクラウド内に用意されているサービスに接続する際、インターネットに公開することなくゲートウェイVPCエンドポイントを設定することで接続できます。
さらにゲートウェイVPCエンドポイントを設定しても料金は発生しません。AWSのクラウド内の通信のため無料で利用できます。
特に注意して欲しいサービスが、AWSのクラウドストレージのAmazon S3です。もしAmazon S3へのデータ保存によるデータ送信がAWS NAT gatewayを経由しているのなら、ゲートウェイVPCエンドポイントへの変更を検討してください。
負荷の高いインスタンスに別のIPを割り振る
もしAWS NAT gatewayを通過するデータが特定のインスタンスに集中しているのなら、そのインスタンスに別のIPアドレスを割り振ることで料金が安くなります。具体的には負荷の高いインスタンスにインターネットゲートウェイを適用してください。インターネットゲートウェイを設定しても料金は発生しません。
ただし、インターネットゲートウェイを利用するには、AWS NAT gatewayに設定したIPアドレスとは別のIPアドレスが必要です。また、インターネットゲートウェイ毎にセキュリティ対策などを設定しなければなりません。
AWS NAT gatewayの料金を見直しするには
AWSのクラウドを活用するメリットとして、インスタンスの稼働状況を詳しくチェックでき、それに基づいていつでも構成の見直しが可能な点も挙げられます。
もしAWS NAT gatewayの料金が高く見直しが必要なら、通過するデータを詳しく解析し、通過量の多いデータを別の経路に移す設定を検討してください。
ただしその場合、AWS NAT gatewayの仕組みの仕組みと別の経路を設定する方法を知らなければなりません。もし社内にAWSに詳しいエンジニアがいない場合は、AWSの有料サポートサービスの活用も検討してください。