はじめに

AWSにてOpenVPNを構築する機会がありましたので、冗長構成の設定方法と簡易的な切り替えテストをやってみたいと思います。

今回冗長構成の切り替えテストがメインのため、OpenVPNサーバーと各種証明書の作成方法に関しては割愛させていただきます。

構成情報

AWS

EC2

OS:RHEL9

OpenVPNサーバーバージョン:2.6.9

OpenVPNクライアントバージョン:3.4.3

構成図

冗長構成設定方法

今回AWSで作成するためまず1台vpnサーバーを作成後、AMIを取得し、そのAMIからリストアして2台目のvpnサーバーを作成します。こうすることで同一の証明書にてアクセスできるvpnサーバーが2台できましたので、次は再起動等した時にパブリックIPが変わってしまうことを避けるためにElastic IPを付与します。

今回メイン機とサブ機のIPを以下のように定義します。

メインvpnサーバーIPアドレス:x.x.x.x

サブvpnサーバーIPアドレス:y.y.y.y

OpenVPNクライアントファイルにはメイン機のIPを上に記載し、その下にサブ機のIPを記載します。

(今回使用ポートをTCP443で指定していますが、特に意味はないのでデフォルトでも大丈夫です。)

remote x.x.x.x 443
remote y.y.y.y 443

以上でOpenVPNの冗長構成の設定は完了です。

切り替えテスト

まずは普通にvpn接続を開始すると、OpenVPNクライアントファイルの上に記載されているメイン機に接続されます。

OpenVPNクライアントのログよりメイン機のIPで接続されたことを確認

次にメイン機のインスタンスを停止させ、メイン機→サブ機に切り替わることを確認します。

メイン機のインスタンスを停止後、OpenVPNクライアントのログよりメイン機にてネットワーク転送エラーが出ていることを確認

上記エラー後再接続イベントにてサブ機に切り替わることを確認

メイン機→サブ機の切り替えを確認できましたので、次はメイン機を開始後サブ機を停止させ、サブ機→メイン機に切り替わることを確認します。

メイン機を開始し(この時点ではまだvpnはサブ機に接続されたままです。)、その後サブ機を停止します。

サブ機のインスタンスを停止後、OpenVPNクライアントのログよりサブ機にてネットワーク転送エラーが出ていることを確認

上記エラー後再接続イベントにてメイン機に切り替わることを確認

おわりに

今回OpenVPNの冗長構成の作成から簡易的な切り替えテストまでを実施しました。

切り替えテストでは0.07秒ほどで切り替わることが確認できました。

OpenVPNで冗長構成を組む際は参考にしてみてください。