[AWS Client VPN] VPC を経由して固定のIPでインターネットへアクセスする
こんにちは、菊池です。
個人的にホットなAWS Client VPNを掘り下げるシリーズです。前回のエントリで、AWS Client VPNを使って、VPCを経由してインターネットへアクセスする方法を紹介しました。
この検証で、Client VPNを接続すると、VPC内にパブリックIPを持ったネットワークインタフェース(ENI)が作成され、それがSource NATすることでVPC外にアクセスできることがわかりました。
ただ、この構成では、接続毎にENIが作成されるため、接続のたびにIPが動的に変わりますし、複数のクライアントがある場合にはそれぞれ異なるパブリックIPで外部にアクセスすることになります。
そこで今回は、常に固定のパブリックIPでインターネットにアクセスする方法を検証します。そうすることで、常に同じパブリックIPでアクセスしますので、IP制限された環境などにも対応が可能です。
接続構成
構成イメージは以下のようになります。
Client VPNエンドポイントには、プライベートサブネットを関連付けます。一方で、パブリックサブネットにはNAT Gatewayを作成しておき、プライベートサブネットのルートテーブルで、インターネットむけの通信がNAT Gatewayを経由するように制御します。そうすることで、インターネットに出て行く通信のSource IPは、接続クライアントに関わらず、常にNAT Gatewayに割り当てた Elasitc IP(EIP)に固定されます。
環境設定
大まかな手順は以下の通りです。
- パブリックサブネットにNAT Gatewayを作成
- プライベートサブネットのルートテーブルを設定
- Client VPN エンドポイントにプライベートサブネットを関連付け
- Client VPN エンドポイントのルートテーブル、認証ルールを設定
まずは、パブリックサブネットにNAT Gatewayを作成します。ここで割り当てられたElastic IPが、インターネットにアクセスするSource IPになります。
続いて、プライベートサブネットの作成です。プライベートサブネットとは、Internet Gatewayへの直接の経路を持たないサブネットのことを言います。専用のルートテーブルを作成し、宛先0.0.0.0/0へのターゲットを先ほど作成したNAT Gatewayに設定します。プライベートサブネットに設定するサブネットに、そのルートテーブルを割り当てます。
続いて、Client VPN エンドポイントの設定です。エンドポイントの作成そのものは割愛しますので、過去のエントリを参照してください。関連づけるサブネットに、先ほどのプライベートサブネットを指定しています。
Client VPN エンドポイントのルートテーブルに、宛先0.0.0.0/0を設定し、ターゲットサブネットには同様にプライベートサブネットを選びます。
認証ルールの設定です。ルートテーブルと同様に、宛先0.0.0.0/0を追加して許可してあげます。
以上で環境の準備は完了です。
接続確認
それではVPNに接続してみます。接続はこれまでの検証と同様、WindowsのOpenVPNクライアントで実施しています。接続できたら念のため、VPNのネットワークインタフェースを確認しておきます。
それでは、接続元のIPアドレスがどうなっているか、CMANでアクセスしてるIPアドレスを確認します。
NAT Gatewayに割り当てのElastic IPと一致していることが確認できました。
まとめ
AWS Client VPNを使って、固定のパブリックIPでインターネットにアクセスすることができました。IP制限された環境を利用するために、VPNサーバや踏み台を利用している場合には、このサービス・構成を利用することでマネージドサービスに置き換えが可能になります。
AWS Client VPNには、まだまだ活用の幅がありそうなので、どんどん検証していきたいと思います。