sstea備忘録

日々のPCライフのメモ、備忘録、及びそれに類推する何か。
記載内容に間違い等を発見された場合はコッソリ教えてください... → sstea<a>aol.jp (<a> を @ に変えてください)


VPN

VPN サーバー(SoftEther) のログ出力先を変更する


以前に Raspberry Pi 上で VPN サーバーを構築し、常時稼動させるようにしました。

特に問題なく安定稼動していたので、それ以後 VPN 関連の設定は弄ることなく放置していたのですが、久しぶりに眺めていて、/home/pi/local/vpnserver/ の中を見てみると、
・ backup.vpn_server.config/
・ server_log/
それぞれのディレクトリ以下に何かファイルがいっぱいできています。
自分は正直、ログとか見ないですし、ディスクイメージごとバックアップも取ってあり、これらファイルは不要です。

ログファイルとかは、どうせなら /var/log/ 以下に作って欲しいんですが。。。
/var/log/ 以下は既に tmpfs にしてありますのでリブートすればさっぱり綺麗になります。)

まずは正攻法でこれらログ出力の停止、出力先の変更を試みようと思います。

◆SoftEther でのログ出力設定
Windows マシンにインストールした「SoftEther VPN サーバー管理マネージャ」を立ち上げます。

[仮想 HUB の管理]から
[ログ保存設定]ボタンで、「セキュリティログ」「パケットログ」はチェックを外せば残さなくできます。

ss_softether_log

自分は既にチェック外していたので、packet_log/、security_log/ の中にログっぽいものはありませんでした。

一通り見てみましたが、上記以外にログ設定関連の項目はなさそうです。。。

◆VPNサーバーのログ出力先変更
ファイルいっぱいできるのは何か気持ち悪いので、ログの出力先を /var/log/ 以下に出力するようにしようと思います。

まず、vpnserver を停止させます。
$ sudo /etc/init.d/vpnserver stop

今あるログディレクトリ等を削除し、リンクを作成します。
$ export LOGDIR=/var/log/vpnserver
$ cd /home/pi/local/vpnserver/

$ sudo rm -rf backup.vpn_server.config
$ sudo rm -rf packet_log
$ sudo rm -rf security_log
$ sudo rm -rf server_log

$ sudo ln -s ${LOGDIR}/backup.vpn_server.config/ backup.vpn_server.config
$ sudo ln -s ${LOGDIR}/packet_log/ packet_log
$ sudo ln -s ${LOGDIR}/security_log/ security_log
$ sudo ln -s ${LOGDIR}/server_log/ server_log


◆initスクリプトの修正
起動時に、RAMディスクにVPNサーバーのログ用ディレクトリを作成するよう、以前に作ったスクリプトを修正します。

/etc/init.d/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
# Description:    SoftEther VPN Server
### END INIT INFO

DAEMON=/home/pi/local/vpnserver/vpnserver
LOGDIR=/var/log/vpnserver
LOCK=/var/lock/vpnserver

vpn_start() {
    ${DAEMON} start
    sleep 2
    tap=`ip tuntap | cut -f1 -d:`
    brctl addif br0 ${tap}
}

vpn_stop() {
    ${DAEMON} stop
}

test -x ${DAEMON} || exit 0

mkdir -p ${LOGDIR}
mkdir -m 0700 -p ${LOGDIR}/backup.vpn_server.config
mkdir -m 0600 -p ${LOGDIR}/packet_log
mkdir -m 0600 -p ${LOGDIR}/security_log
mkdir -m 0600 -p ${LOGDIR}/server_log

        : (略)

上記修正を行なった part3 版が↓です。(上記修正を行なえば下記操作は不要です。)
$ curl http://sstea.blog.jp/raspi/script/vpnserver3 > vpnserver
$ chmod 755 vpnserver
$ sudo mv vpnserver /etc/init.d/


これで、VPNサーバーを再起動するか、リブートすればログファイルの出力先が変わっているはずです。
リブートする度にログは消えるので、蓄積していきません。(良いか悪いかは運用者の方針次第ですが。)
$ sudo /etc/init.d/vpnserver start

Raspberry Pi を VPN サーバーにする、改

前回に引き続き、Raspberry Pi のVPN サーバーの設定を行ないます。

◆VPN 経由で Raspberry Pi 上の web サーバーにローカルアクセス出来ない問題

前回までで VPN 接続は出来るようになりましたが、前回環境ではなぜか VPN 経由では Raspberry Pi 上の web サーバーにローカルアクセスIPアドレスでアクセス出来ませんでした。

いろいろ Google 先生に問い合わせてみると、
「Linux および Solaris オペレーティングシステムでは、仮想 HUB (VPN) の内側からローカルブリッジ先のLANカードから LAN への通信は行うことが出来ますが、ローカルブリッジしている LAN カード自体に対して通信することはできません。これは Linux カーネルの制限事項です。」
という情報を Google 先生から頂きました。

つまり、Linux ではこれは仕様という事。。。
回避策は、、、物理的にLANカードもう一個挿す事。。。

何とか、ソフトだけで回避はできないのか!?
→ できるみたいです!!


何かブリッジの設定をすればいいっぽいみたいですが、すいません。正直、よく分かってないです。

http://www.petapico.biz/ラジ館petapicoshop/softether-vpnで外から-irmagician-を制御してエアコンをつける/

のページの情報が凄く役立ちました。先人の知恵に感謝です。


以下の手順で解決しました。

◆ローカルブリッジの設定

必要パッケージをインストールします。
$ sudo apt-get install bridge-utils

/etc/network/interfaces
を修正します。
auto eth0
iface eth0 inet manual


auto br0
iface br0 inet static
  address 192.168.0.100
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  bridge_ports eth0
  bridge_maxwait 10


前回作った /etc/init.d/vpnserver に下記を追加します。
        : (略)
vpn_start() {
    ${DAEMON} start
    sleep 2
    tap=`ip tuntap | cut -f1 -d:`
    brctl addif br0 ${tap}

}
        : (略)

上記を追加した part2 版が↓です。
$ curl -O http://sstea.blog.jp/raspi/script/vpnserver2 > vpnserver
$ chmod 755 vpnserver
$ sudo mv vpnserver /etc/init.d/

◆tapデバイスの設定

Windows 側で「SoftEther VPN サーバー管理マネージャ」を立ち上げます。
前回の (F-2)  ~ (F-4) の部分の設定を変えます。

メインウィンドウから「ローカルブリッジ設定」ボタンを押下し、「ローカルブリッジ設定」ウィンドウを出します。
「ローカルブリッジの削除」ボタンで前回追加した設定は一旦、削除します。

(F-2)' [新しいローカルブリッジの定義]->[仮想 HUB] を選択
(F-3)' [作成する種類] で「新しい tap デバイスとのブリッジ接続」を選択
(F-4)' [新しい tap デバイス名] を入力
(F-5)' 「ローカルブリッジを追加」ボタンを押下


これで、VPN 経由でも Raspberry Pi 上の web サーバーにアクセス出来るようになりました。

これからは Raspberry Pi を VPN サーバーとして常時稼動させようと思いますので、どれほどの省電力効果があるか分かりませんが、オーバークロック設定は None に戻しておこうと思います。

◆おまけ1
Xperia Z3 には以下のAndroidアプリを入れています。

・WOL用アプリ
Fing - Network Tools

LAN内のマシンを自動的に検出してくれるので、MACアドレスとか入力しなくてもよくてお手軽です。

・リモートデスクトップ用アプリ
Splashtop 2 Remote Desktop

リモートデスクトップでアクセスしたいマシンに Splashtop Streamer をインストールしておく必要はありますが、軽い動画くらいなら普通にリモートデスクトップ経由で見れるくらいのポテンシャルを持ってます。(音も鳴ります)

外出先から VPN 接続し、上記アプリを使用して PC の電源を入れてリモートデスクトップで操作、という事が普通にできてます。

◆おまけ2
Windowsマシンでの動画再生には VLC メディアプレイヤーを使ってるんですが、Splashtop のリモートデスクトップ経由で動画再生した時に、VLC のウィンドウ内が真っ黒で動画が見えないことがありました。

VLC の[ツール]->[設定]->[ビデオ]->[ディスプレイ]->[出力] を「Direct3Dビデオ出力」に設定することで、表示されるようになりました。

Raspberry Pi を VPN サーバーにする

今回は、外出先から家のPCにアクセスするために Raspberry Pi を VPN(Virtual Private Network) サーバーにしてみたいと思います。
SotfEther VPN というOSSのVPNソフトがありますので、それを今回は使用してみる事にします。

以下の要件を満たす事が可能な環境を構築する事を目指します。

・PCの電源が落ちていれば外出先から電源投入できる(Wake On LAN)。
・外出先からPCにスマホのリモートデスクトップアプリでアクセスできる。
・外出先から前回作ったwebブラウザで Raspberry Pi を操作できる。
・セキュリティとかあんまり詳しくないので、そのあたりは良きに計らってくれる。

◆VPN(SoftEther) サーバーソフトのインストール
https://ja.softether.org/4-docs/1-manual/7/7.3 を参考にインストールしました。

http://www.softether-download.com/ja.aspx から SoftEther VPN Server の ARM EABI 版をダンロードし、展開します。
(現時点の最新は v4.15-9546-beta-2015.04.05 でした)
$ wget http://jp.softether-download.com/files/softether/v4.15-9546-beta-2015.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz

$ tar xvzf softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz
$ cd vpnserver/
$ make

後は、何回か「1」を押してもらえればいいです。。


公式のマニュアルでは vpnserver は /usr/local/vpnserver に移動させていますが、自分は /home/pi/local/vpnserver に移動しておきます。(個人的な趣味です。)

公式マニュアルに従って、root のみ実行可能なように権限変更を行なっておきます。
$ mv vpnserver /home/pi/local/vpnserver

$ cd /home/pi/local/vpnserver/
$ chmod 600 *
$ chmod 700 vpncmd vpnserver

$ cd ../
$ sudo chown -R root:root vpnserver/
vpncmd の check コマンドで動作チェックできます。
$ cd /home/pi/local/vpnserver/
$ sudo ./vpncmd

◆VPN のスタートアップスクリプトを登録

公式のスタートアップスクリプトやその他諸々を参考に書きました。

/etc/init.d/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
# Description:    SoftEther VPN Server
### END INIT INFO

DAEMON=/home/pi/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

vpn_start() {
    ${DAEMON} start
}

vpn_stop() {
    ${DAEMON} stop
}

test -x ${DAEMON} || exit 0

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

exit 0

上記を実行権限を与えて、 /etc/init.d/ 直下に移動し、ブート時に自動起動するように登録します。
$ curl -O http://sstea.blog.jp/raspi/script/vpnserver
$ chmod 755 vpnserver

$ sudo mv vpnserver /etc/init.d/
$ sudo chkconfig --add vpnserver

VPNサービスを開始します。再起動でもいいです。ブート時に自動起動するので。
$ sudo /etc/init.d/vpnserver start

◆VPNの設定
VPNの設定は Windows 側から行なえるので楽でした。

http://www.softether-download.com/ja.aspx から「SoftEther VPN Server Manager for Windows」をダンロードし、windows マシンにインストールし、管理ツールを実行します。

(A-1) 「新しい接続設定」ボタンを押下
(A-2) 「新しい接続設定の作成」ウィンドウが出るので、[接続設定名], [ホスト名] をそれぞれ入力し、[OK]
(A-3) 「接続」ボタンを押下
ss_softether01
ss_softether02
(B-1) メインのウィンドウ(「VPN サーバー管理マネージャ」)が出るので、「仮想 HUB の作成」ボタンを押下
(B-2) 「仮想 HUB の新規作成」ウィンドウが出るので、[仮想 HUB 名] を入力し、[OK]
ss_softether03
ss_softether04

(C-1) メインウィンドウに戻り、「仮想 HUB の管理」ボタンを押下
(C-2) 適宜「ログ保存設定」を設定(変更しなくても可)
(C-3) 「仮想 HUB の管理」ウィンドウが出るので、「ユーザーの管理」ボタンを押下
ss_softether05

(D-1) 「ユーザーの管理」ウィンドウが出るので、「新規作成」ボタンを押下
(D-2) [ユーザーの新規作成]ウィンドウが出るので、[ユーザー名], [パスワード] を入力し、[OK]
ss_softether06
ss_softether07

(E-1) メインウィンドウに戻り、「IPsec / L2TP 設定」ボタンを押下
(E-2) 「IPsec / L2TP / EtherIP / L2TPv3 設定」ウィンドウが出るので、[L2TP サーバー機能を有効にする(L2TP over IPsec)] をチェック
(E-3) [IPsec 共通設定]->[IPsec 事前共有鍵] を入力し、[OK]
ss_softether08

(F-1) メインウィンドウに戻り、「ローカルブリッジ設定」ボタンを押下
(F-2) 「ローカルブリッジ設定」ウィンドウが出るので、[新しいローカルブリッジの定義]->[仮想 HUB] を選択
(F-3) [作成する種類] で「物理的な既存の LAN カードとのブリッジ接続」を選択
(F-4) 「ローカルブリッジを追加」ボタンを押下
ss_softether09

(G-1) メインウィンドウに戻り、「ダイナミック DNS 設定」ボタンを押下
(G-2) 「ダイナミック DNS 設定」ウィンドウが出るので、[設定の変更]->[ダイナミック DNS ホスト名の変更] を入力
(G-3) 「上記の DNS ホスト名に変更する」ボタンを押下
ss_softether10

◆ルーターの設定
外出先から Raspberry Pi にアクセスするためには、ルーターのポートを開放しておく必要があります。
L2TP/IPSec を使用する場合、500(UDP) と4500(UDP) の2つのポートを開放する必要があります。

ルータによって「ポートフォワーディング」とか「ポートマッピング」とかで設定できるはずです。
ちなみに、うちにあるルーター(CG-WLR300NM)の場合は、[詳細設定] ->[バーチャル・サーバ(ポート開放)] で設定しました。

だいたいのルーターは設定後、ルーターを再起動させれば反映されると思います。

◆VPN接続テスト
スマホ側からVPN接続できるか確認してみます。
下記は Xperia Z3 の場合の設定例です。

(1) [設定]->[Wi-Fi] を OFF (同一LAN 内の場合)

(2) [設定]->[その他の設定]->[VPN] に移動

(3) [VPNプロフィールの追加]
     「名前」を適宜入力
     「タイプ」に [L2TP/IPSec PSK] を設定
     「サーバーアドレス」に (G-2) で入力したホスト名を入力
     「IPSec事前共有鍵」に (E-3) で入力した事前共有鍵を入力
ss_xperia_vpn01

(4) 追加したVPNプロフィールに接続
      「ユーザー名」、「パスワード」に (D-2) で入力したユーザー名、パスワードを入力し、接続


VPN接続が正常に行なえたなら、リモートデスクトップ、WOLもアプリ入れればローカルIPアドレスで可能と思います。
※ただし現段階では、VPN 経由での前回作ったwebブラウザ経由での Raspberry Pi 操作ができません。

ちょっと長くなってきたので、今回はここまでです。
次回、上記課題の解決を試みます。

プライバシーポリシー
当サイトでは、Googleを含む第三者配信事業者や広告ネットワークが配信する広告を掲載しています。
当サイトでは、アクセス情報に基づいた適切な広告表示、及びトラフィックデータ収集のためにCookieを使用しています。
ユーザーはCookieの無効化により、これらの情報の提供を拒否する事ができます。
スポンサーリンク
記事検索
スポンサーリンク