AWS Client VPN設定のハマりどころ

AWS Client VPNが東京リージョンでも使えるようになりましたね。
これでVPNサーバを立てる手間が減らせるので、費用面は考慮しつつうまく活用していきたいですね。
今回はClient VPNを検証した際に設定でわかりにくかった箇所があったので備忘録として残しておきたいと思います。

Client VPN設定方法

設定方法については、AWSのドキュメントやブログで色々出ていますのでそれを参照して設定してください。
クライアント VPN の使用開始 - AWS Client VPN
[AWS]踏み台をワンチャンなくせる!?VPC接続にClient VPNを使ってみよう | DevelopersIO

構成

以下の構成で検証しました
f:id:cloudfish:20190725123039p:plain

ハマったポイント

設定後にClient端末からSSHが通らない

VPNは正常に接続できるものの、SSH接続ができない状態となりました。
ルーティングについてはドキュメント通りに設定しており、NACLについては特に設定していませんでした。
セキュリティグループについては、VPCE、EC2のSGそれぞれで以下のとおりClientのCIDR範囲を許可していました。
■SG_VPCE

Port Source
22 192.168.0.0/16

■SG_EC2

Port Source
22 192.168.0.0/16

設定に問題がないか再確認しつつ、切り分けのためにいったんそれぞれのSGを0.0.0.0でフル解放してSSH接続してみました。
結果は接続が成功し、secureログで接続元のIPを確認すると、172.31.16.xxxとなっておりClientVPNのVPCEndpointのIPであることが分かりました。
Client VPNでの接続については、Client端末の接続がVPCEndpointのIPでNatされるようなので、Client端末のIPをSGで許可しても意味がありませんでした。

上記を踏まえて、以下のようにSGを設定しました。
■SG_VPCE

Port Source
22 192.168.0.0/16

■SG_EC2

Port Source
22 SG_VPCE

Client端末からインターネット接続できない

SSH接続ができない問題を対応中に、Client端末からインターネット接続をしようとしましたがドキュメントどおりの設定ではインターネット接続ができないようになっていました。
ルーティング設定かと考え、0.0.0.0/0を追加しましたが接続できませんでした。
もう少し調べたところ、承認設定に0.0.0.0/0を追加が必要になることがわかったので、設定したところVPN接続しながらインターネット接続ができるようになりました。

まとめ

AWS ClientVPNはサーバをきどうする必要もないため手軽に起動できますが、承認設定のような概念が分かりづらい設定もあり少し引っかかりました。トータルではサーバの面倒を見る必要がないという大きなアドバンテージがあるので積極的に活用していきたいと思います。