AWSの料金面での落とし穴といえば、通信料ですよね。東京リージョンであれば0.114USD/GBなので、1TBのデータをAWSから引き出すと1万円以上かかってしまいます。
しかし、例外なのがLightsailです。一番安いプラン(3.5USD)でも1TBの通信料が含まれているため、多量の通信でも気にせずに利用することができます。そこで、VPNサーバをLightsail上に立ててみることにしました。
環境
- Lightsail Linux 3.50USDプラン(512 MB メモリ)
- Amazon Linux 2 (2.0.20201218.1)
- SoftEther VPN Ver4.34 Build 9745
Linuxサーバーの構築
SoftEtherはWindowsで構築するのが手っ取り早いのですが、費用の関係上Linuxを使います。サーバを起動させる手順は省略します。
サーバー起動後、インスタンスのネットワーキング設定の中にあるIPv4Firewallを以下のように設定しました。
SoftEtherのインストール
Linux上にSoftEtherをインストールする手順については、Qiitaですでにインストール手順がありましたので、そちらを参考にします。
wgetで拾ってくるURLは、以下のダウンロードセンターで手に入ります。
https://www.softether-download.com/ja.aspx?product=softether
sudo yum install gcc -y
wget <SoftEtherダウンロードのURL>
tar xzvf <ダウンロードしたファイル>
cd vpnserver
make
makeコマンドを実行すると、利用規約に同意するか確認する画面が現れます。すべて、1を押してEnterすることで同意できます。
makeコマンドが完了すると、SoftEtherが利用できる状態になります。/usr/local配下に移動させ、パーミッションを設定します。
cd ../
sudo mv vpnserver/ /usr/local/
cd /usr/local
sudo chown -R root:root vpnserver
cd vpnserver
sudo chmod 600 *
sudo chmod 700 vpncmd
sudo chmod 700 vpnserver
SoftEtherVPNをサービスに登録し、起動します。
sudo vi /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Type=forking
RestartSec=3s
[Install]
WantedBy=multi-user.target
sudo systemctl start vpnserver
sudo systemctl enable vpnserver
SoftEtherの初期設定
ここからはクライアントPC側で操作します。GUI操作を使うため、Windowsが必要です。
以下のURLより、SoftEther VPN Server Managerをインストールします。
https://www.softether-download.com/ja.aspx?product=softether
Managerよりサーバーに接続後、設定する点は以下です。
ユーザーの追加
Defaultの仮想ハブの管理画面を開き、「ユーザーの管理」よりユーザーを追加します。
仮想NATの設定
Defaultの仮想ハブの管理画面から、「仮想NATおよび仮想DHCPサーバー機能」を開きます。開いた画面より、「SecureNATの設定」をクリックします。
開いた画面で以下の設定を実施します。
LightsailのプライベートIPが、私の環境では172.26.xx.xxであったため172.26.0.0/16の範囲をルーティングするようにします。また、VPCピアリングで接続したデフォルトVPCのセグメント(172.31.0.0/16)に対しても、ルーティングするように設定します。
(LightsailのプライベートIPは、インスタンスの設定画面で確認できます)
設定が終わったら、SecureNAT機能を有効にします。
接続テスト
接続テストのため、WindowsにSoftEtherのクライアントをインストールします。
インストール後、「新しい接続設定の作成」より、VPNサーバーの情報とユーザー認証情報を入力します。
接続して、プライベートIPで目的のインスタンスに繋ぐことができるか確認します。
感想
実は、今回VPNサーバは拠点間接続の目的で立てたかったのですが、NATを有効化しなければいけない時点で(AWSからクライアントへの接続が無理なので)拠点間接続は諦めました。。。
LightsailのVPCは内部上は存在していると考えられますが、ユーザー側で触ることができず、ルートテーブルの変更が不可能なためです。
でも、せっかくtryしたので、供養のために記事にしました。
VPNサーバーでNATをかけても問題のないシチュエーションであれば、今回の構築は有用ではないかと思います。実際に利用する場合は、セキュリティ面も考慮してください。(証明書認証を利用する、など)