Network Load Balancer のリスナー - Elastic Load Balancing

Network Load Balancer のリスナー

リスナーとは、設定したプロトコルとポートを使用して接続リクエストをチェックするプロセスです。Network Load Balancer の使用を開始する前に、1 つ以上のリスナーを追加する必要があります。ロードバランサーにリスナーがない場合、クライアントからのトラフィックを受信できません。リスナーに対して定義したルールにより、EC2 インスタンスなど、登録するターゲットにロードバランサーがリクエストをルーティングする方法が決まります。

リスナーの設定

リスナーは次のポートとプロトコルをサポートします。

  • プロトコル: TCP、TLS、UDP、TCP_UDP

  • ポート: 1 ~ 65535

アプリケーションがビジネスロジックに集中できるように、TLS リスナーを使用して、暗号化および復号の作業をロードバランサーに任せることができます。リスナープロトコルが TLS の場合は、リスナーに SSL サーバー証明書を 1 つだけデプロイする必要があります。詳細については、「サーバー証明書」を参照してください。

ターゲットがロードバランサーではなく TLS トラフィックを復号化する必要がある場合は、TLS リスナーを作成する代わりに、ポート 443 に TCP リスナーを作成できます。TCP リスナーを使用すると、ロードバランサーは暗号化されたトラフィックを復号化せずにターゲットに渡します。

同じポートで TCP と UDP の両方をサポートするには、TCP_UDP リスナーを作成します。TCP_UDP リスナーのターゲットグループは、TCP_UDP プロトコルを使用する必要があります。

Dualstack Network Load Balancer の場合、サポートされているプロトコルは、TCP と TLS だけです。

リスナーで WebSockets が利用できます。

設定済みのリスナーに送信されるすべてのネットワークトラフィックが、意図されたトラフィックとして分類されます。設定済みのリスナーに一致しないネットワークトラフィックが、意図しないトラフィックとして分類されます。Type 3 以外の ICMP リクエストも、意図しないトラフィックとみなされます。Network Load Balancer は、意図しないトラフィックをターゲットに転送せずにドロップします。新しい接続またはアクティブな TCP 接続の一部ではない設定済みリスナーのリスナーポートに送信される TCP データパケットは、TCP リセット (RST) で拒否されます。

詳細については、Elastic Load Balancing ユーザーガイドのルーティングのリクエストを参照してください。

リスナー属性

Network Load Balancer のリスナー属性を以下に示します。

tcp.idle_timeout.seconds

TCP アイドルタイムアウト値 (秒単位)。有効な範囲は 60~6,000 秒です。デフォルト値は 350 秒です。

詳細については、「アイドルタイムアウトを更新する」を参照してください。

リスナールール

リスナーを作成するときは、ルーティングリクエストのルールを指定します。このルールは、指定されたターゲットグループにリクエストを転送します。このルールを更新するには、「Network Load Balancer のリスナーを更新する」を参照してください。

セキュアリスナー

TLS リスナーを使用するには、ロードバランサーにサーバー証明書を少なくとも 1 つデプロイする必要があります。ロードバランサーはサーバー証明書を使用してフロントエンド接続を終了してから、ターゲットにリクエストを送信する前に、クライアントからのリクエストを復号します。ロードバランサーが復号化せずに、暗号化されたトラフィックをターゲットに渡す必要がある場合は、TLS リスナーを作成するのではなく、ポート 443 で TCP リスナーを作成します。ロードバランサーは、リクエストを復号化せずにそのままの状態でターゲットに渡します。

Elastic Load Balancing は、セキュリティポリシーと呼ばれる TLS ネゴシエーション設定を使用して、クライアントとロードバランサー間の TLS 接続をネゴシエートします。セキュリティポリシーはプロトコルと暗号の組み合わせです。プロトコルは、クライアントとサーバーの間の安全な接続を確立し、クライアントとロードバランサーの間で受け渡しされるすべてのデータのプライバシーを保証します。暗号とは、暗号化キーを使用してコード化されたメッセージを作成する暗号化アルゴリズムです。プロトコルは、複数の暗号を使用し、インターネットを介してデータを暗号化します。接続ネゴシエーションのプロセスで、クライアントとロードバランサーでは、それぞれサポートされる暗号とプロトコルのリストが優先される順に表示されます。サーバーのリストで最初にクライアントの暗号と一致した暗号が安全な接続用に選択されます。

Network Load Balancer は、TLS 再ネゴシエーションまたは相互 TLS 認証 (mTL) をサポートしていません。mTLS をサポートするには、TLS リスナーの代わりに TCP リスナーを作成します。ロードバランサーはリクエストをそのまま渡すため、ターゲットに mTL を実装できます。

関連するデモについては、Network Load Balancer での TLS サポートおよび Network Load Balancer での SNI サポートを参照してください。

ALPN ポリシー

Application-Layer Protocol Negotiation (ALPN) は、初期 TLS ハンドシェイク hello メッセージで送信される TLS 拡張機能です。ALPN を使用すると、アプリケーションレイヤーは HTTP/1 や HTTP/2 などのセキュアな接続上で使用するプロトコルをネゴシエートできます。

クライアントが ALPN 接続を開始すると、ロードバランサーはクライアントの ALPN 設定リストを ALPN ポリシーと比較します。クライアントが ALPN ポリシーからのプロトコルをサポートしている場合、ロードバランサーは ALPN ポリシーの設定リストに基づいて接続を確立します。それ以外の場合、ロードバランサーは ALPN を使用しません。

サポートされている ALPN ポリシー

サポートされている ALPN ポリシーは次のとおりです。

HTTP1Only

HTTP/1.* のみをネゴシエートします。ALPN 設定リストは http/1.1、http/1.0 です。

HTTP2Only

HTTP/2 のみをネゴシエートします。ALPN 設定リストは h2 です。

HTTP2Optional

HTTP/2 よりも HTTP/1.* を優先します (これは HTTP/2 テストに役立ちます)。ALPN 設定リストは http/1.1、http/1.0、h2 です。

HTTP2Preferred

HTTP/1.* よりも HTTP/2 を優先します。ALPN 設定リストは、h2、http/1.1、http/1.0 です。

None

ALPN をネゴシエートしないでください。これがデフォルト値です。

ALPN 接続を有効にする

TLS リスナーを作成または変更するときに、ALPN 接続を有効にできます。詳細については、リスナーの追加およびALPN ポリシーの更新を参照してください。