AWS/プライベートサブネットにEC2をたてる(VPNクライアント編)

前回はVPNサーバー構築まで行いました。

vpn%e6%a7%8b%e6%88%90

今回はVPNクライアントからプライベートサブネット上のサーバへアクセスしてみます。

VPNサーバーの設定とプライベートサブネット上のサーバー設定を復習しておきましょう。

031

プライベートサブネット上のサーバ

032

VPNサーバの方

クライアントVPNのインストールと接続

クライアントからこのプライベートサブネット上のサーバへ接続してみます。
そのためにはクライアントマシン側にVPNクライアントソフトが必要です。
インストールしましょう。

http://www.softether-download.com/ja.aspx?product=softether

033

上記サイトからインストーラをダウンロードしてインストールしてください。
インストールが完了したらクライアントを立ち上げください。

クライアントが起動したら
上部メニュー > 仮想LAN > 新規仮想LANカードの作成 を行います。

036

適当に名前をつけます。

037

Windowsに仮想LANがインストールされ、ネットワーク接続のコントロールパネル上に新たに登録されます。

VPNクライアントソフトの方に戻り、
「新しい接続設定の作成」を選択します。

034

接続設定名、ホスト名(IPアドレス)、ユーザー/パスワードを入力しましょう。
VPNサーバ側にきちんと接続できていれば仮想HUB名も自動的にセットされます。

035

接続が作成されたらダブルクリックしてみましょう。接続が確立し、タスクバーのVPNクライアントのアイコンが点滅しだせば成功です。

038

クライアントのWindowsマシンからpingを打ってみましょう。

039

届きました。目的達成です!

問題点

VPN接続完了!
と、言いたいところですがこのままでは1つ問題があります。

コマンドラインからroute printコマンドを打つと下記のように表示されます。

一番上の宛先が「0.0.0.0」となっている箇所に注目してください。
VPN接続してしまうと、ゲートウェイがVPNのサーバ側である「192.168.30.1」に置き換わってしまいました。

このままだとルートテーブルに設定されていないアドレスに対して、すべてVPNサーバーを経由することになります。

040

※タスクマネージャーで仮想LAN、物理LANの通信量を確認できます。

この状態でたとえばあるクライアントが重たいWEBサイトや動画を開いたりするとVPNサーバーのパフォーマンスに影響します。
そしてもう1点、AWSの場合グローバルIP宛てに接続してきた通信に対しては1G単位毎に利用料が別途発生します(VPNサーバーはインターネット間の通信をグローバルIPで通信しているのでこれに該当します)。
経費節約のためにも何とかしましょう!

041

まず、VPNサーバー管理者側としてはこのような通信を認めないため、VPNサーバーからのアウトバウンド通信を該当のサブネット宛てのみ許可するように設定します。
※この設定を応用すればVPNサーバを悪意のある第3者からの踏み台サーバとして利用されることを防ぐことにも役立ちます。ただし、アウトバウンド側を絞る際のリスクもあります。詳しくはこのページの文末を参照ください。

しかし、このままではクライアントがVPNクライアントで接続を確立している時にはインターネットができない/その他のネットワークのサーバに繋げないという事態が発生します。そこでルーティングを少し工夫する必要があります。

クライアントマシンのネットワーク接続設定をいじります。

Windowsのネットワーク接続から先ほど作成した仮想LANカードのプロパティを開きます。

042

IPv4のプロパティを選択します。

043

詳細設定を開きます。

044

インターフェイスメトリックの値をVPNを接続していない状態でのデフォルトゲートウェイ設定よりも高い値に設定します。

045

デフォルトゲートウェイのメトリックはVPN接続を切断している状態でコマンドラインからroute printコマンドで確認してください。一番右の値です。

これでブラウザによりgoogleやYahooなどにアクセスした場合にはデフォルトのゲートウェイ向けで通信がされるようになります。

しかし、このままだとVPN接続を確立してもAWSのプライベートサブネットに接続できなくなってしまいました。なぜなら、VPNクライアントを経由せずデフォルトゲートウェイを見に行ってしまっているからです。

そこでSoftEtherサーバ側の設定でルーティングをクライアントへ指示するよう設定します。

SoftEther VPNサーバー管理マネージャを開き、該当のVPNサーバーへ接続。
仮想HUBの管理 > 仮想NATおよび仮想DHCPサーバ機能 > SecureNATの設定 > プッシュする静的ルーティングテーブルの編集へと進みます。

048
ここに該当のサブネットへのルーティング設定を追記しましょう。

クライアントマシン側に戻り、VPN接続を確立後、route printコマンドを実行すると以下のようになります。

通常のゲートウェイが優先で、VPN接続先のサブネットへのルーティングもちゃんと追加されています。

046

クライアントマシンからpingコマンドを実行すると接続できることが確認できます。

また、ブラウザから外部アドレスへのアクセスも問題ないことを確認しておきます。

https://www.google.co.jp
問題なくグーグル様のページが開きましたでしょうか?

以上でVPN接続の基本的な設定が終わりました。
少し長い記事になってしまいましたが何かのお役に立てれば幸いです。

アウトバウンド側のセキュリティを絞るリスクについて

ちなみに、VPNサーバに対してアウトバウンドのセキュリティを絞るとこのVPNサーバをNATインスタンスとしても使いたい場合、うまく動かなくなるケースがあります。たとえば、プライベートサブネット上のEC2からyum update/installする際などのHTTPアクセスができなくなります。ポートの絞り込みには十分注意してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です