CentOS 7 に SoftEther VPN サーバをインストールして自動起動させる方法

前置き

この記事は僕が CentOS 7 に SoftEther VPN サーバーをインストールしたときの記録です。CentOS のバージョンは 7.2 です。

$ cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
$

SoftEther VPN サーバをインストールして、OS 起動時に自動起動する設定までの説明を行います。

SoftEther VPN サーバの設定(仮想ハブ等もろもろ)はこの記事では触れていません。

SoftEther VPN サーバをインストールするために必要なソフトウェア類を確認する

ソフトイーサのマニュアルページによると、SoftEther VPN サーバをリナックスにインストールするには以下 12 個のソフトウェア、ライブラリが必要です。

  1. gcc ソフトウェア
  2. binutils ソフトウェア
  3. パッケージファイル展開用の tar や gzip などのソフトウェア
  4. chkconfig システムユーティリティ
  5. cat や cp などの基本的なファイル操作ユーティリティ
  6. 日本語環境で使用するための EUC-JP や UTF-8 などのコードページテーブル
  7. libc (glibc) ライブラリ
  8. zlib ライブラリ
  9. openssl ライブラリ
  10. readline ライブラリ
  11. ncurses ライブラリ
  12. pthread ライブラリ

だからまず最初にやることは、CentOS にこれらがインストールされていることを確認します。

※ソフトイーサのマニュアルページに「ソフトウェアとライブラリが必要」という風にかかれているのでそれを踏襲した書き方にしましたが、僕自身ソフトウェアとライブラリの違いがよくわかっていないことをご承知の上お読みください。

CentOS にインストール済みのソフトを確認する

yum list installed でまずはザザーっと確認しました。

$ yum list installed | grep -E 'gcc|binutils|glibc|zlib|openssl|readline|ncurses|pthread'
binutils.x86_64                         2.23.52.0.1-55.el7             @anaconda
glibc.x86_64                            2.17-105.el7                   @anaconda
glibc-common.x86_64                     2.17-105.el7                   @anaconda
libgcc.x86_64                           4.8.5-4.el7                    @anaconda
ncurses.x86_64                          5.9-13.20130511.el7            @anaconda
ncurses-base.noarch                     5.9-13.20130511.el7            @anaconda
ncurses-libs.x86_64                     5.9-13.20130511.el7            @anaconda
openssl.x86_64                          1:1.0.1e-42.el7.9              @anaconda
openssl-libs.x86_64                     1:1.0.1e-42.el7.9              @anaconda
readline.x86_64                         6.2-9.el7                      @anaconda
zlib.x86_64                             1.2.7-15.el7                   @anaconda
zlib-devel.x86_64                       1.2.7-15.el7                   @base
$

このコマンド一発で、必要な 12 個のソフトウェアのうち、

  • binutils
  • libc(glibc)
  • openssl
  • readline
  • ncurses
  • zlib

がインストールされていることがわかります。

chkconfig はなくてもいいのかなと思いますし、cat や cp は当たり前のように入っていますし、EUC-JP や UTF-8 などのコードページテーブルは意味がわかりませんし、pthread も意味がわからないです。

gcc だけはなくてはいけないはずなので、これだけインストールすることにしました。

$ yum info gcc.x86_64
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: mirror.premi.st
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
利用可能なパッケージ
名前                : gcc
アーキテクチャー    : x86_64
バージョン          : 4.8.5
リリース            : 11.el7
容量                : 16 M
リポジトリー        : base/7/x86_64
要約                : Various compilers (C, C++, Objective-C, Java, ...)
URL                 : http://gcc.gnu.org
ライセンス          : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
説明                : The gcc package contains the GNU Compiler Collection version 4.8.
                    : You'll need this package in order to compile C code.

$ sudo yum install gcc.x86_64
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: ftp.tsukuba.wide.ad.jp
 * epel: mirror.premi.st
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
epel/x86_64/primary_db                                                                                       | 4.7 MB  00:00:07     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ gcc.x86_64 0:4.8.5-11.el7 を インストール
--> 依存性の処理をしています: libgomp = 4.8.5-11.el7 のパッケージ: gcc-4.8.5-11.el7.x86_64
--> 依存性の処理をしています: cpp = 4.8.5-11.el7 のパッケージ: gcc-4.8.5-11.el7.x86_64
--> 依存性の処理をしています: libgcc >= 4.8.5-11.el7 のパッケージ: gcc-4.8.5-11.el7.x86_64

(中略)

  検証中                  : glibc-devel-2.17-157.el7_3.1.x86_64                                                               11/15 
  検証中                  : libgomp-4.8.5-4.el7.x86_64                                                                        12/15 
  検証中                  : libgcc-4.8.5-4.el7.x86_64                                                                         13/15 
  検証中                  : glibc-common-2.17-105.el7.x86_64                                                                  14/15 
  検証中                  : glibc-2.17-105.el7.x86_64                                                                         15/15 

インストール:
  gcc.x86_64 0:4.8.5-11.el7                                                                                                         

依存性関連をインストールしました:
  cpp.x86_64 0:4.8.5-11.el7                      glibc-devel.x86_64 0:2.17-157.el7_3.1    glibc-headers.x86_64 0:2.17-157.el7_3.1   
  kernel-headers.x86_64 0:3.10.0-514.16.1.el7    libmpc.x86_64 0:1.0.1-3.el7              mpfr.x86_64 0:3.1.1-4.el7                 

依存性を更新しました:
  glibc.x86_64 0:2.17-157.el7_3.1 glibc-common.x86_64 0:2.17-157.el7_3.1 libgcc.x86_64 0:4.8.5-11.el7 libgomp.x86_64 0:4.8.5-11.el7

完了しました!
$

以上で準備完了と判断し、次に進めます。

SoftEther VPN のソースコードをダウンロードする

こちらのページ からダウンロードします。


以上のように選択して表示されたファイルをクリックしてダウンロードします。僕のときは Ver 4.22 でした。以下のように ↓ MacBook Air でダウンロードしました。


それでこのファイルを CentOS に scp で転送します。

$ scp ./softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz nobi@172.16.1.2:/tmp
nobi@172.16.1.2's password: 
softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz                                   100% 6128KB   3.0MB/s   00:02    
$

これで CentOS に SoftEther VPN サーバをインストール準備が整いました。それでは次から CentOS でインストール作業をしていきます。

SoftEther VPN サーバ本体 (プログラム) を生成する

作業ディレクトリ (今回は /tmp) まで移動します。

$ cd /tmp
$ pwd
/tmp
$ ls -l soft*
-rw-r--r--. 1 nobi nobi 6275265  4月 29 20:25 softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
$

まずは tar.gz で固められているファイルを解凍・展開しましょう。

$ tar zxvf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz 
vpnserver/
vpnserver/Makefile
vpnserver/.install.sh
vpnserver/ReadMeFirst_License.txt
vpnserver/Authors.txt
vpnserver/ReadMeFirst_Important_Notices_ja.txt
vpnserver/ReadMeFirst_Important_Notices_en.txt
vpnserver/ReadMeFirst_Important_Notices_cn.txt
vpnserver/code/
vpnserver/code/vpnserver.a
vpnserver/code/vpncmd.a
vpnserver/lib/
vpnserver/lib/libcharset.a
vpnserver/lib/libcrypto.a
vpnserver/lib/libedit.a
vpnserver/lib/libiconv.a
vpnserver/lib/libintelaes.a
vpnserver/lib/libncurses.a
vpnserver/lib/libssl.a
vpnserver/lib/libz.a
vpnserver/lib/License.txt
vpnserver/hamcore.se2
$ ls -l
合計 6136
-rw-r--r--. 1 nobi nobi 6275265  4月 29 20:25 softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
drwxrwxr-x. 4 nobi nobi    4096 11月 27 16:03 vpnserver
$

vpnserver ディレクトリが出てきました。ここに入って make を実行して実行可能ファイル (SoftEther VPN サーバ本体のこと) を生成します。

$ cd vpnserver/
$ ls
Authors.txt  ReadMeFirst_Important_Notices_cn.txt  ReadMeFirst_Important_Notices_ja.txt  code         lib
Makefile     ReadMeFirst_Important_Notices_en.txt  ReadMeFirst_License.txt               hamcore.se2
$ sudo make
--------------------------------------------------------------------

SoftEther VPN Server (Ver 4.22, Build 9634, Intel x64 / AMD64) for Linux Install Utility
Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved.

--------------------------------------------------------------------


Do you want to read the License Agreement for this software ?

 1. Yes
 2. No

Please choose one of above number: 

上記のように make を実行すると、「ライセンスを読みたいですか?」と聞いてくるので 1 を入力してエンターを押します。

その次に、「ライセンスの同意について読んで理解しましたか?」と聞いてくるので 1 を入力してエンターを押します。

その次に、「ライセンスに同意しましたか?」と聞いてくるので 1 を入力してエンターを押します。

そうすると画面にバラバラと文字が出力されて SoftEther VPN サーバ本体のプログラムが作られていきます。こんな感じ ↓ です。

make[1]: ディレクトリ `/tmp/vpnserver' に入ります
Preparing SoftEther VPN Server...
ranlib lib/libcharset.a
ranlib lib/libcrypto.a
ranlib lib/libedit.a
ranlib lib/libiconv.a
ranlib lib/libintelaes.a
ranlib lib/libncurses.a
ranlib lib/libssl.a
ranlib lib/libz.a
ranlib code/vpnserver.a
gcc code/vpnserver.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpnserver
ranlib code/vpncmd.a
gcc code/vpncmd.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpncmd
./vpncmd /tool /cmd:Check
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.22 Build 9634   (Japanese)
Compiled 2016/11/27 15:23:56 by yagi at pc30
Copyright (c) SoftEther VPN Project. All Rights Reserved.

VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。

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

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

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

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

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

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


--------------------------------------------------------------------
The preparation of SoftEther VPN Server is completed !


*** How to switch the display language of the SoftEther VPN Server Service ***
SoftEther VPN Server supports the following languages:
  - Japanese
  - English
  - Simplified Chinese

You can choose your prefered language of SoftEther VPN Server at any time.
To switch the current language, open and edit the 'lang.config' file.


*** How to start the SoftEther VPN Server Service ***

Please execute './vpnserver start' to run the SoftEther VPN Server Background Service.
And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure SoftEther VPN Server.

Of course, you can use the VPN Server Manager GUI Application for Windows / Mac OS X on the other Windows / Mac OS X computers in order to configure the SoftEther VPN Server remotely.


*** For Windows users ***
You can download the SoftEther VPN Server Manager for Windows
from the http://www.softether-download.com/ web site.
This manager application helps you to completely and easily manage the VPN server services running in remote hosts.


*** For Mac OS X users ***
In April 2016 we released the SoftEther VPN Server Manager for Mac OS X.
You can download it from the http://www.softether-download.com/ web site.
VPN Server Manager for Mac OS X works perfectly as same as the traditional Windows versions. It helps you to completely and easily manage the VPN server services running in remote hosts.

--------------------------------------------------------------------

make[1]: ディレクトリ `/tmp/vpnserver' から出ます
$

これで実行可能ファイル= SoftEther VPN サーバ本体が作成されました。

SoftEther VPN サーバを /usr/local に配置して適切なパーミッションを付与する

ここまでは作業ディレクトリである /tmp で作業をしていましたが、SoftEther VPN を /usr/local に配置することにします。なんで /usr/local かというとマニュアルにそう書いてあるからという程度の理由です。別に好きなところに置いて良いと思います。

$ cd ..
$ ls -l
合計 6136
-rw-r--r--. 1 nobi nobi 6275265  4月 29 20:25 softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
drwxrwxr-x. 5 nobi nobi    4096  4月 29 20:37 vpnserver
$ sudo mv vpnserver/ /usr/local
[sudo] password for nobi: 
$ ls -l /usr/local/vpnserver/
合計 10488
-rwxrwxr-x. 1 nobi nobi    2784 11月 27 16:03 Authors.txt
-rwxrwxr-x. 1 nobi nobi    2900 11月 27 16:03 Makefile
-rwxrwxr-x. 1 nobi nobi   30801 11月 27 16:03 ReadMeFirst_Important_Notices_cn.txt
-rwxrwxr-x. 1 nobi nobi   36296 11月 27 16:03 ReadMeFirst_Important_Notices_en.txt
-rwxrwxr-x. 1 nobi nobi   50695 11月 27 16:03 ReadMeFirst_Important_Notices_ja.txt
-rwxrwxr-x. 1 nobi nobi   58932 11月 27 16:03 ReadMeFirst_License.txt
drwx------. 2 root root       6  4月 29 20:37 chain_certs
drwxrwxr-x. 2 nobi nobi      39  4月 29 20:37 code
-rwxrwxr-x. 1 nobi nobi 1296225 11月 27 16:03 hamcore.se2
-rw-------. 1 root root     867  4月 29 20:37 lang.config
drwxrwxr-x. 2 nobi nobi    4096  4月 29 20:37 lib
-rwxr-xr-x. 1 root root 4616241  4月 29 20:37 vpncmd
-rwxr-xr-x. 1 root root 4616349  4月 29 20:37 vpnserver
$

続いて各ファイルのパーミッション設定です。root 権限でないと読み書き等できないように変えてしまいます。

$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpncmd
$ sudo chmod 700 vpnserver
$ sudo chown root:root *
$ ls -l
合計 10488
-rw-------. 1 root root    2784 11月 27 16:03 Authors.txt
-rw-------. 1 root root    2900 11月 27 16:03 Makefile
-rw-------. 1 root root   30801 11月 27 16:03 ReadMeFirst_Important_Notices_cn.txt
-rw-------. 1 root root   36296 11月 27 16:03 ReadMeFirst_Important_Notices_en.txt
-rw-------. 1 root root   50695 11月 27 16:03 ReadMeFirst_Important_Notices_ja.txt
-rw-------. 1 root root   58932 11月 27 16:03 ReadMeFirst_License.txt
drw-------. 2 root root       6  4月 29 20:37 chain_certs
drw-------. 2 root root      39  4月 29 20:37 code
-rw-------. 1 root root 1296225 11月 27 16:03 hamcore.se2
-rw-------. 1 root root     867  4月 29 20:37 lang.config
drw-------. 2 root root    4096  4月 29 20:37 lib
-rwx------. 1 root root 4616241  4月 29 20:37 vpncmd
-rwx------. 1 root root 4616349  4月 29 20:37 vpnserver
$

これで SoftEther VPN サーバの配置と各ファイル設定が完了です。次に動作確認をおこないます。

SoftEther VPN サーバの動作チェックを check コマンドで行う

SoftEther VPN には、インストールしたものがちゃんと動くかどうかチェックしてくれる機能がありますので、これを使って動作を確認します。以下のように実施します。

$ ls
Authors.txt                           ReadMeFirst_Important_Notices_en.txt  chain_certs  lang.config  vpnserver
Makefile                              ReadMeFirst_Important_Notices_ja.txt  code         lib
ReadMeFirst_Important_Notices_cn.txt  ReadMeFirst_License.txt               hamcore.se2  vpncmd
$ sudo ./vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.22 Build 9634   (Japanese)
Compiled 2016/11/27 15:23:56 by yagi at pc30
Copyright (c) SoftEther VPN Project. All Rights Reserved.

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

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

1 - 3 を選択: 3

VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。

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

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

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

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

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

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

VPN Tools>exit
$

「全てのチェックに合格しました。」が出れば OK です。

SoftEther VPN サーバが自動起動させる設定

OS が起動した時に SoftEther VPN サーバがサービスとして自動起動する設定を行います。systemd を使います。SoftEther VPN サーバを起動させるためのファイルを作成する場所= /etc/systemd/system に移動します。

$ cd /etc/systemd/system
$ ls -l
合計 12
drwxr-xr-x. 2 root root   30  3月 22  2016 basic.target.wants
lrwxrwxrwx. 1 root root   46  3月 22  2016 dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root   57  3月 22  2016 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx. 1 root root   37  3月 22  2016 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x. 2 root root   85  3月 22  2016 default.target.wants
drwxr-xr-x. 2 root root   31  3月 22  2016 getty.target.wants
drwxr-xr-x. 2 root root 4096  4月 16 18:53 multi-user.target.wants
drwxr-xr-x. 2 root root   30  4月 16 18:53 remote-fs.target.wants
drwxr-xr-x. 2 root root 4096  4月 16 18:53 sockets.target.wants
drwxr-xr-x. 2 root root 4096  4月 16 18:52 sysinit.target.wants
drwxr-xr-x. 2 root root   43  3月 22  2016 system-update.target.wants
$

ここに softethervpn.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

このファイルに実行権限はつけないでおきます。

$ ls -l softethervpn.service 
-rw-r--r--. 1 root root 215  4月 29 21:50 softethervpn.service
$

以下のコマンドで自動起動する設定を ON にします。

$ sudo systemctl enable softethervpn
Created symlink from /etc/systemd/system/multi-user.target.wants/softet
$

enable になったかどうかを確認しておきます。

$ sudo systemctl list-unit-files --type=service | grep softether
softethervpn.service                        enabled 
$

sudo shutdown -r now で CentOS を再起動して SoftEther VPN サーバが起動するか確認しておく。

$ ps -ef | grep vpn
root      1049     1  0 22:16 ?        00:00:00 /usr/local/vpnserver/vpnserver execsvc
root      1051  1049  0 22:16 ?        00:00:00 /usr/local/vpnserver/vpnserver execsvc
nobi      2396  2373  0 22:17 pts/0    00:00:00 grep --color=auto vpn
$ uptime
 22:17:24 up 0 min,  1 user,  load average: 0.64, 0.21, 0.07
$

これで OK!

/var/log/messages には以下のようなログが吐かれていることでしょう。

Apr 29 22:16:48 localhost systemd: Starting SoftEther VPN Server...
Apr 29 22:16:48 localhost vpnserver: The SoftEther VPN Server service has been started.
Apr 29 22:16:48 localhost systemd: Started SoftEther VPN Server.

これで SoftEther VPN サーバのプロセスが CentOS 7 で起動するようになりました。SoftEther VPN サーバの各種設定はまた次回書きたいと思います。

CentOS 7 に SoftEther VPN サーバをインストールして自動起動させる方法” に対して2件のコメントがあります。

  1. sazae より:

    記事参考にさせていただきました。ありがとうございます。
    下記の箇所ですが、「t」が最後消えているかもしれません。
    ———————————————————————-
    ここに softethervpn.service というファイルを作ります。以下の感じです。
    [Unit]
    Description=SoftEther VPN Server

    [Install]
    WantedBy=multi-user.targe ⇒ WantedBy=multi-user.target
    ———————————————————————-

     

    1. keramax2014 より:

      わざわざお時間さいてご連絡していただきましてありがとございます!!修正しておきます!!

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください