本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
PacketixVPNはほぼ同機能で無償で利用できる
長年お世話になっているPacketix VPNですが、全く同じ作りでSoftEther VPN というソフトがフリーソフトで提供されています。少し機能に差があるそうですが、難しい事は良く分かりません。とりあえず、VPNしたい、ネットワークを暗号化して接続したいという場合にはほとんど違いがないのだと思います。
しかもOSもフリーで利用できるLinuxに対応しています。
Debian Strech32bitにインストール
ちなみに、当初はStrech 64bitに、vpnserver64bi版のインストールを試みましたが、
softether-vpnserver-v4.18-9570-rtm-2015.07.26-linux-x64-64bit.tar.gz
をダウンロードしmakeするも
/usr/bin/ld: lib/libintelaes.a(intel_aes.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object。 -fPIC を付けて再コンパイルしてください。 /usr/bin/ld: 最終リンクに失敗しました: 出力に対応するセクションがありません collect2: error: ld returned 1 exit status
と表示され、パラメータを変えつつ試したが力尽きました。
そこで、気を取り直してStrech32bitでインストールし直しました。
Makeできる環境を準備
Makeできる環境を準備します。
apt-get install build-essential
vpnserverアプリをダウンロード
wget http://jp.softether-download.com/files/softether/v4.20-9608-rtm-2016.04.17-tree/Linux/SoftEther_VPN_Server/32bit_-_Intel_x86/softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x86-32bit.tar.gz
解凍して
# tar -xvvzf softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x86-32bit.tar.gz
できた
vpnserver
フォルダに入り、
いざmake
# make -------------------------------------------------------------------- SoftEther VPN Server (Ver 4.20, Build 9608, Intel x86) 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: 1 Did you read and understand the License Agreement ? (If you couldn't read above text, Please read 'ReadMeFirst_License.txt' file with any text editor.) 1. Yes 2. No Please choose one of above number: 1 Did you agree the License Agreement ? 1. Agree 2. Do Not Agree Please choose one of above number: 1 make[1]: ディレクトリ '/home/hanako/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 -m32 -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 -m32 -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.20 Build 9608 (Japanese) Compiled 2016/04/17 21:59:35 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 on the other Windows PC in order to configure the SoftEther VPN Server remotely. -------------------------------------------------------------------- make[1]: ディレクトリ '/home/hanako/vpnserver' から出ます
makeしたフォルダごと移動します
# mv vpnserver/ /usr/local/
パーミッションの設定
root@PacketixSmart:/usr/local/vpnserver# chmod 600 *
root@PacketixSmart:/usr/local/vpnserver# chmod 700 vpncmd
root@PacketixSmart:/usr/local/vpnserver# chmod 700 vpnserver
起動スクリプトの設定
起動スクリプトを作成します。
/etc/init.d に vpnserverというファイルを作成
root@PacketixSmart:/etc/init.d#vi vpnserver #!/bin/sh ### BEGIN INIT INFO # Provides: vpnserver # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: SoftEther VPN Server # Description: SoftEther VPN Server ### END INIT INFO DAEMON=/usr/local/vpnserver/vpnserver LOCK=/var/lock/vpnserver test -x $DAEMON || exit 0 case "$1" in start) $DAEMON start touch $LOCK ;; stop) $DAEMON stop rm $LOCK ;; restart) $DAEMON stop sleep 3 $DAEMON start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
ブートシーケンス構成ツールのインストール
root@PacketixSmart:/etc/init.d# apt-get install insserv
ブートシーケンス構成
root@PacketixSmart:/etc/init.d# insserv vpnserver
vpnserver起動
root@PacketixSmart:/etc/init.d# ./vpnserver start
The SoftEther VPN Server service has been started.
SoftEther VPNServer のインストール
VPNサーバ管理マネージャを利用して設定します。私はこの部分はWindowsクライアントから行っています。
こちらをダウンロードしてインストール
http://jp.softether-download.com/files/softether/v4.20-9608-rtm-2016.04.17-tree/Windows/SoftEther_VPN_Server_and_VPN_Bridge/softether-vpnserver_vpnbridge-v4.20-9608-rtm-2016.04.17-windows-x86_x64-intel.exe
SoftEther VPNサーバ管理マネージャ(管理ツールのみ)
をインストールします。
新しい接続先設定から新しいサーバを指定します。
初回起動時はパスワードを設定するように求められます。
リモートアクセスVPNサーバを構築します。
携帯からL2TPできるようにする
携帯電話からL2TPでVPNを張ってDMZの中に入る事ができるようになります。
iPhoneでも、iPadでも、Androidでも接続可能です。内部で公開しているwebサーバをvpnサーバ越しに公開するという事を実現しました。
イメージ的にはこんな感じです。核になるのはSecureNAT機能になります。DHCP機能でスマートフォンにIPアドレスを割り当てる事ができ、パケットをSecureNATで受け付けた外側のppp0のIPアドレスにNATし、LAN内にパケットを回す事ができます。
もしかしたら、eth1のアドレスにSecureNATできるのではないかとも思ったのですが、ちょっと実現できずでした。
iPhone およびAndroidからの接続
こちらを参考にしました。
細かい設定については上記内容をサイトを参考にされるのが良いかと思います。
この中でもSecure NATについてはかなり強力な機能。使える機能だと思います。これさえあれば、LAN何にパケットを招き入れるのも簡単になります。
私どもの環境ではブリッジ設定なども考えられたのですが、SecureNATでIPアドレスをマスカレードし、中に入れ込むという設定にしました。
詳細はこちらで。
iptablesの設定
# PacketixVPN接続test iptables -A INPUT -i ppp0 -p udp -m udp --dport 500 -j ACCEPT iptables -A INPUT -i ppp0 -p udp -m udp --dport 4500 -j ACCEPT
ゲートウェイになっているので、ここでファイヤーウォールに穴をあけておかないとパケットが入ってきません。L2TPで利用するのが udp 500,4500ポートです。こちらを接続可能な状態にします。
ちなみにiptablesを触って、次回再起動時に有効にしたい場合は
iptables-save > /etc/iptables/rules.v4
としておく
アクセスさせたいサーバの設定
スマートフォンからSoftether VPN Serverに接続ができるようになると、SecureNAT機能により、Softether VPN Serverで受け付けたNICに割り振っているIPアドレスにNATする事ができます。
今回ppp0で受け付けたので、NATさらたIPパケットのソースアドレスは、ppp0のアドレスになっていました。ここに気づくのに時間がかかりました。てっきり、eth1になるのではないかと思っていたのですが、tcpdumpすると、外側のppp0にNATされているのが分かりました。
そこで、アクセスさせたいサーバに ppp0からきたパケットはeth1に戻るようroute addしました。こうする事で、アクセスさせたいサーバに接続できるようになりました。
接続エラーが頻繁に出る
スマホでの接続は全く問題ないのですが、パソコンでVPN Clientから接続するとこんなメッセージが頻繁に出ました。
2017-12-04 15:13:14.819 コネクション “CID-80” は理由 “VPN セッションの通信がタイムアウトしました。クライアントから VPN Server への接続が切断された可能性があります。” (コード 13) で終了しました。
接続完了するものの、すぐにVPNセッションが切れて、このエラーメッセージが表示されます。
インタネットセッションを張っているルータ(Debian Jennie)に設定しました。LAN内からのアクセスでは全く問題でないのにWAN側からのセッションだけこのようなエラーが表示されます。
iptablesの設定を見直し、問題ない。ppp0側にきたpacketをeth0側にpreroutingしてみたりと、設定を色々試してみました。
解決!! 結局Pakcetixクライアントマネージャにて
UDP高速化機能を無効にするのチェックを入れたら、安定して接続できるようになりました。
UDP高速化機能について
VPN Server と VPN Client / Bridge との間では、最初に HTTPS ベースで VPN 接続が確立されます。VPN 接続が一端確立されると、両者は互いに UDP パケットを物理的に送り合い、UDP による疎通が可能であるかどうかを検証します。
もし UDP による疎通が可能であることが検出された場合は、それ以降は、HTTPS トンネルはキープアライブの目的でのみ使用され、VPN 通信のペイロードは UDP 経由で送受信されるようになります。
実装されていない機能
ユーザ認証の方法のうち、「証明書認証」と「外部サーバ認証」はオープンソース版には搭載がありませんでした。ちゃんと差別化されてるんだなぁ、と改めて感心しました。ほとんど機能に違いがなければ、オープンソース版を使っていく事にしようと思いましたが、電子証明書認証をメインで利用していた私にとっては、正規のサーバを購入する意味で動機づけができました。