グローバルアドレスを利用するデータセンターとVPC接続する際の注意

こんにちは。肺炎にかかってしまい1週間ほど寝込んでいた森(@mosuke5)です。
今日は、自分自身もまったく知らなかったVPCのルーティングに関する知識を共有したいと思います。グローバルアドレスを利用するネットワークとVPCを接続する際に役立つTipsになります。

VPCのルートテーブルについて

VPCにはその中枢的な存在であるVRouterがあります。VRouterはVPC内のすべてのVSwitchと接続し、VPC と他のネットワークを接続するためのゲートウェイデバイスとしても働きます。VRouter は、特定のルートエントリ設定に基づいてネットワークトラフィックを転送するための「ルートテーブル」を保持しています。このルートテーブルを利用することで、特定のトラフィックだけを別のネットワークへ転送することなどが可能になります。

ルートテーブルの利用例として、VPC Peeringをご紹介します。
下記図のように2つのVPCがあり、VPC間をVPNを通して接続したいとします。
この場合、ルートテーブルにVPC Bのアドレスレンジ(192.168.2.0/24)向けの通信をVPN Gateway Aへ転送すると設定することで、VPNを通してVPC AとBが通信できるようになります。

実際のユースケースと問題

大抵の場合は上記のような設定で事が済むのですが、実際のユースケースで接続先のネットワーク(オンプレデータセンター)にグローバルIPアドレスが利用されているケースがありました。グローバルIPアドレスへのルーティングを行うにはいくつかテクニックがあるのでご紹介します。

簡易的に書くと、下記のような状況でした。
データセンター側でグローバルアドレス(ここでは仮で50.0.0.0/24)を利用しており、Alibaba CloudのVPN Gatewayを利用して接続を行っています。Alibaba Cloudの仮想サーバAからデータセンターの物理サーバAにたいしてVPN経由で直接接続するため、ルートテーブルを設定を行いました。
しかし、仮想サーバAから物理サーバAまでpingを飛ばしても届きませんでした。理由は、ルートテーブルに設定したが、どういうわけかルートテーブルを無視しインターネット向けにパケットが流れたためでした。(理由と解決策はこれから説明します)


なぜルートテーブルを無視してインターネット向けにパケットが流れてしまったのか。これはAlibaba Cloudの仕様であり、中国のインターネット規制に対応するものでした。つまり、グローバルアドレス向けの通信をユーザサイドで不用意にルーティングすることを避けるためにグローバルアドレス向けのルーティングテーブルの設定は基本的に無視するようになっているのです。

UserCidrというオプション

それでは、データセンタ側でグローバルアドレスを利用している場合、Alibaba Cloudは利用することができないのでしょうか。
この問題を解消する方法として「UserCidr」というVPCのオプションを用意しています。現状、VPCを作成時に、API経由でしか付与することができないのですが、こちらのUserCidrにデータセンタ側で利用しているグローバルアドレスを設定しておくことで、ルートテーブルの無視を回避することができます。

最後に

グローバルアドレスを利用するネットワークとVPCを接続する際の注意点についてまとめました。日本人からすると、一見理解しづらい仕様になっていることもあるのですが、中国のインターネットの規制が背景にあり、また解消するすべはきちんと用意しているのがAlibaba Cloudです。
Alibaba Cloudでも安心してデータセンター接続や他クラウドネットワークと接続ができるのでやっていきましょう。

この記事をシェアする