SoftEtherによる踏み台用VPNサーバーの構築手順 on IDCFクラウド~VPN接続時の通信速度を改善

isdはじめに

以前、IDCFクラウド上でSoftEther VPNサーバーを構築する手順を書きました。

・SoftEtherによる踏み台用VPNサーバーの構築手順 on IDCFクラウド CentOS 7
https://inaba-serverdesign.jp/blog/20170817/softether_vpn_idcf_cloud_centos7.html

これまで上記の手順で構築したVPNサーバーを使用してきましたが、VPN接続したときの通信速度がせいぜい1Mbps程度とかなり遅く、メンテナンス作業がしにくく感じるようになりました。

※構築当時は、WiMAXでインターネット接続しており、VPN接続しない状態で3~5Mbps程度だったので、VPN接続しても遅く感じなかったようです。今はフレッツ光ネクストでインターネット接続しており、通常時の通信速度は300~400Mbps程度のため、VPN接続時の速度低下が著しいです。

最近、VPN接続時の通信速度を改善する方法がわかったので、再度、SoftEther VPNによる踏み台用VPNサーバーの構築手順をまとめます。

前回の構築手順とは異なる、速度改善のポイントは以下です。

  • クラウドサーバーのネットワークはブリッジを使用し、SoftEther VPNで作成したtapデバイスとブリッジ接続する。
  • SoftEther VPNのSecureNAT機能のうち、仮想NAT機能は使用せず、仮想DHCPサーバー機能のみ使用する。

今回構築するVPNサーバー、クライアントの構成は以下のとおりです。

  • クラウドサーバー: IDCFクラウド Light.S1(1vCPU, メモリ1GB, 税抜560円/月)
  • OS: Rocky Linux 9
  • VPNサーバー: SoftEther VPN
  • VPN接続ポート: TCP/5555
  • VPNクライアントOS: Windows 11

前回同様、VPN接続ポートとしては、マイナーな TCP/5555 を使用します。

VPNサーバー、クライアントの大まかな構成イメージは以下のようになります。


 

より細かいネットワーク構成イメージは以下のとおりです。
このとおりとなるよう、仮想マシンやSoftEther VPNを設定していきます。


 

SoftEhter VPNやネットワークブリッジ接続の設定については、以下の記事などを参考にしました。
ありがとうございます。

・VPNサーバー構築(SoftEther VPN Server) – CentOSで自宅サーバー構築
https://centossrv.com/softethervpnserver.shtml

・VPNサーバ構築(7) SoftEther VPNのインストール – Zenn
https://zenn.dev/kumatani/articles/vpn-7-installingsoftethervpn

・bridge-utils(brctl) -> iproute2(ip/bridge) コマンド対応表 – Qiita
https://qiita.com/s1061123/items/54c9b4c001877135c4ff

以下は、2024年10月時点の構築手順です。
構築手順は、ほぼ上記の参考記事のとおりなのですが、構築するうえで気になった点などを補足します。

※SoftEther VPNサーバーを稼働させる「IaaSクラウドのLinux仮想サーバー」のことを「仮想マシン」と呼ぶことにします。
※稼働中のサーバに対して構築する場合、設定ミス等でネットワーク接続が不通となる場合があります。各設定は自己責任で実施するようお願いします。また、必要に応じて、作業前にバックアップのためのスナップショットの作成をおすすめします。

isd仮想マシンの作成とブリッジ接続設定

IDCFクラウドで仮想マシンを作成し、インターネットからアクセスできるよう、ファイアウォール、ポートフォワードの設定を行います。
IDCFクラウドのクラウドコンソールでの操作手順は、同サービスのご利用ガイドを参照してください。

・IDCFクラウド ご利用ガイド
https://www.idcf.jp/help/cloud/guide/

仮想マシンの作成

IDCFクラウドのポータルで、お好みのゾーンで、Rocky Linux 9 の仮想マシンを作成します。
ボリュームはデフォルトの15GBとしました。
仮想ルータのプライベートセグメントが、10.33.0.0/21 だったので、仮想マシンのプライベートIPアドレスは、10.33.0.23 としました。

ファイアウォール、ポートフォワードの設定

「IPアドレス」メニューで、仮想ルーターに付与されたグローバルIPアドレスを確認します。
このあと、このグローバルIPアドレスが「メンテナンス用アクセス時のアクセス元IPアドレス」となるよう、設定していきます。

ここではとりいそぎ、SSH接続ができるよう、ファイアウォール設定でTCP/22ポートのルールを追加し、ポートフォワード設定で、同ポートへのアクセスを仮想マシンに転送するルールを追加します。

SSH接続の確認

クライアントPCのSSHクライアントツールで、グローバルIPアドレスを指定して接続し、仮想マシンにSSHログインできることを確認します。

仮想マシンの基本設定

サーバーとして動作させるための基本的な設定を行います。
なお、IDCFクラウドの Rocky Linux では、初期状態で以下が設定済みです。

  • 文字コード(ロケール)は ja_JP.UTF-8
  • タイムゾーンは Asia/Tokyo(JST)
  • IDCFクラウドのタイムサーバーを参照したNTP
  • IDCFクラウドのDNSサーバーの参照

その他、お好みの設定を行います。
ちなみに僕は、どんなサーバーでも、以下を行います。

  • スワップの設定
  • Development Toolsのグループインストール(gccなどを含む)

ブリッジ接続の設定

以下、仮想マシンにSSH接続して設定します。

設定をミスすると、SSH接続が切れる可能性があります。
その場合は、IDCFクラウドのポータルから、仮想マシンのコンソールでコマンドを実行して調査、対応します。

まず、現在のネットワークデバイス(ネットワークインタフェース)の状態を確認します。

 # nmcli device

DEVICE  TYPE      STATE            CONNECTION
ens160  ethernet  接続済み         有線接続 1
lo      loopback  接続済み (外部)  lo

 

ネットワークコネクションの状態を確認します。

 # nmcli con show

NAME        UUID                                  TYPE      DEVICE
有線接続 1  32508d77-7b88-304c-b1a7-xxxxxxxxxxxx  ethernet  ens160
lo          9d0269bc-3161-496a-b314-xxxxxxxxxxxx  loopback  lo

 

扱いやすいよう、デバイス ens160 のコネクション名を「有線接続 1」から「ens160」に変更します。

 # nmcli con modify 32508d77-7b88-304c-b1a7-xxxxxxxxxxxx connection.id ens160

 

再度、ネットワークコネクションの状態を確認します。

 # nmcli con show

NAME    UUID                                  TYPE      DEVICE
ens160  32508d77-7b88-304c-b1a7-xxxxxxxxxxxx  ethernet  ens160
lo      9d0269bc-3161-496a-b314-xxxxxxxxxxxx  loopback  lo

 

IPアドレス情報を確認します。

 # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:03:12:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 10.33.0.23/21 brd 10.33.7.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever

 

以上より、デバイス ens160 にIPアドレスが設定されていることがわかります。

SoftEther VPNサーバー構築のため、ブリッジデバイスを作成して、IPアドレスをブリッジデバイスに割り当て、ens160 をブリッジデバイスに接続します。

※この設定の中で、一時的にネットワーク接続が切れることがあります。その場合は、IDCFクラウドのポータルで、仮想マシンのコンソールからコマンド操作します。

ブリッジデバイス br0 を作成し、同時にコネクションも作成します。

 # nmcli con add type bridge ifname br0

接続 'bridge-br0' (5948c07d-a262-4432-807b-xxxxxxxxxxxx) が正常に追加されました 。

 

ブリッジデバイス br0 のコネクションのSTPを無効化します。

 # nmcli con modify bridge-br0 bridge.stp no

 

ブリッジデバイス br0 のコネクションに対して、IPアドレスを設定します。

※この時点では、まだブリッジデバイスにIPアドレスは反映されません。
※仮想マシンでIPv6を無効としているため、ipv6.method ignore を指定しています。

 # nmcli con modify bridge-br0 ipv4.method manual \
    ipv4.addresses 10.33.0.23/21 ipv4.gateway 10.33.0.1 \
    ipv6.method ignore

 

ネットワークデバイスの状態を確認します。

 # nmcli device

DEVICE  TYPE      STATE                     CONNECTION
ens160  ethernet  接続済み                  ens160
lo      loopback  接続済み (外部)           lo
br0     bridge    接続中 (IP 設定を取得中)  bridge-br0

 

ネットワークコネクションの状態を確認します。

 # nmcli con show

NAME        UUID                                  TYPE      DEVICE
bridge-br0  5948c07d-a262-4432-807b-xxxxxxxxxxxx  bridge    br0
ens160      32508d77-7b88-304c-b1a7-xxxxxxxxxxxx  ethernet  ens160
lo          9d0269bc-3161-496a-b314-xxxxxxxxxxxx  loopback  l

 

デバイス ens160 をブリッジに接続します。
ifname として(コネクション名ではなく)デバイス名 ens160 を、ブリッジ接続の master として、ブリッジのコネクション名 bridge-br0 をそれぞれ指定するのがポイントですね。

 # nmcli con add type bridge-slave ifname ens160 master bridge-br0

接続 'bridge-slave-ens160' (7ff1dac0-47fd-4eae-8484-xxxxxxxxxxxx) が正常に追加されました。

 

IPアドレスが付与されている、デバイス ens160 の既存のコネクションを削除します。
削除するとリモート接続が切れるため、続けて仮想マシンを再起動するコマンドを投入し、ここで行ったブリッジ接続設定を反映させます。

 # nmcli con del ens160; shutdown -r now

接続 'ens160' (32508d77-7b88-304c-b1a7-xxxxxxxxxxxx) が正常に削除されました。

 

仮想マシンの再起動後、再度SSH接続します。

ネットワークデバイスの状態を確認します。

 # nmcli device

DEVICE  TYPE      STATE            CONNECTION
br0     bridge    接続済み         bridge-br0
lo      loopback  接続済み (外部)  lo
ens160  ethernet  接続済み         bridge-slave-ens160

 

ネットワークコネクションの状態を確認します。

 # nmcli con show

NAME                 UUID                                  TYPE      DEVICE
bridge-br0           5948c07d-a262-4432-807b-xxxxxxxxxxxx  bridge    br0
lo                   9f4c3b3f-9e3f-44df-8a3f-xxxxxxxxxxxx  loopback  lo
bridge-slave-ens160  7ff1dac0-47fd-4eae-8484-xxxxxxxxxxxx  ethernet  ens160

 

ブリッジの状態を確認します。

 # bridge link show

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100

 

IPアドレス情報を確認します。

 # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 02:03:12:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    altname enp3s0
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 02:03:12:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.33.0.23/21 brd 10.33.7.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever

 

↑デバイス ens160 がブリッジインタフェース br0 の配下に接続されたこと、(デバイス ens160 ではなく)ブリッジデバイス br0 にIPアドレスが割り当てられたことがわかります。

これで、仮想マシンの作成とブリッジ接続設定はいったん完了です。

isdSoftEther VPNサーバーのインストール

仮想マシンにSSHログインし、SoftEther VPNサーバーをインストールします。
バイナリをインストールしてもよいのですが、クライアント鍵認証など、エンタープライズ向け機能を有効にしたく、ソースコードを一部修正するため、ソースをダウンロード、ビルドします。

gccとopenssl-develのインストール

SoftEther VPNサーバーのビルドのため、gccとopenssl-develとのことで、インストールします。

 # dnf install gcc openssl-devel

 

SoftEtherのダウンロード、ビルド、インストール

インストール先は、/usr/local/vpnserver とします。

SoftEther公式ダウンロードページ
https://www.softether-download.com/ja.aspx?product=softether

より、
ダウンロードするソフトウェア「SoftEther VPN (Freeware)」
コンポーネント「Source Code of SoftEther VPN」
プラットフォーム「tar.gz package」
CPU「Any」
を選択し、
SoftEther VPNのRTM最新版のソースコードURLをコピーし、ダウンロード、解凍・展開します。

 # cd /usr/local/src/
 # wget https://jp.softether-download.com/files/softether/v4.42-9798-rtm-2023.06.30-tree/Source_Code/softether-src-v4.42-9798-rtm.tar.gz
 # tar -zxvf softether-src-v4.42-9798-rtm.tar.gz
 # cd v4.42-9798/

 

クライアント鍵認証など、エンタープライズ向け機能を有効にするため、リージョンロックを解除します。
src/Cedar/Server.c で、
SiIsEnterpriseFunctionsRestrictedOnOpenSource() の最後の return ret; を return false; にします。

 # cp -p src/Cedar/Server.c src/Cedar/Server.c.org
 # vim src/Cedar/Server.c

--
bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c)
{
...

    //return ret;
    return false;
}
--

 

ビルド、インストールします。

 # ./configure

---------------------------------------------------------------------
SoftEther VPN for Unix

Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.
Copyright (c) Daiyuu Nobori. All Rights Reserved.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.

Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.
---------------------------------------------------------------------

Welcome to the corner-cutting configure script !

The Makefile is generated. Run 'make' to build SoftEther VPN.

 # time make

...
cp src/bin/BuiltHamcoreFiles/unix/hamcore.se2 bin/vpncmd/hamcore.se2
cc tmp/as/vpncmd.a -O2 -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz -o bin/vpncmd/vpncmd

real    2m47.154s
user    1m31.694s
sys     0m4.463s

 # make install

cp bin/vpnserver/hamcore.se2 /usr/vpnserver/hamcore.se2
cp bin/vpnserver/vpnserver /usr/vpnserver/vpnserver
echo "#!/bin/sh" > /usr/bin/vpnserver
echo /usr/vpnserver/vpnserver '"$@"' >> /usr/bin/vpnserver
echo 'exit $?' >> /usr/bin/vpnserver
chmod 755 /usr/bin/vpnserver
cp bin/vpnbridge/hamcore.se2 /usr/vpnbridge/hamcore.se2
cp bin/vpnbridge/vpnbridge /usr/vpnbridge/vpnbridge
echo "#!/bin/sh" > /usr/bin/vpnbridge
echo /usr/vpnbridge/vpnbridge '"$@"' >> /usr/bin/vpnbridge
echo 'exit $?' >> /usr/bin/vpnbridge
chmod 755 /usr/bin/vpnbridge
cp bin/vpnclient/hamcore.se2 /usr/vpnclient/hamcore.se2
cp bin/vpnclient/vpnclient /usr/vpnclient/vpnclient
echo "#!/bin/sh" > /usr/bin/vpnclient
echo /usr/vpnclient/vpnclient '"$@"' >> /usr/bin/vpnclient
echo 'exit $?' >> /usr/bin/vpnclient
chmod 755 /usr/bin/vpnclient
cp bin/vpncmd/hamcore.se2 /usr/vpncmd/hamcore.se2
cp bin/vpncmd/vpncmd /usr/vpncmd/vpncmd
echo "#!/bin/sh" > /usr/bin/vpncmd
echo /usr/vpncmd/vpncmd '"$@"' >> /usr/bin/vpncmd
echo 'exit $?' >> /usr/bin/vpncmd
chmod 755 /usr/bin/vpncmd

--------------------------------------------------------------------
Installation completed successfully.

Execute 'vpnserver start' to run the SoftEther VPN Server background service.
Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.
Execute 'vpnclient start' to run the SoftEther VPN Client background service.
Execute 'vpncmd' to run SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.
--------------------------------------------------------------------

 

/usr/bin/ 以下にコマンドがインストールされました。
ファイルを確認し、rootユーザーのみ読み書き可能、VPNサーバーコマンドはrootユーザーのみ実行可能とします。

 # ls -l /usr/bin/vpn*

-rwxr-xr-x 1 root root 48 10月 25 16:36 /usr/bin/vpnbridge
-rwxr-xr-x 1 root root 48 10月 25 16:36 /usr/bin/vpnclient
-rwxr-xr-x 1 root root 42 10月 25 16:36 /usr/bin/vpncmd
-rwxr-xr-x 1 root root 48 10月 25 16:36 /usr/bin/vpnserver

 # chmod 700 /usr/bin/vpn*
 # ls -l /usr/bin/vpn*

-rwx------ 1 root root 48 10月 25 16:36 /usr/bin/vpnbridge
-rwx------ 1 root root 48 10月 25 16:36 /usr/bin/vpnclient
-rwx------ 1 root root 42 10月 25 16:36 /usr/bin/vpncmd
-rwx------ 1 root root 48 10月 25 16:36 /usr/bin/vpnserver

 

vpncmd の check コマンドによる動作チェックを行います。

 # /usr/bin/vpncmd

vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.42 Build 9798   (Japanese)
Compiled 2023/06/30 10:47:04 by buildsan at crosswin with OpenSSL 3.0.7
Copyright (c) 2012-2023 SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 3

VPN Tools>check
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする
---------------------------------------------------
SoftEther VPN 動作環境チェックツール

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

'カーネル系' のチェック中...
              [合格] ○
'メモリ操作系' のチェック中...
              [合格] ○
'ANSI / Unicode 文字列処理系' のチェック中...
              [合格] ○
'ファイルシステム' のチェック中...
              [合格] ○
'スレッド処理システム' のチェック中...
              [合格] ○
'ネットワークシステム' のチェック中...
Connect Failed. (0)
              [不合格] ×

一部のチェック結果は不合格でした。システムの動作環境を確認してください。このシステム上で SoftEther VPN Server / Bridge を実行した場合、問題が発生する可能性があ ります。

コマンドは正常に終了しました。

VPN Tools>exit

 

ネットワークシステムのチェックが「不合格」となりましたが、先に進みます。

サービス化

仮想マシン上でVPNサーバープロセスを常駐化させるため、Systemdでサービス化します。
サービス名は「vpnserver」とします。

Systemd用のユニットファイルを作成します。

 # vim /etc/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

 

VPNサービスを起動し、サービスのステータスを確認します。

 # systemctl start vpnserver

 # systemctl status vpnserver

● vpnserver.service - SoftEther VPN Server
     Loaded: loaded (/etc/systemd/system/vpnserver.service; disabled; preset: d>
     Active: active (running) since Fri 2024-10-25 16:48:37 JST; 3s ago
    Process: 5106 ExecStart=/usr/bin/vpnserver start (code=exited, status=0/SUC>
   Main PID: 5111 (vpnserver)
      Tasks: 32 (limit: 3355442)
     Memory: 21.8M
        CPU: 455ms
     CGroup: /system.slice/vpnserver.service
             tq5111 /usr/vpnserver/vpnserver execsvc
             mq5112 /usr/vpnserver/vpnserver execsvc

10月 25 16:48:37 vpn systemd[1]: Starting SoftEther VPN Server...
10月 25 16:48:37 vpn vpnserver[5107]: The SoftEther VPN Server service has been>
10月 25 16:48:37 vpn vpnserver[5107]: Let's get started by accessing to the fol>
10月 25 16:48:37 vpn vpnserver[5107]: https://10.33.0.23:5555/
10月 25 16:48:37 vpn vpnserver[5107]:   or
10月 25 16:48:37 vpn vpnserver[5107]: https://10.33.0.23/
10月 25 16:48:37 vpn vpnserver[5107]: Note: IP address may vary. Specify your s>
10月 25 16:48:37 vpn vpnserver[5107]: A TLS certificate warning will appear bec>
10月 25 16:48:37 vpn systemd[1]: Started SoftEther VPN Server.

 

仮想マシンのOS起動時に、VPNサーバーを自動起動させるのであれば、systemctl enable を実行します。

 # systemctl enable vpnserver

 

VPNサーバープロセスおよびLISTENポートを確認します。
→ TCP/5555, TCP/443, TCP/992, TCP/1194ポートをLISTENしていることがわかります。

 # ps aux | grep vpnserver

root        5111  0.0  0.4  11416  2980 ?        S<s  16:48   0:00 /usr/vpnserver/vpnserver execsvc
root        5112  1.2  3.0 558336 22408 ?        S<l  16:48   0:00 /usr/vpnserver/vpnserver execsvc
root        5198  0.0  0.3   4592  2252 pts/1    S+   16:49   0:00 grep --color=auto vpnserver

 # ss -anp | grep vpnserver | grep LISTEN

tcp   LISTEN    0      4096                                       0.0.0.0:992                0.0.0.0:*     users:(("vpnserver",pid=5112,fd=23))                 
tcp   LISTEN    0      4096                                       0.0.0.0:5555               0.0.0.0:*     users:(("vpnserver",pid=5112,fd=31))                 
tcp   LISTEN    0      4096                                       0.0.0.0:1194               0.0.0.0:*     users:(("vpnserver",pid=5112,fd=27))                 
tcp   LISTEN    0      4096                                          [::]:992                   [::]:*     users:(("vpnserver",pid=5112,fd=25))                 
tcp   LISTEN    0      4096                                          [::]:443                   [::]:*     users:(("vpnserver",pid=5112,fd=21))                 
tcp   LISTEN    0      4096                                          [::]:5555                  [::]:*     users:(("vpnserver",pid=5112,fd=33))                 
tcp   LISTEN    0      4096                                          [::]:1194                  [::]:*     users:(("vpnserver",pid=5112,fd=29))

 

管理マネージャのアクセス制限

SoftEther VPNの管理機能の認証は、基本的には、管理パスワードのみです。

VPNの設定・管理を行うためのSoftEtherサーバー管理マネージャや vpncmd によるリモート管理のアクセス元IPアドレスを限定する機能があるので、これを利用すると、セキュリティ強化となります。

※いくらVPNクライアントの認証を強化しても、管理機能に簡単にアクセスされてしまっては本末転倒です。

(参考)
SoftEther VPNドキュメント 3.3.18 IP アドレスによるリモート管理接続元の制限

VPN Server(vpnserverコマンド)がインストールされているディレクトリ上に adminip.txt という名前のテキストファイルを作成し、アクセス元IPアドレスのリストを1行1レコードで記載します。
以下のような範囲指定も可能です。

203.0.113.0/24

 

ディレクトリは、ここで記載したインストール方法であれば、/usr/vpnserver となります。
ビルドせずにインストーラーでバイナリをそのままインストールしたときは、/usr/local/vpnserver となります。

設定したIPアドレス以外から、SoftEtherサーバー管理マネージャでアクセスした場合、以下のようなアラートが表示されます。

isdVPN接続用のファイアウォール設定

VPN接続のため、以下のポートのアクセス許可設定を行います。

  • TCP/5555: VPN接続用
  • UDP/40000-44999: UDP高速化通信用

IDCFクラウドのクラウドコンソール、ファイアウォール設定で、これらのポートへのルールを追加し、ポートフォワード設定で、同ポートへのアクセスを仮想マシンに転送するルールを追加します。

仮想マシン上で、firewalldやiptables, nftables を使用しているなら、これらのポートへのInboundアクセス許可ルールを追加します。

なお、firewalldやiptables, nftables で、外向きの通信ポートも制限している場合は、以下の宛先ポートへのOutboundアクセス許可ルールを追加する必要があります。

  • UDP/32768-65535: UDP高速化通信用のエフェメラルポート
  • UDP/80: Keepalive用

なお、接続元のネットワークやクラウドサーバーサービスによっては、TCP/5555を塞いだままでも、VPN接続できる場合があります。
VPNクライアントからの接続時に接続ポート(今回はTCP/5555)を使用できない場合は、いわゆる「NATトラバーサル」での通信となります。
インターネットへの公開ポートをギリギリまで減らしたい場合は、いろいろ試してみるとよいと思います。

isdSoftEther VPNサーバーの設定

クライアントPCから、GUIツールでSoftEther VPNサーバーの設定を行います。
(サーバー上のコマンドラインでも設定可能です。)

SoftEtherサーバー管理マネージャのインストール

PCのWebブラウザ等で、SoftEther公式ダウンロードページ
https://www.softether-download.com/ja.aspx?product=softether
より、「SoftEther VPN Server Manager for Windows(または for Mac OS X)」を選択し、RTM最新版「SoftEther VPN Server and VPN Bridge (Ver 4.42, Build 9798, rtm)」をダウンロードします。

ダウンロードしたインストーラを起動し、「サーバー管理マネージャのみ」を選択してインストールします。

管理マネージャで接続

インストールした「SoftEther VPNサーバー管理マネージャ」を起動します。

「新しい接続設定」で接続設定を作成します。

  • 接続設定名: (お好みの接続名、ここでは「bastion-vpn」)
  • ホスト名: (仮想マシンのグローバルIPアドレス)
  • ポート番号: 5555
  • 管理モード: サーバー管理モード
  • 管理者パスワードは保存しない: チェックON // パスワードは保存せずに毎回入力する


 

接続設定リストで、作成した接続名を選択して、「接続」します。
初回接続時は、新しいパスワードの設定を促されるので、設定します。


 

※管理マネージャの認証は、「パスワード」のみです。不正アクセスされないよう、英数記号を含めたランダムな文字列を設定しましょう。

初回接続時は「SoftEther VPN Server / Bridge 簡易セットアップ」のウィザード画面が表示されますが、このあとひとつずつ設定していくので、ここでは何も設定せずに閉じます。

リスナーの管理

管理マネージャのメイン画面「リスナーの管理」のところで、VPN接続ポートは「TCP/5555」と決めたので、それ以外の使用しないポート「TCP/443」「TCP/992」「TCP/1194」を削除します。


 

仮想マシン上のssコマンドで確認すると、管理マネージャでの削除が即座に反映され、vpnserverのLISTENポートがTCP/5555のみとなっていることがわかります。

 # ss -anp | grep vpnserver | grep LISTEN

tcp   LISTEN    0      4096                                       0.0.0.0:5555               0.0.0.0:*     users:(("vpnserver",pid=5112,fd=31))                 
tcp   LISTEN    0      4096                                          [::]:5555                  [::]:*     users:(("vpnserver",pid=5112,fd=33))

 

暗号化と通信関係の設定

管理マネージャのメイン画面で「暗号化と通信関係の設定」をクリックして、編集画面を開きます。

「使用する暗号化アルゴリズム」が、デフォルトでは「AES128-SHA」となっていますが、せっかくなのでより強いアルゴリズム「ECDHE-RSA-AES256-SHA384」に変更します。


 

それ以外の設定はデフォルトままで問題ないでしょう。

ダイナミックDNS機能の無効化

今回の「踏み台」としての用途では、VPNサーバーのIPアドレスは固定したほうがよく、ホスト名によるアクセスは必要ないので、ダイナミックDNS機能は不要です。
ダイナミックDNS経由の不正アクセスの可能性もゼロではないので、無効にします。

管理マネージャのメイン画面で「ダイナミックDNS設定」をクリックして、編集画面を開きます。
左下の「ダイナミックDNS機能を無効にする」をクリックします。


 


 

指定されたとおり、仮想マシン上のVPN Server の設定ファイルを変更します。
SoftEther VPNの設定ファイルは、SoftEtherをインストールしたディレクトリ(今回は /usr/vpnserver)直下の vpn_server.config ですので編集します。

 # vim /usr/vpnserver/vpn_server.config

...
    declare DDnsClient
    {
        #bool Disabled false
        bool Disabled true
        byte Key J3XE/hurG3HXPoFV4Mlm1Q93PG4=
        string LocalHostname vpn
        string ProxyHostName $
        uint ProxyPort 0
        uint ProxyType 0
        string ProxyUsername $
    }
...

 

SoftEther VPNを再起動して反映します。

 # systemctl stop vpnserver
 # systemctl start vpnserver

 

クライアントPCからSoftEther VPNサーバー管理マネージャの接続が切れるので、再度接続します。

仮想HUBの作成

「仮想HUB」は、VPN専用のネットワークセグメントを管理する仮想的なハブです。
PC等のVPNクライアントは、VPN接続によって、仮想HUBに接続することになります。

・SoftEther VPN: 3.3.2 SoftEther VPN Server と仮想 HUB
https://ja.softether.org/4-docs/1-manual/3/3.3#3.3.2_SoftEther_VPN_Server_.E3.81.A8.E4.BB.AE.E6.83.B3_HUB

複数の仮想HUBを作成し、それぞれ異なるVPN環境を用意することもできますが、今回は1つだけ作成します。

管理マネージャで、デフォルトの仮想HUBを削除し、新しい仮想HUBを作成します。

まず、管理マネージャのメイン画面上部で、仮想HUB「DEFAULT」を削除します。
続いて、「仮想HUBの作成」をクリックして、編集画面を開きます。
仮想HUBの情報を指定します。

  • 仮想HUB名: (お好みの名前、ここでは「VPN1」とする)
  • 仮想HUB管理用パスワード: (お好みのパスワード)
  • 匿名ユーザーに対してこの仮想HUBを列挙しない: チェックON
  • 最大同時接続セッション数を制限する: (お好みで)


 

ローカルブリッジ設定

管理マネージャのメイン画面で、「ローカルブリッジ設定」をクリックします。


 

「新しいローカルブリッジの定義」で、新しいtapデバイスを作成します。

  • 仮想HUB: VPN1
  • 作成する種類: 新しい tap デバイスとのブリッジ接続
  • 新しい tapデバイス名: vpn


 

「ローカルブリッジを追加」をクリックします。
「”vpn” に対してローカルブリッジ接続しようとしています」
のアラートが表示されますが、「はい」とします。


 

「ローカルブリッジ設定」画面で仮想HUB VPN1 のtapデバイス vpn が追加され、「状態」が「動作中」となればOKです。
画面を閉じます。


 

SecureNATの無効化と仮想DHCPサーバーの設定

「SecureNAT」機能については、マニュアルの説明がとてもわかりやすいです。

・SoftEther: 3.7 仮想 NAT および仮想 DHCP サーバー
https://ja.softether.org/4-docs/1-manual/3/3.7

今回は、VPN接続時の通信速度を考慮して、SecureNAT(仮想NAT)は使用しません。
VPN接続するときのネットワークは、仮想マシンのプライベートネットワークと同じ、10.33.0.0/21 を使用します。
ただし、VPN接続時に、クライアントPCにこのネットワークのIPアドレスを自動付与するため、仮想DHCPサーバーのみ使用することにします。

管理マネージャのメイン画面で、仮想HUB「VPN1」を選択して、「仮想HUBの管理」をクリックします。


 

続いて、仮想HUBの管理画面で、「仮想NATおよび仮想DHCPサーバー機能」をクリックします。


 

仮想NATおよび仮想DHCP(SecureNAT)の設定画面で、「SecureNATの設定」をクリックして、SecureNATの設定内容を確認します。


 

SecureNATの設定画面が開きます。

  • 仮想ホストのネットワークインタフェースの設定
    • IPアドレス: 10.33.0.30
    • サブネットマスク: 255.255.248.0
  • 仮想NATの設定
    • 仮想NAT機能を使用する: チェックOFF
    • NATおよびDHCPサーバーの動作をログファイルに保存する: チェックON
  • 仮想DHCPサーバーの設定
    • 仮想DHCPサーバー機能を使用する: チェックON
    • 配布IPアドレス帯: 10.33.0.31 から 10.33.0.35 まで
    • サブネットマスク: 255.255.248.0
    • リース期限: 7200
  • クライアントに割り当てるオプションの設定
    • デフォルトゲートウェイのアドレス: 10.33.0.1
    • DNSサーバーのアドレスとドメイン名: 10.33.0.1

仮想ホストのネットワークインタフェースは、仮想マシンのプライベートIPアドレスは異なる、未使用のプライベートIPアドレスと、仮想マシンのネットワークアドレス範囲を指定します。
仮想マシンのプライベートIPアドレスをそのまま指定すると、ネットワークが不通となるので注意してください。(僕はここでハマりました。。)

SecureNATは使用しないため、仮想NAT機能は無効とします。
仮想DHCPサーバーは有効とし、配布IPアドレス帯は、VPNの同時接続数を考慮して指定します。
「クライアントに割り当てるオプションの設定」は、仮想マシンのデフォルトゲートウェイ(=仮想ルーター)をそのまま指定します。
DNSサーバーについては、仮想ルーターのIPアドレスを指定するか、空欄の場合はPCのリゾルバーをに従ってくれます。


 

「OK」で閉じます。

仮想NATおよび仮想DHCP(SecureNAT)の設定画面に戻って、「SecureNAT機能を有効にする」をクリックして有効にします。


 

ここで、仮想マシンのネットワークデバイスの状態を確認してみます。

 # nmcli device

DEVICE   TYPE      STATE            CONNECTION
br0      bridge    接続済み         bridge-br0
lo       loopback  接続済み (外部)  lo
ens160   ethernet  接続済み         bridge-slave-ens160
tap_vpn  tun       管理無し         --

 

先ほどSoftEther VPNで作成したtapデバイスが、tap_vpn として追加されたことがわかります。

tapデバイスをブリッジに接続

次に、仮想マシンのネットワーク設定で、SoftEther VPNで作成したtapデバイス tap_vpn を、ブリッジデバイスに接続する設定を行います。
通常時は接続せず、SoftEther VPNを起動したときのみブリッジ接続するよう、Systemd用のユニットファイルの ExecStartPost で指定します。

 # vim /etc/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/vpnserver start
ExecStartPost=/root/bin/vpnserver_tap_enable.sh // この行追加
ExecStop=/usr/bin/vpnserver stop

[Install]
WantedBy=multi-user.target

 

Systemdに変更を反映します。

 # systemctl daemon-reload

 

続いて、ブリッジ接続を実行するシェルスクリプトを作成します。
SoftEther VPNを起動してtapデバイスが有効になってから接続を試行するよう5秒の待機時間を経たのち、デバイス tap_vpn をブリッジインタフェース br0 の配下に接続します。

 # vim /root/bin/vpnserver_tap_enable.sh

#!/bin/bash

sleep 5
/sbin/ip link set dev tap_vpn master br0

 

シェルスクリプトに実行権限を付与します。

 # chmod 700 /root/bin/vpnserver_tap_enable.sh

 

VPNサービスを再起動します。

 # systemctl restart vpnserver

 

サービスのステータスを確認します。

 # systemctl status vpnserver

● vpnserver.service - SoftEther VPN Server
     Loaded: loaded (/etc/systemd/system/vpnserver.service; disabled; preset: d>
     Active: active (running) since Mon 2024-10-25 17:29:24 JST; 4min 25s ago
   Main PID: 7264 (vpnserver)
      Tasks: 31 (limit: 3355442)
     Memory: 18.1M
        CPU: 755ms
     CGroup: /system.slice/vpnserver.service
             tq7264 /usr/vpnserver/vpnserver execsvc
             mq7265 /usr/vpnserver/vpnserver execsvc

10月 25 17:29:24 vpn systemd[1]: Starting SoftEther VPN Server...
10月 25 17:29:24 vpn vpnserver[7260]: The SoftEther VPN Server service has been>
10月 25 17:29:24 vpn vpnserver[7260]: Let's get started by accessing to the fol>
10月 25 17:29:24 vpn vpnserver[7260]: https://10.33.0.23:5555/
10月 25 17:29:24 vpn vpnserver[7260]:   or
10月 25 17:29:24 vpn vpnserver[7260]: https://10.33.0.23/
10月 25 17:29:24 vpn vpnserver[7260]: Note: IP address may vary. Specify your s>
10月 25 17:29:24 vpn vpnserver[7260]: A TLS certificate warning will appear bec>
10月 25 17:29:24 vpn systemd[1]: Started SoftEther VPN Server.

 

ネットワークデバイスの状態を確認します。

 # nmcli device

DEVICE   TYPE      STATE            CONNECTION
br0      bridge    接続済み         bridge-br0
lo       loopback  接続済み (外部)  lo
ens160   ethernet  接続済み         bridge-slave-ens160
tap_vpn  tun       接続済み (外部)  tap_vpn

 

ネットワークコネクションの状態を確認します。

 # nmcli con show

NAME                 UUID                                  TYPE      DEVICE
bridge-br0           5948c07d-a262-4432-807b-xxxxxxxxxxxx  bridge    br0
lo                   4a2e5f64-fa0e-4fef-8050-xxxxxxxxxxxx  loopback  lo
bridge-slave-ens160  7ff1dac0-47fd-4eae-8484-xxxxxxxxxxxx  ethernet  ens160
tap_vpn              9167ee94-24b3-41d8-9b6c-xxxxxxxxxxxx  tun       tap_vpn

 

ブリッジの状態を確認します。

 # bridge link show

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
9: tap_vpn: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100

 

↑デバイス tap_vpn をブリッジインタフェース br0 の配下に接続されたことがわかります。

IPSec / L2TPの設定

クライアントからVPN接続する際、スマホやWindows, Mac OS XなどのOS標準のVPNクライアントを使用する場合は「IPSec / L2TP」機能を有効にします。

こちらも有効無効は好みになりますが、可能であれば、
「VPN接続はSoftEtherのVPNクライアントソフトに限定=IPSec / L2TPは無効」
としたほうが、VPNアクセスする手段が少なくなるので、少しだけ安全になると思います。

今回は使用しないため、無効のままとします。

VPNユーザーの設定

仮想HUBに対して、VPN接続のユーザーエントリーを作成します。

管理マネージャのメイン画面で、仮想HUB「VPN1」を選択して、「仮想HUBの管理」をクリックします。
続いて、「ユーザーの管理」をクリックします。


 

ユーザーの管理画面で、「新規作成」をクリックして、ユーザー情報を入力しますがその前に、クライアント証明書を作成します。

「証明書作成ツール」をクリックして、証明書を作成します。
新しい証明書の作成画面で、名前ほか、情報を入力します。
今回は、証明書の有効期間をデフォルトの 3650日、暗号強度を 2048bit とします。


 

「OK」をクリックすると、「証明書と秘密鍵の保存」画面に進みます。
保存方法は「X509証明書ファイル(.CER)と秘密鍵ファイル(.KEY)の組み合わせとして保存する」とします。
秘密鍵の保護として、パスフレーズを設定します。


 

「OK」をクリックして、証明書ファイルと秘密鍵ファイルをPCに保存します。

ユーザの新規作成画面に戻って、作成するユーザー情報を入力します。
認証方法は、クライアント証明書を利用した「固有証明書認証」とします。
必要に応じて、グループ名やアカウントの有効期限を設定します。
セキュリティ強化のため、サーバーのSSH接続と同様に、VPNユーザーとクライアント証明書は、複数人で共用せず、1人1VPNユーザーとすべきでしょう。


 

「OK」をクリックして、ユーザー作成を完了します。
ユーザーの管理画面で、ユーザーが作成されたことを確認します。


 

必要に応じて、同様の手順でユーザーを追加します。

以上で、VPNサーバー側の設定は完了となります。

isdVPN接続の確認

ここでは、クライアントPCで、VPN接続ユーザーとしての確認を行います。
SoftEther VPNクライアントを使用します。

SoftEther VPNクライアントのインストール

SoftEther公式ダウンロードページ
https://www.softether-download.com/ja.aspx?product=softether
より、「SoftEther VPN Client」を選択し、さらにプラットフォーム、CPUを選択し、RTM最新版をダウンロードします。
ダウンロードしたインストーラを起動し、「SoftEther VPN Clientのみ」を選択してインストールします。

初回接続

インストールした「SoftEther VPNクライアント」を起動します。
「新しい接続設定の作成」をダブルクリックします。


 

初めて接続設定を作成するときは、仮想LANカードの作成が必要となります。
仮想LANカード「VPN」を作成します。


 

仮想LANカードが作成されたら、再度「新しい接続設定の作成」をダブルクリックして接続設定を作成します。
先ほど設定した、VPNサーバーのLISTENポート、仮想HUB名、使用するLANカード、ユーザー認証方法、ユーザー名を設定します。

  • 接続設定名: (お好みの接続設定名)
  • ホスト名: (仮想マシンのグローバルIPアドレス)
  • ポート番号: 5555
  • 仮想HUB名: VPN1
  • 使用する仮想LANカード: VPN
  • ユーザー認証: クライアント証明書認証
  • ユーザー名: (作成したVPNユーザー)


 

「クライアント証明書の指定」をクリックして、先ほど作成、保存したVPNユーザーの固有証明書ファイル、秘密鍵ファイルを指定し、秘密鍵のパスフレーズを入力します。


 

「OK」をクリックして、接続設定を終了、保存します。

クライアント接続マネージャーで、作成した接続設定をダブルクリックして接続します。


 

ここまでのVPNサーバーやクライアントの設定が問題なければ、VPN接続が完了し、VPNサーバーの仮想DHCP機能により、IPアドレス 10.33.0.31 が付与されます。
付与されたIPアドレスは、Windowsのコマンドプロンプト上で、ipconfigコマンドを実行することで確認できます。

> ipconfig

Windows IP 構成

不明なアダプター VPN - VPN Client:

   接続固有の DNS サフィックス . . . . .:
   IPv4 アドレス . . . . . . . . . . . .: 10.33.0.31
   サブネット マスク . . . . . . . . . .: 255.255.248.0
   デフォルト ゲートウェイ . . . . . . .: 10.33.0.1

 

クライアントからのVPN接続完了後の、ネットワーク構成イメージは以下のとおりです(再掲)。


 

動作確認

VPN接続を確認できたら、本来の目的であった「踏み台」としての動作、VPN接続時の通信速度、仮想マシンのサーバー負荷などを確認します。

まず、クライアントPCのブラウザから、アクセス元IPアドレスを表示してくれるWebサイトなどにアクセスしてみて、IPアドレスが、仮想マシンのグローバルIPアドレスとなっていることを確認します。

(参考)
・What is my address
https://whatismyipaddress.com/

クライアントPCからメンテナンス対象のサーバーにSSHログインしてみて、サーバー側のセキュアログで、接続元IPアドレスが、仮想マシンのグローバルIPアドレスとなっていることを確認するのもよいですね。


 

なお、クライアントのインターネット接続環境がIPv6に対応している場合、
接続先がIPv6に非対応の場合は、VPN接続経由となるのに、
接続先がIPv6に対応している場合は、VPN接続経由とならずに、クライアントから直接IPv6でアクセスしてしまうことがあります。

↑の What is my address でも、IPv6アドレスが表示されていますね。

この場合は、クライアントPCのネットワーク接続のプロパティで、IPv6を無効にすると、すべてのアクセスがIPv4でVPN接続経由となります。

以下は、僕のWindws 11環境のネットワーク接続のプロパティ設定例です。
Wifiを使用しているので、(VPN Clientのプロパティではなく)Wifiのプロパティを変更するのがポイントです。


 


 

クライアントでIPv6を無効にして What is my address にアクセスすると、IPv6のアドレスが「Not detected」と表示されます。
これで、クライアントからのアクセスはすべてVPN接続経由となります。


 

VPN接続時の通信速度は、インターネット上のスピードテストサイトや、SoftEtherクライアント接続マネージャーの「通信スループット測定ツール」等で確認できます。
僕の場合は、VPN接続時は、通常時の40%~80%ぐらいの速度となりました。
100Mbpsぐらいは確実に出るようになったので、とても満足しています。


 


 

VPNサーバーが稼働する仮想マシンのCPU負荷は、VPNサーバーの有無やVPN接続の有無でほとんど変わらないはずです。
VPN接続時にCPU負荷が上がるのであれば、「ローカルブリッジで既存デバイスを使用している」など、あまり好ましくない設定があると思われるので、設定を見直すべきでしょう。
VPNサーバープロセスが使用するメモリは、20MB前後です。

 # ps aux | grep vpn

root        1986  0.0  0.4  11416  2980 ?        S<s  15:34   0:00 /usr/vpnserver/vpnserver execsvc
root        1987  1.0  3.0 557336 22676 ?        S<l  15:34   0:00 /usr/vpnserver/vpnserver execsvc
root        2031  0.0  0.2   4592  2204 pts/1    S+   15:34   0:00 grep --color=auto vpn

 

このように、SoftEther VPNサーバーが使用するCPU、メモリリソースは非常に小さいので、同時接続数が少なければ、使用するクラウドサーバーはスペックが低いもので十分でしょう。

ここまで確認できれば、踏み台用VPNサーバー環境はひとまず完成となります。

isdVPNサーバーの運用について

この踏み台用VPNサーバーの運用にあたり、より便利に使う方法やセキュリティ強化について考えてみます。

不正VPN接続への対策

SoftEther VPNによる踏み台用VPNサーバーを構築することで、メンテンナンス対象サーバーのアクセス元IPアドレスをVPNサーバーのアドレスに限定することができました。
しかし、このVPNサーバーに第三者から簡単に接続されてしまっては意味がないので、不正に接続されないよう、対策を実施します。

対策として、僕が思いつくのは以下のようなことです。
一般的なセキュリティ強化と同じで、複数の手法で不正アクセスするチャンスをできるだけ減らすようにします。

  1. 管理パスワードは複雑な文字列とする
  2. 管理マネージャの接続元IPアドレスを限定
  3. VPNユーザーはクライアント証明書認証を必須とし、複数人で共有しない
  4. VPNサーバープロセスは、VPN接続時のみ起動
  5. ファイアウォールでVPN接続元IPアドレスを日本国内に限定
  6. IPSec / L2TP機能は無効化
  7. 公開Webサーバーやメールサーバーと併用しない

詳しくは、以前書いた記事を参照してください。

・SoftEtherによる踏み台用VPNサーバーの構築手順 on IDCFクラウド CentOS 7
https://inaba-serverdesign.jp/blog/20170817/softether_vpn_idcf_cloud_centos7.html

ログ保存、削除設定

SoftEther VPNサーバーのログは以下の3種類あります。

  • サーバーログ
  • 仮想HUBセキュリティログ
  • 仮想HUBパケットログ

(参考)
・SoftEther VPNマニュアル 3.10 ロギングサービス
https://ja.softether.org/4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.10_Logging_Service

僕は以下のように、サーバーログと仮想HUBセキュリティログのみ保存し、仮想HUBパケットログは保存しないようにしています。


 

特にパケットログはファイルサイズが大きくなりますが、残念ながら古いログの自動削除機能は用意されていないため、自前で削除設定を用意するとよいでしょう。
僕は以下のようなシェルスクリプトを用意して、cronで定期的に実行するようにしています。

 # vim /root/bin/delete_vpnserver_log.sh

#!/bin/bash
VPNSERVER_DIR=/usr/vpnserver

echo "===== Delete VPN Server Log ====="
echo "`date` Delete VPN Server Log start"

# server_log
find ${VPNSERVER_DIR}/server_log '*.log' -mtime +365 | xargs rm -fv

# security_log
find ${VPNSERVER_DIR}/security_log '*.log' -mtime +30 | xargs rm -fv

# packet_log
find ${VPNSERVER_DIR}/packet_log '*.log' -mtime +7 | xargs rm -fv

echo "`date` Delete VPN Server Log complete"

# EOF

 

 # crontab -e

# Delete VPN Server Log
50 3 * * * /root/bin/delete_vpnserver_log.sh 1>> /var/log/delete_vpnserver.log 2>&1

 

isdまとめ

インターネット上のサーバーをメンテナンスするための
「固定IPアドレスをもつ踏み台サーバー」
として、IaaSクラウドのLinux仮想サーバー上に、
「SoftEther VPNによる踏み台用VPNサーバー」
を構築する手順を記載しました。

上記のようにネットワークをブリッジ接続とすることで、VPN接続時も、クライアントの通常のインターネット通信速度に近い速度でアクセスできることが確認できました。

VPNルーター実機がなくても、クラウドサーバーを使えば、安価で可用性に富む踏み台VPNサーバーを構築・運用できます。
ただし、VPNサーバー自体に不正アクセスをされてしまっては本末転倒なので、セキュリティ対策はしっかり実施しましょう。
 

(関連記事)
・SoftEtherによる踏み台用VPNサーバーの構築手順 on IDCFクラウド CentOS 7
https://inaba-serverdesign.jp/blog/20170817/softether_vpn_idcf_cloud_centos7.html

・ipsetとiptablesでSSHを日本国内からの接続に限定する (CentOS 7)
https://inaba-serverdesign.jp/blog/20150209/ipset_iptables_country_centos7.html
 

Follow me!