FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

レンタルサーバーにSoftEther VPN を導入 (Debian7.8)

レンタルサーバーにSoftEther VPN を導入しました。これでどこからでも安心して繋げるハズ。いくつかハマッた点もあるので備忘録として載せておきます。

SoftEther VPN はオープンソースの、無償で、複数プラットフォームおよび複数 VPN プロトコル対応の VPN ソフトウェアであり、筑波大学における研究プロジェクトとして開発されています。
( https://ja.softether.org/ より引用)

実際に使ってみて分ったのですが、通常のVPNとはずいぶんしくみが異なっていて、LANカード、LANケーブル、ハブといったデバイス自体を仮想化することで、物理的には接続不可能な端末同士を仮想デバイスで接続するというようなことを行っています。

f:id:fxborg:20170623224721p:plain( https://ja.softether.org/ より引用)

再インストールしたのでOSの初期設定から行います。

導入前の状態

OSは Debian7.8の64bitでデスクトップ環境としてLXDEを入れます。 

▼初期設定

apt-get update
apt-get upgrade
adduser hoge
usermod -G sudo hoge
aptitude -y install task-japanese

この後 「/etc/locale.gen」ファイル内の 「# ja_JP.UTF-8 UTF-8」のコメントを外してコンソール上で日本語が使えるようにします。

▼LXDEのインストール

aptitude -y install task-japanese-desktop ibus-mozc
apt-get install wine
apt-get install lxde
apt-get install xvfb lightdm network-manager
systemctl enable lightdm.service
reboot

SoftEther VPN Serverのインストール 

SoftEther VPN Serverのインストールはこちらの記事のとおりに行ったので割愛します。

※ダウンロードの際にベータ版が一番上に来やすいので注意が必要です。

SoftEther VPN サーバー管理ツール

これも一旦はこちらの記事どおりに進めました。

これでクライアントソフトを入れて接続できるかとこの時点では思っていましたが、結果はそうなりませんでした。いろいろ試みたのですがうまくいった設定だけを残します。

不要な設定を削除

とりあえず使用しない機能を全てオフにしました。

▼IPsec/L2TP設定(全チェックを外す)

f:id:fxborg:20170625005120p:plain

 ▼OpenVPN/MS-SSTP設定(全チェックを外す)

f:id:fxborg:20170625005404p:plain

tapデバイスの作成

SoftEther VPNサーバーの役割はHUBなので、実際に通信を行うにはLANカードが別途必要になります。現在、使用しているVPSでは NICの増設がNGなので tap デバイスという仮想的なLANカードを作成します。

ローカルブリッジ設定を開き「新しい tap デバイスとのブリッジ接続(T)」を選択した上で「新しい tap デバイス名 」を入力し「ローカルブリッジの追加」ボタンをクリックします。

f:id:fxborg:20170625010946p:plain

これで tap デバイスが作成されました。ただし、このままだとIPアドレスが付与されないので、起動スクリプトを修正します。

▼「/etc/init.d/vpnserver」ファイル の内容

#!/bin/sh

# chkconfig: 2345 99 01
# description: SoftetherVPN 4.20

### BEGIN INIT INFO
# Provides:          vpnserver
# Required-Start:
# Required-Stop:
# X-Stop-After:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SoftetherVPN 4.20
# Description:
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
IFCFG="/sbin/ifconfig tap_vpn 192.168.30.2 netmask 255.255.255.0 broadcast 192.168.30.255"
test -x $DAEMON || exit 0

case "$1" in
start)
        $DAEMON start
        touch $LOCK
        sleep 3
        $IFCFG
        ;;
stop)
        $DAEMON stop
        rm $LOCK
        ;;
restart)
        $DAEMON stop
        sleep 3
        $DAEMON start
        sleep 3
        $IFCFG
        ;;
*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1

esac

exit 0

サーバー起動の3秒後に IPアドレスを設定しています。

ifconfig tap_vpn 192.168.30.2 netmask 255.255.255.0 broadcast 192.168.30.255

セキュリティ上の重要な設定

・・・ところで、このサーバー管理マネージャーって危険じゃないですか?
アクセス制限する方法を探していたら、こちらにありました。

3.3.18 IP アドレスによるリモート管理接続元の制限

許可されていないユーザーが不正に VPN Server に接続して管理操作を行ってしまわないように、VPN Server 全体の管理モードに接続するためのパスワードと仮想 HUB 単体の管理モードに接続するためのパスワードの 2 種類により VPN Server は保護されています。

 

しかし、パスワードのみで不正な管理接続を防御するだけでは不安な場合があります。そのような場合、管理接続元の IP アドレスを事前に指定したものに限定させることが可能です。

 

VPN Server がインストールされているディレクトリ (vpnserver 実行可能ファイルがあるディレクトリ) 上に adminip.txt という名前のテキストファイルを作成し、そのテキストファイル上に適切に記述を行うことによって、VPN Server 全体、またはそれぞれの仮想 HUB ごとに、サーバー管理マネージャや vpncmd からの接続を許可する IP アドレスを設定することができます。

https://ja.softether.org/4-docs/1-manual/3/3.3 より引用)

 adminip.txt に接続するパソコンのIPアドレスを記述することで、管理マネージャーのアクセスを限定することが可能です。この設定はマストですね。

NATトラバーサルの無効化

Soft Etherは初期設定で NATトラバーサル機能が有効になっているので、基本的にUDPが使われます。

NAT トラバーサル機能はデフォルトで有効になっています。NAT トラバーサル機能が有効に設定されている PacketiX VPN Server は、たとえ NAT やファイアウォールの内側であっても、特別な設定なしにインターネット側から VPN 接続を受付けることができます。

 

NAT トラバーサル機能をサーバー側で無効にするには、PacketiX VPN Server の設定ファイルの「DisableNatTraversal」項目の値を「true」に変更してください。クライアント側で無効にするには、接続先の VPN サーバーのホスト名の後に「/tcp」というサフィックスを追加してください。

ファイヤーウォールを越えられるというのはSoftEtherの長所でもありますが、勝手な通信に応答して欲しくないので、DisableNatTraversal 項目を「true」に変更しました。また、TCPポートも1つに限定し、念のため DisableDos項目を「false」に設定します。

▼「/usr/local/vpnserver/vpn_server.config」内

        ...
        declare ListenerList
        {
                declare Listener0
                {
                        bool DisableDos false
                        bool Enabled true
                        uint Port 5555
                }
        }
        ...

NATトラバーサルを無効にした場合は、サーバー側のTCPポートを開ける必要があります。また、プライベートネットワークへのアクセスも許可します。

▼ファイヤーウォール設定

f:id:fxborg:20170625020347p:plain

クライアント接続マネージャー

クライアント接続マネージャーのインストールは特に難しくないので、こちらのサイトを参考に行います。

https://ja.softether.org/4-docs/1-manual/8/8.2

▼仮想LANカードの作成

下のエリアを右クリックするとメニューが表示されるので、「新規仮想LANカードの作成」を選択します。

f:id:fxborg:20170625023158p:plain

仮想 LAN カードの名前 の入力を促されるので、任意のLANカード名を入力しOKします。

f:id:fxborg:20170625023438p:plain

少し時間が掛かりますが、しばらく待つと仮想LANカードが作成されます。

次に「新しい接続設定の作成」をクリックし、ホスト名、ポート番号を入力します。仮想 HUB名は自動的に選択されます。またユーザー名とパスワードも入力します。

f:id:fxborg:20170625025130p:plain

さらに「高度な通信設定」ボタンをクリックし、「ルーティングテーブルの調整処理を行わない」にチェックし、設定を保存します。

f:id:fxborg:20170625024611p:plain

クライアント側のIPアドレス設定

サーバー側でも行ったように、クライアント側のIPアドレスを静的に設定します。DHCPを使用する例をよく見かけますが、これを行うとデフォルトゲートウェイが書き換えられてしまいインターネットへ接続できなくなるので注意が必要です。

仮想LANカードのプロパティを開き「インターネット プロトコルバージョン4(TCP/IPv4)」を選択しプロパティボタンをクリックします。

f:id:fxborg:20170625025801p:plain

IPアドレスとサブネットマスクを入力し設定を保存します。

f:id:fxborg:20170625030141p:plain

これで全ての設定が完了しました。接続に成功すると次のメッセージが表示されます。

f:id:fxborg:20170625112522p:plain

認証方法に「クライアント証明書認証」、「スマートカード認証」なども選択できるのでこの辺りも調べたいと思います。