Alibaba Cloud の IPv4 Gateway を使ってみました

2022年11月10日掲載

キービジュアル

Alibaba Cloud の仮想サーバ(ECS)からインターネットにアクセスしたい時、セキュリティグループでブロックしていなければ、Elastic IP Address(EIP)をバインドするだけで実現可能になります。これは便利である一方で EIP がバインドされていると、ECS からのインターネットトラフィックに対してルートテーブルによる制御できず、全て EIP を経由してインターネットに抜ける仕様となります。

ECS から一部のインターネットアクセスを禁止したい時、セキュリティグループで実現可能ですが、一部のアクセスはインターネットアクセスを許可しつつ、一部はプロキシサーバを経由させたいという要望もよく聞きます。今までこれは実現できませんでしたが、つい最近リリースされた Virtual Private Cloud(VPC)の「IPv4 Gateway」機能によって、EIP を持つ ECS のインターネットトラフィックでもルーティング制御できるようになりました。例えば、信頼する IPアドレス宛のみ直接 EIP 経由させ、それ以外宛先のトラフィックを一度プロキシにリダイレクトし、チェックさせるソリューションに活用できます。早速利用手順を検証してみたので、この機能の詳細を紹介していきたいと思います。

目次

  • Alibaba Cloud VPC の新機能 IPv4 Gateway を検証します。
  • EIPをもつインスタンスのルーティングの制御ができるようになります。
  • 本記事を読むことで、IPv4 ゲートウェイの機能の基本を理解し、今後の設計に活かすことができます。

概要構成図

今回の検証では、最初に IPv4 Gateway の有効化有無によるルートテーブル制御効果の違いを確認します。次に、IPv4 Gateway を利用した一部のトラフィックが直接 EIP 経由、一部をプロキシ経由させる制御ができるかの検証を行います。今回の検証は、「8.8.4.4」宛のトラフィックをEIP経由させ、「8.8.8.8」宛のトラフィックをプロキシ経由させる構成で行います。

a

構築手順-1:事前準備

中国本土リージョンの場合、IPv4 Gateway 機能を利用する前にホワイトリスト申請が必要ですが、今回検証する東京リージョンは申請する必要がありません。

 

1-1. 下記構成で検証環境の VPC と ECS を作成します。

 

備考

リージョン

東京

 

VPC CIDR

192.168.0.0/16

 

VswitchA CIDR

192.168.0.0/24

 

VswitchB CIDR

192.168.1.0/24

 

ECS-A の IP 情報

EIPあり、192.168.0.1

クライアント機

ECS-B の IP 情報

EIPあり、192.168.1.1

プロキシ

1-2. ルートテーブル A、B を作成し、Vswitch A、B にバインドします。

 

Destination CIDR block

Next hop

Type

ルートテーブル A

192.168.0.0/24

-

System Route

192.168.1.0/24

-

System Route

ルートテーブル B

192.168.0.0/24

-

System Route

192.168.1.0/24

-

System Route

1-3. 今回、インターネットの疎通確認には、Google のパブリック DNS を利用します。

Public IP

CIDR

8.8.8.8

8.8.8.8/32

8.8.4.4

8.8.4.4/32

構築手順-2:IPv4 Gateway 有効化前の疎通確認

IPv4 Gateway を有効化する前に、EIP のみの状態でインターネット通信が可能である一方、ルートテーブルでインターネットアクセスが制御できないことを確認します。

 

2-1. ECS-A から、「8.8.4.4」および「8.8.8.8」へ Ping が通ることを確認します。

1

2-2. ルートテーブル A に、「8.8.8.8/32」向けの通信を ECS-B 経由にするカスタムルートエントリを追加します。

 

Destination CIDR block

Next hop

Type

ルートテーブル A

192.168.0.0/24

-

System Route

192.168.1.0/24

-

System Route

8.8.8.8/32

ECS-B

Custom Route

 

2-3.ECS-A から「8.8.8.8」へ Ping を飛ばし、ECS-B で TCPDUMP コマンドを利用して ICMP トラフィックを確認します。

・ECS-A からのトラフィック(なし)

→2-2 のようにルートテーブルを記述しても、ECS-A から「8.8.8.8」へのトラフィックを ECS-B 経由にできないことが確認できました。

1

構築手順-3:IPv4 Gateway有効化後の検証

IPv4 Gateway を有効化後に、ルートテーブルによってインターネットアクセスが制御可能になることを確認します。

 

3-1.IPv4 Gateway のコンソールに移動し、「Create IPv4 Gateway」をクリックします。

a

3-2. 下記情報を入力し、「Created」をクリックします。

VPC:1-1 で作成した VPC

Name:任意入力

a

3-3. 作成直後の IPv4 Gateway のステータスが「Inactive」ですので、有効化するには「Active」をクリックします。

a

3-4. 注意事項を確認し、「OK」をクリックします。

注意:従来の VPC では IPv4 Gateway がなくてもインターネットアクセスできる仕様ですが、一度 VPC の IPv4 Gateway を有効化すると、その VPC は IPv4 Gateway へのルーティングがないとインターネットにアクセスできない仕様に変わってしまい、もとに戻す方法(IPv4 Gateway を無効にする)がありません。

a

 

3-5. ECS-A から、「8.8.4.4」へ Ping を飛ばし、Ping が通らないことを確認します。

3-6. ECS-A から、「8.8.8.8」へ Ping を飛ばし、ECS-B で TCPDUMP コマンドを利用して ICMP トラフィックを確認します。

・ECS-A から dns.google へのリクエスト(あり)

・dns.google から ECS-A への応答(なし)

→ルートテーブル A の記述の通り、ECS-A から「8.8.8.8」へのトラフィックを ECS-B 経由にできたことが確認できました。

→一方で、ルートテーブル B にはインターネット向けのルーティング情報はありません。「8.8.8.8」から ECS-A への応答が無かったことから、ECS-B からインターネットにアクセスできなかったこと、つまりインターネット向け通信が制御されたことが確認できました。

構築手順-4:IPv4 Gateway 経由のインターネット疎通確認

IPv4 Gateway を有効化後に、ルートテーブルに IPv4 Gateway 経由のルーティングを追加し、EIP 経由通信が可能になるかを確認します。

 

4-1. ルートテーブルAに、「8.8.4.4/32」向けのルートが IPv4 Gateway を経由するカスタムルートエントリを追加します。

 

Destination CIDR block

Next hop

Type

ルートテーブル A

192.168.0.0/24

-

System Route

192.168.1.0/24

-

System Route

8.8.8.8/32

ECS-B

Custom Route

8.8.4.4/32

IPv4 Gateway

Custom Route

 

4-2. 「8.8.4.4」へ疎通可能になったことを確認します。

1

構築手順-5:プロキシ経由のインターネット疎通確認

上記の構築手順 3 で ECS-A のトラフィックがプロキシに到達しましたが、まだインターネットを抜けていません。最後に、下記 3 点を設定し、ECS-A がプロキシ経由でインターネットを抜ける手順を検証します。

  • ルートテーブル B で IPv4 Gateway 向けのルーティング設定
  • ECS-B でトラフィック転送の有効化設定
  • IPv4 Gateway で ECS-A のトラフィックを ECS-B 経由させる設定

5-1. ルートテーブル B に、「8.8.8.8/32」向けのルートを IPv4 Gateway 経由するカスタムルートエントリを追加します。

 

Destination CIDR block

Next hop

Type

ルートテーブル B

192.168.0.0/24

-

System Route

192.168.1.0/24

-

System Route

8.8.8.8/32

IPv4 Gateway

Custom Route

 

5-2. ECS-B の「/etc/sysctl.conf」に「net.ipv4.ip_forward=1」を追加し、トラフィック転送の有効化をします。

1

5-3. ルートテーブルコンソールを開き、「Create Route Table」をクリックします。

 

5-4. 下記情報を入力し、「OK」をクリックします。

VPC:1-1 で作成した VPC

Associated Resource Type:Border Gateway

Name:任意入力

a

5-5. 「IPv4 Gateway」のインスタンスIDをクリックします。

a

5-6. 「Bind」をクリックします。

a

5-7. 下記情報を入力し、「OK」をクリックします。

Route Table: 5-4 で作成したルートテーブル

a

5-8. ルートテーブルバインド完了後に、デフォルトルートエントリが表示されます。「192.168.0.0/24」右側の「Edit」をクリックします。

1

5-9. 下記情報を入力し、「OK」をクリックします。

Next Hop Type:ECS Instances

ECS Instances: ECS-B

Name: 任意入力

5-10. ECS-A から、「8.8.8.8」へ Ping を飛ばし、ECS-B で TCPDUMP コマンドを利用して ICMP トラフィックを確認します。

  • ECS-A から dns.google へのリクエスト(あり)
  • dns.google から ECS-A への応答(あり)

まとめ

今回は、VPC の新機能である IPv4 Gateway の有効化有無により、トラフィック流れの違いを比較し、そして指定 IPアドレス 宛のみプロキシ経由させる検証もやってみました。

新機能の嬉しい点は、IPv4 Gateway が ECS と EIP の間に入ることで、ルートテーブルの仕様が理解しやすくなりました。特に今までは難しかった、宛先に応じて EIP を経由させたりプロキシ経由させるようなケースは、実現可能になり、ルートテーブル設計の手間を省くことができました。もしインターネットトラフィック制御のニーズがありましたら、本記事を参考にしてみてください。

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません