Gateway Load Balancer (GWLB) を使用して、ファイアウォールや侵入検知システムなどのサードパーティ製ネットワーク仮想アプライアンス (NVA) を設定、スケーリング、および管理できます。このトピックでは、IPv4 トラフィックを検査するために、GWLB インスタンスと対応する GWLB エンドポイントを迅速に設定する方法について説明します。
シナリオ例
セキュリティと信頼性を向上させるため、ある企業では、インターネットからのインバウンド IPv4 トラフィックを、アプリケーションサーバーに到達する前にネットワーク仮想アプライアンス (NVA) へルーティングしてセキュリティ検査を行います。この企業は GWLB を使用して NVA を管理し、すべてのトラフィックがアプリケーションサーバーに分散される前に厳格な検査を確実に受けるようにします。このトピックでは、企業が Alibaba Cloud アカウントを使用して China (Ulanqab) リージョンにビジネス VPC とセキュリティ VPC を作成する例を説明します。
-
ビジネス VPC はアプリケーションシステムをホストし、インターネット宛てのトラフィックを NVA にルーティングするための IPv4 ゲートウェイを含みます。
ビジネス VPC には、アプリケーションサーバー vSwitch と GWLB エンドポイント vSwitch が作成されます。アプリケーションサーバー vSwitch には、アプリケーションサーバーとして機能する ECS インスタンスが作成され、そのインスタンスにアプリケーションサービスがデプロイされます。GWLB エンドポイントは GWLB エンドポイント vSwitch に作成されます。
-
セキュリティ VPC は NVA をホストします。
セキュリティ VPC には GWLB インスタンスが作成され、そのバックエンドサーバーグループに NVA が追加されます。また、セキュリティ VPC にはエンドポイントサービスも作成され、GWLB インスタンスがサービスリソースとして追加されます。
GWLB エンドポイントとエンドポイントサービスが接続されると、インターネットからのトラフィックを NVA にルーティングして検査できるようになります。
|
インバウンドトラフィックフロー (黒矢印) |
アウトバウンドトラフィックフロー (緑矢印) |
|
|
制限事項
-
少なくとも 1 つの NVA が実行中である必要があります。
-
バックエンドサーバーのセキュリティグループで、ポート 6081 の UDP トラフィックを許可する必要があります。
-
エンドポイントサービスを作成するときは、PrivateLink と GWLB インスタンスの両方をサポートするリージョンとアベイラビリティゾーンを選択する必要があります。PrivateLink と GWLB インスタンスをサポートするリージョンとアベイラビリティゾーンの詳細については、「PrivateLink をサポートするリージョンとアベイラビリティゾーン」および「GWLB をサポートするリージョンとアベイラビリティゾーン」をご参照ください。
-
GWLB エンドポイントのアベイラビリティーゾーンは、エンドポイントサービスのアベイラビリティーゾーンのサブセットである必要があります。
前提条件
-
ビジネス VPC とセキュリティ VPC が作成済みです。ビジネス VPC のアベイラビリティーゾーン B には、アプリケーションサーバー vSwitch と GWLB エンドポイント vSwitch が作成済みです。セキュリティ VPC のアベイラビリティーゾーン B には、GWLB vSwitch が作成済みです。詳細については、「VPC と vSwitch の作成」をご参照ください。
-
IPv4 ゲートウェイが作成・有効化されており、ビジネス VPC に関連付けられています。詳細については、「IPv4 ゲートウェイの作成と管理」をご参照ください。
-
IPv4 ゲートウェイ、アプリケーションサーバー vSwitch、および GWLB エンドポイント vSwitch 用のルートテーブルが作成済みです。詳細については、「ルートテーブルの作成と管理」をご参照ください。
-
アプリケーションサーバー用の ECS インスタンスがビジネス VPC に作成されており、そのインスタンスにアプリケーションサービスがデプロイされています。ECS インスタンスがインターネットと通信する必要がある場合は、インスタンスにパブリック IP アドレスを割り当てる必要があります。セキュリティ VPC のアベイラリティーゾーン B に、ECS インスタンス ECS01 と ECS02 が作成されており、各インスタンスにネットワーク仮想アプライアンス (NVA) のイメージがデプロイされています。ECS01 および ECS02 インスタンスがジャンボフレームをサポートしていることを確認してください。Geneve カプセル化は、元のパケットに 68 バイトを追加するため、パケットサイズが 1,500 バイトを超える可能性があります。詳細については、「最大伝送単位 (MTU)」をご参照ください。
-
ジャンボフレームをサポートするインスタンスタイプの詳細については、「ジャンボフレームをサポートするインスタンスファミリー」をご参照ください。
-
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
-
NVA イメージのデプロイ方法の詳細については、「インスタンスからのカスタムイメージの作成」をご参照ください。
-
-
アプリケーションサーバーの ECS インスタンス、ECS01、および ECS02 用のセキュリティグループが作成済みです。ビジネス要件とセキュリティ要件に基づいて、セキュリティグループルールを設定できます。詳細については、「セキュリティグループの作成」をご参照ください。
操作手順
ステップ 1:Gateway Load Balancer (GWLB) インスタンスの作成
インスタンスはロードバランシングサービスの実体です。まず GWLB インスタンスを作成する必要があります。
-
Gateway Load Balancer コンソールにログインします。
-
トップナビゲーションバーで、GWLB インスタンスを作成するリージョンを選択します。
-
インスタンス ページで、作成 をクリックします。
-
[Gateway Load Balancer] 購入ページで、次のパラメーターを設定します。
このセクションでは、関連するパラメーターのみを説明します。その他のパラメーターはデフォルト値を使用します。パラメーターの詳細については、「GWLB インスタンスの作成と管理」をご参照ください。
パラメーター
説明
インスタンス名
インスタンスの名前を入力します。
[VPC]
インスタンスが所属するセキュリティ VPC を選択します。
リージョンとゾーン
インスタンスが所属するリージョンを選択します。この例では、[China (Ulanqab)] を選択します。
ゾーン
少なくとも 1 つのアベイラビリティーゾーンを選択します。この例では、[Ulanqab Zone B] と、このアベイラビリティーゾーンで GWLB インスタンスが使用する vSwitch を選択します。
IP バージョン
インスタンスの IP バージョンを選択します。この例では、[IPv4] を選択します。
サービスリンクロール
初めて GWLB インスタンスを作成する場合は、[サービスリンクロールの作成] をクリックして AliyunServiceRoleForGwlb という名前のサービスリンクロールを作成します。
説明このパラメーターは、初めて GWLB インスタンスを作成する場合にのみ表示されます。
-
[今すぐ購入] をクリックし、画面の指示に従って支払いを完了します。
-
インスタンス ページに戻り、リージョンを選択して新しいインスタンスを表示します。
ステップ 2:バックエンドサーバーグループの作成
GWLB によって転送されたクライアントリクエストを受け入れるには、サーバーグループを作成し、バックエンドサーバーを追加する必要があります。
-
左側のナビゲーションペインで、を選択します。
-
サーバーグループ ページで、サーバーグループの作成 をクリックします。
-
サーバーグループの作成 ダイアログボックスで、サーバーグループのパラメーターを設定し、作成 をクリックします。
このセクションでは、関連するパラメーターのみを説明します。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
[タイプ]
サーバーグループタイプを選択します。この例では、サーバータイプ を選択します。
[名前]
サーバーグループの名前を入力します。
[VPC]
VPC ドロップダウンリストから、ECS インスタンスがデプロイされている VPC を選択します。
説明選択した VPC が、GWLB インスタンスの作成時に選択した VPC と同じであることを確認してください。
[スケジューリングアルゴリズム]
スケジューリングアルゴリズムを選択します。この例では、5 次元ハッシュ を選択します。
[ヘルスチェック方法]
ヘルスチェックメソッドを選択するか、ヘルスチェックを無効にします。この例では、TCP を選択します。
[ヘルスチェックポート]
ヘルスチェックポートを入力します。この例では、ポート 80 を使用します。
-
サーバーグループを作成しました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバー タブで、追加 をクリックします。
-
バックエンドサーバーの追加 パネルで、サーバータイプ を選択します。
この例では、サーバータイプを ECS/ENI に設定します。
-
作成した ECS01 と ECS02 インスタンスを選択し、OK をクリックします。
説明-
この例では、サーバータイプを ECS/ENI に設定します。
-
バックエンドサーバーに NVA イメージがデプロイされており、Geneve トラフィックを処理できることを確認してください。
-
ステップ 3:リスナーの設定
インスタンスのリスナーを設定し、バックエンドサーバーグループに関連付けて、Geneve プロトコルを介してすべてのポートからのトラフィックをバックエンドサーバーに転送します。
-
ナビゲーションペインで、 を選択し、インスタンスのIDをクリックします。
-
リスナー タブをクリックし、IP リスナーの作成 をクリックします。
-
IP リスナーの作成 設定ページで、タイプ を選択し、作成したサーバーグループを選択します。
-
追加されたサーバーのリストがページに表示されます。OK をクリックします。
ステップ 4:エンドポイントサービスの設定
サービスプロバイダーは、GWLB が外部にサービスを提供できるように、エンドポイントサービスを使用する必要があります。
-
PrivateLink コンソールにログインします。
-
エンドポイントサービス ページで、エンドポイントサービスの作成 をクリックします。
-
エンドポイントサービスの作成 ページで、エンドポイントサービスに次の情報を設定し、OK をクリックします。
ここでは、このトピックに関連する設定のみを記載します。
パラメーター
説明
[リージョン]
この例では、[中国 (ウランチャブ)] を選択します。
[サービスリソースタイプ]
エンドポイントサービスのサービスリソースタイプです。この例では、[GWLB] を選択します。
[サービスリソースの選択]
サービスリソースのアベイラビリティーゾーンと、そのアベイラビリティーゾーン内のサービスリソースを選択します。
この例では、アベイラビリティーゾーンを ウランチャブゾーン B に設定します。ゾーン B のサービスリソースは、ステップ 1 で作成した GWLB インスタンスです。
[IP バージョン]
この例では、IPv4 を選択します。
[エンドポイント接続を自動で許可]
エンドポイントからの接続リクエストを自動的に承諾するかどうかを選択します。この例では、はい を選択します。
説明この機能を有効にすると、エンドポイントが作成された後、エンドポイントサービスは自動的に接続リクエストを承諾します。
[サービスの支払人]
この例では、[サービスコンシューマ] を選択します。
ステップ 5: GWLB エンドポイントの設定
サービスコンシューマーとして、エンドポイントサービス に接続するための GWLB エンドポイントを作成します。
-
PrivateLink コンソール にログインします。
-
エンドポイント ページで、インターフェース タブをクリックし、次に エンドポイントの作成 をクリックします。
-
エンドポイントの作成 ページで、次の情報でエンドポイントを設定し、OK をクリックします。
ここでは、このトピックに関連性の高い設定のみを記載します。
パラメーター
説明
[リージョン]
この例では、[China (Ulanqab)] を選択します。
[エンドポイント名]
エンドポイントの任意の名前を入力します。
[タイプ]
エンドポイントのタイプを選択します。この例では、GWLB が選択されています。
[エンドポイントサービス]
この例では、まず利用可能なサービスの選択をクリックし、次にステップ 4 で作成したエンドポイントサービスを選択します。
[VPC]
エンドポイントが属する VPC を選択します。この例では、ビジネス VPC の ID を選択します。
[ゾーン | vSwitch]
エンドポイントサービス に対応するアベイラビリティゾーンを選択し、そのゾーン内の vSwitch を選択します。システムは、vSwitch 内にエンドポイント Elastic Network Interface (ENI) を自動的に作成します。
この例では、アベイラビリティゾーンを [Ulanqab Zone B] に設定し、ゾーン B の GWLB エンドポイント vSwitch の ID を選択します。
[IP バージョン]
この例では、IPv4 が選択されています。
説明エンドポイントの接続ステータスが「接続済み」になっていることを確認してください。
ステップ 6:ルートの設定
サービスコンシューマーとして、トラフィックを Gateway Load Balancer エンドポイントに転送するようにルートを設定します。
-
VPC コンソールにログインします。
-
左側メニューで、ルートテーブル をクリックします。
-
上部メニューで、ルートテーブルがあるリージョンを選択します。
-
ルートテーブル ページで、対象のルートテーブルの ID をクリックします。
説明対象のルートテーブルには、IPv4 ゲートウェイのルートテーブル、アプリケーションサーバー vSwitch のルートテーブル、および Gateway Load Balancer エンドポイント vSwitch のルートテーブルが含まれます。これらを 1 つずつ設定します。
-
ルートテーブルの詳細ページで、[ルートエントリリスト] タブをクリックし、システムルート をクリックして、システムルートエントリを表示します。
システムは、次のシステムルートをカスタムルートテーブルに自動的に追加します:
宛先 CIDR ブロックが、ルートテーブルのある VPC 内の vSwitch の CIDR ブロックと一致するルートエントリ。このルートは、vSwitch 内のクラウドリソース間の通信に使用されます。
-
IPv4 ゲートウェイのルートテーブル内のシステムルートエントリを変更するには、 タブで対象のシステムルートエントリを見つけます。操作 列で、編集 をクリックします。ルートエントリの編集 ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。ルートエントリはカスタムルートエントリとして表示されます。
パラメーター
説明
[ターゲット CIDR]
トラフィックを転送するための宛先 CIDR ブロックです。ターゲット CIDR は変更できません。この例では、宛先 CIDR ブロックは 192.168.2.0/24 です。
[名前]
ルートエントリの名前を変更します。
[ネクストホップの種類]
ネクストホップタイプを選択します。この例では、[Gateway Load Balancer エンドポイント] が選択されます。
[GWLB エンドポイント]
ステップ 5 で作成した GWLB エンドポイント を選択します。
-
アプリケーションサーバー vSwitch および Gateway Load Balancer エンドポイント vSwitch のルートテーブルを設定する際にカスタムルートエントリを追加するには、カスタムルート をクリックし、宛先 CIDR ブロックとネクストホップタイプを入力して、OK をクリックします。
-
アプリケーションサーバー vSwitch のルートテーブルを設定する際は、宛先 CIDR ブロックを 0.0.0.0/0 に、ネクストホップタイプを Gateway Load Balancer エンドポイントに設定したカスタムルートエントリを作成します。
-
Gateway Load Balancer エンドポイント vSwitch のルートテーブルを設定する際は、宛先 CIDR ブロックを 0.0.0.0/0 に、ネクストホップタイプを IPv4 ゲートウェイに設定したカスタムルートエントリを作成します。
-
-
IPv4 ゲートウェイのルートテーブル設定
IPv4 ゲートウェイのルートテーブルには、アプリケーションサーバー宛てのトラフィックを Gateway Load Balancer エンドポイントに転送するルートエントリが必要です。次の表に、IPv4 ゲートウェイのルートテーブル設定の例を示します。
宛先 CIDR ブロック
ネクストホップタイプ
ルートエントリタイプ
192.168.5.0/24
ローカル
システム
192.168.2.0/24
Gateway Load Balancer エンドポイント
カスタム
-
アプリケーションサーバー vSwitch のルートテーブル設定
アプリケーションサーバー vSwitch のルートテーブルには、アプリケーションサーバーからのすべてのトラフィックを Gateway Load Balancer エンドポイントに転送するルートエントリが必要です。次の表に、アプリケーションサーバー vSwitch のルートテーブル設定の例を示します。
宛先 CIDR ブロック
ネクストホップタイプ
ルートエントリタイプ
192.168.2.0/24
ローカル
システム
192.168.5.0/24
ローカル
システム
0.0.0.0/0
Gateway Load Balancer エンドポイント
カスタム
-
Gateway Load Balancer エンドポイント vSwitch のルートテーブル設定
Gateway Load Balancer エンドポイント vSwitch のルートテーブルは、検査から返されたトラフィックを最終的な宛先にルーティングする必要があります。インターネットからのトラフィックの場合、ローカルルートによってトラフィックがアプリケーションサーバーに確実に到達します。アプリケーションサーバーから発信されるアウトバウンドトラフィックの場合、すべてのトラフィックを IPv4 ゲートウェイに転送するルートエントリを追加する必要があります。次の表に、Gateway Load Balancer エンドポイント vSwitch のルートテーブル設定の例を示します。
宛先 CIDR ブロック
ネクストホップタイプ
ルートエントリタイプ
192.168.2.0/24
ローカル
システム
192.168.5.0/24
ローカル
システム
0.0.0.0/0
IPv4 ゲートウェイ
カスタム
ステップ7:設定の検証
接続性のテスト
アプリケーションサーバーの ECS インスタンスにログインし、次のコマンドを実行してインターネットへの接続性をテストします。
ping www.aliyun.com
継続的な応答は、接続テストが成功したことを示します。
次のコードは、サンプル出力を示しています。
[xxx@xxx ~]# ping www.aliyun.com
PING www.aliyun.com.w.cdngslb.com (180.213.xxx.xxx) 56(84) bytes of data.
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=1 ttl=53 time=15.4 ms
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=2 ttl=53 time=13.5 ms
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=3 ttl=53 time=13.5 ms
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=4 ttl=53 time=13.5 ms
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=5 ttl=53 time=13.7 ms
64 bytes from 180.213.xxx.xxx (180.213.xxx.xxx): icmp_seq=6 ttl=53 time=13.5 ms
セキュリティ検査のテスト
ECS01 または ECS02 にログインし、次のコマンドを実行してポート 6081 のすべてのパケットをキャプチャします。
tcpdump -i any port 6081
コマンド出力にアプリケーションサーバーの ECS インスタンスからのリクエストと応答データが表示された場合、GWLB がセキュリティ検査のためにトラフィックを NVA に正常にルーティングしたことになります。
次のコードは、サンプル出力を示しています。
[root@xxx ~]# tcpdump -i any port 6081
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
15:15:49.578469 IP 10.0.10.16.57480 > xxx.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 192.168.2.123.ssh > wan.adventz.com.43200: Flags [S.], seq 980244545, ack 540151794, win 29200, options [mss 1460], length 0
15:15:49.578482 IP xxx.57480 > 10.0.10.16.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 192.168.2.123.ssh > wan.adventz.com.43200: Flags [S.], seq 980244545, ack 540151794, win 29200, options [mss 1460], length 0
15:15:49.610110 IP 10.0.10.16.55139 > xxx.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 192.168.2.123 > 180.213.xxx.xxx: ICMP echo request, id 16612, seq 17, length 64
15:15:49.610116 IP xxx.55139 > 10.0.10.16.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 192.168.2.123 > 180.213.xxx.xxx: ICMP echo request, id 16612, seq 17, length 64
15:15:49.625531 IP 10.0.10.16.55139 > iz0jl8dnd7ratzjksyin3z.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 180.213.xxx.xxx > 192.168.2.123: ICMP echo reply, id 16612, seq 17, length 64
15:15:49.625535 IP xxx.55139 > 10.0.10.16.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP 180.213.xxx > 192.168.2.123: ICMP echo reply, id 16612, seq 17, length 64
15:15:49.797614 IP 10.0.10.16.60600 > iz0jl8dnd7ratzjksyin3z.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP ptr.default.58593 > 192.168.2.123.tproxy: Flags [S], seq 1189139317, win 65535, length 0
15:15:49.797625 IP xxx.60600 > 10.0.10.16.6081: Geneve, Flags [C], vni 0x0, options [32 bytes]: IP ptr.default.58593 > 192.168.2.123.tproxy: Flags [S], seq 1189139317, win 65535, length 0