VPN Gateway でSSL-VPN を使用する#3 ネットワークの話

Alibaba Cloud VPN Gateway についてネットワーク視点で色々と確認した結果をまとめました。

1. Alibaba CloudからVPNクライアントへの通信

Alibaba Cloud VPN Gateway のSSL-VPN機能を利用することで、オンプレミスのホストからVPC 上のECSへ接続出来ることがすでに確認出来ています。

今回は逆方向の通信を確認します。

  1. ECS からVPNクライアントへのPing
  2. VPN クライアントでのパケットの見え方

1.1. ECS からVPN クライアントへのPing

Alibaba Cloud ECS 上のWindows Server 2019 からVPNクライアントへPing を実行します。

1.1.1. VPNでアサインされたIPアドレス宛のPing

まずはVPNから割り当てられた”172.16.0.6″への通信をテストします。

応答があります。 当たり前では?と思われるかもしれませんが、VPN サーバの仕様によっては既定でこの方向の通信をブロックすることもあるので今回確認しました。

1.1.2. Real IP アドレス宛のPing

参考までにVPNクライアントのReal IP (Windows 10 が実際のもっているIPアドレス)とPublic IP (Windows 10 からインターネットにアクセスする際のIP。ISPからルータに付与されたIP)への通信もテストしてみます。

まずは、Real IP 宛のPingからテストします。 応答はありません。

1.1.3. Public IP 宛のPing

これは応答があるわけがないのですがテスト。結果、応答はありません。

1.2. VPN クライアントでのパケットの見え方

VPN クライアント側でパケットキャプチャを行い、IPアドレスのSource がどのIPアドレスとなっているのか確認します。 VPN GatewayでSource NATがかかるとVPN Gateway がもつIPアドレスになりますし、NATされなければECS のもつプライベートIPアドレスになるはずです。

しかし、Wireshark にてVPNトンネルにより作成されたインターフェースを認識できず、VPN クライアント側ではキャプチャ出来ず。 

代替策として、ECSからVPNクライアントへSMBで接続します。 VPNクライアントのPort 445にECSの10.10.10.20 から接続されたことを確認出来ました。

結果、VPNクライアントとAlibaba Cloud VPC 上のホストはNATされずに通信していることが確認出来ました。

2. VPN 接続中のスプリット

SSL-VPN でトンネルを確立後、Alibaba Cloud 宛ての通信は、トンネル側にルーティングされることはわかっています。 それ以外の通信はどうなるのか確認します。

2.1. ルートテーブルの確認

まずはVPNクライアント側のルートテーブルを確認します。

上記から

  • Alibaba Cloud 宛て(10.10.10.0/24)は 172.16.0.5 (VPN Gateway のもつIPでしょう)へルーティング
  • それ以外はもともとのReal IP のDefault の192.168.0.1 へルーティング

となることがわかります。

従って、VPN トンネルを確立した状態でもスプリットしてインターネットにアクセスすることが出来るということです。

2.2. 通信テスト

一応、確認します。 問題なくインターネット上のAlibaba Cloud のWeb サイトにアクセスすることが出来ました。

2.3. Alibaba Cloud 側の設定

なお、Alibaba Cloud 側のネットワークは以下で設定しています。

VPN Server のSSL サーバーの設定のローカルネットワークです。

試しにローカルネットワークに”192.168.100.0/24”を追加します。

一度、VPNを切断し、接続します。(一度切断しないとルーティングは変わらず)

VPN クライアント側のルーティングを確認します。 追加した”192.168.100.0/24″はVPN Gateway(172.16.0.9)へルーティングするようになりました。

この設定の使いどころは、Alibaba Cloud 側で複数のVPC を接続しているケースです。 今回はExpress Connect の環境が手元に無いためテストは行いませんが、以下のように上海リージョンのVPC のCIDR が”192.168.100.0/24″ の場合、VPN Gateway 側のローカルネットワークに”192.168.100.0/24″ を追加することで上海まで通信することが可能になります。

2.4. スプリットしたくない場合

すべての通信をAlibaba Cloud 側にルーティングしたい場合、一般的なVPNの場合、VPNクライアント側の機能や設定になります。

OpenVPN GUI のマニュアルを見るかぎり、config.ovpn に以下の設定を記載するだけのようです。(1.2.3.4 は適宜書き換え)

route-nopull
route 1.2.3.4

テストしようと思ったのですが、パケットキャプチャが使えないため確認のしようがありません。 Ailbaba Cloud 側でもキャプチャは出来ないですし。

3. まとめ

今回、以下のことがわかりました。

  • Alibaba Cloud 側からVPN クライアント側への通信は制限されていない
  • Alibaba Cloud とVPN クライアントはNATされずにそれぞれのIPで通信する
  • ルーティングを適宜変更(実際にはVPN Gateway のローカルネットワークの追加)することで直接接続していないAlibaba Cloud のVPCへも接続出来る
  • VPNクライアント側でスプリットすることもしないことも可能

今回テスト出来ておらず気になるところは以下でしょうか。別の機会にてすとしてみます。

  • MTUサイズ 
  • VPNクライアントのセグメントとVPC側のセグメントを同じに出来るか(ルートモードでは無くブリッジモード)
  • VPNクライアントのReal IPアドレスのセグメントとVPNから割り当てるセグメントを同じにした場合の挙動(失敗するに決まっているのですが)