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 個のソフトウェア、ライブラリが必要です。
- gcc ソフトウェア
- binutils ソフトウェア
- パッケージファイル展開用の tar や gzip などのソフトウェア
- chkconfig システムユーティリティ
- cat や cp などの基本的なファイル操作ユーティリティ
- 日本語環境で使用するための EUC-JP や UTF-8 などのコードページテーブル
- libc (glibc) ライブラリ
- zlib ライブラリ
- openssl ライブラリ
- readline ライブラリ
- ncurses ライブラリ
- 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 サーバの各種設定はまた次回書きたいと思います。
記事参考にさせていただきました。ありがとうございます。
下記の箇所ですが、「t」が最後消えているかもしれません。
———————————————————————-
ここに softethervpn.service というファイルを作ります。以下の感じです。
[Unit]
Description=SoftEther VPN Server
…
[Install]
WantedBy=multi-user.targe ⇒ WantedBy=multi-user.target
———————————————————————-
わざわざお時間さいてご連絡していただきましてありがとございます!!修正しておきます!!