2013年12月23日

遠隔監視装置を設置する(その13)

起動用のスクリプト

vpnbridgeの起動は、
SSHで接続して、
sudo /usr/local/vpnbrige/vpnbridge start
sudo /sbin/brctl addif br0 (tapデバイス名)
でいいように思えるが、そうもいかない。
これでは、停電やトラブル時に再起動するたびに手動でこのコマンドで起動する必要がある。
そこで、起動用のスクリプトを用意して、chkconfigで自動起動させるように設定する。
tapデバイスを使うので、それを配慮したスクリプトを使用する。
a href="http://www.pc-links.com/blog/softether/tap/">こちらで紹介しているものを、bridge用に若干手を入れたものである。最新のSoftEther VPN Bridgeのバージョンは2.0なので、そちらにも配慮している。


----------------------------
#!/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 2.0
# Description: Start vpnbridge daemon SoftEther VPN 2.0 Bridge
### END INIT INFO

DAEMON=/usr/local/vpnbridge/vpnbridge
LOCK=/var/lock/vpnbridge

. /lib/lsb/init-functions

test -x $DAEMON || exit 0

case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 2.0 Bridge" "vpnbridge"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;

stop)
log_daemon_msg "Stopping SoftEther VPN 2.0 Bridge" "vpnbridge"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2

;;

restart)
$DAEMON stop
sleep 2

$DAEMON start
sleep 5

# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;

status)
if [ -e $LOCK ]
then
echo "vpnbridge is running."
else
echo "vpnbridge is not running."
fi
;;

*)

echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
-------------------------------

このファイル名をvpnbridge_tap
という名前で、
/etc/init.d
というデレクトリー内に保存する。
実行属性を付与する.
sudo chmod 700 /etc/init.d/vpnbridge_tap
ここで、一旦終了
sudo halt

ubuntuパソコンにUSB式SDカードリータを挿す。
ここで、DDでSDカードをバックアップする。
df -h
でSDカードがマウントされている状況を確認する。
/dev/sdb1が /media/boot
/dev/sdb2が /media/(長い文字列)
となっているなら、sdbを覚えておいて

sudo bs=1M count=3200 if=/dev/sdb of=(バックアップファイル名)
とする。SDカードの先頭から3.2GBのみバックアップされる。

sdc sde・・・の場合もある。

SDカードにトラブルがあれば、このバックアップから書きこめは
楽に復旧できる。

-------------
tapデバイスの設定

windows用のサーバー管理マネジャーで設定すると簡単
このプログラムは、
http://www.softether-download.com/ja.aspx?product=softether
から、ダウンロードできる。
実際には、Windows用のサーバー、ブリッジプログラムの一部機能になるので、インストーラの途中で、管理マネージャのみの導入を選択して導入する。
名前だけ見ると、サーバを管理するように思えるが、ブリッジも管理できる。
Windowsパソコンにこのプログラムを導入して、設定する。

bridgeの場合、設定項目は少なく簡単である。
まず、カスケード接続の管理で、サーバーのDDNS名と仮想HUB名を指定する。これで、サーバー内の仮想HUBとブリッジ内の仮想HUBがLANケーブルで接続される。
次にローカルブリッジを設定する。ブリッジ内の仮想HUBと、RaspberryPiの実態のLANカードをtapデバイスを介して、ブリッジで接続する。「新しいtapデバイスとのブリッジ接続」を選択して、新しいtapデバイス名を指定する。
これで、tapデバイスと仮想HUBがブリッジされた。

-------------------
再び、Ubuntuから
sshでbridgeへログインして
sudo pico /etc/network/interfaces
でネット環境接続環境を編集する。
現状では。eth0が固定IPアドレスになっているはずだが、
eth0にIPアドレス付与を止めて、br0に付与する。また、
eth0とbr0をブリッジさせる。
なお、br0とtapデバイスのブリッジはSofteher側で完了している。
具体的には、
こちらを参考にされるとよい。
次に、パケットのフォワーディングを有効にして、
スクリプトの自動起動を設定する。
sudo chkconfig vpnbridge_tap on

sudo reboot
で再起動
ifconfig

br0にIPアドレスが付与されていること
tap_(タップ名)
があることを確認
sudo brctl show br0

eth0とtap_(タップ名)が表示されていれば成功

---------------------
表示されていないときは、
sudo /etc/init.d/networking restart
sudo /etc/init.d/vpnbridge restart
でうまくいくはずである。

------------------
再び、
sudo pico /etc/network/interfaces
をbr0のIPアドレスを発電所のLAN(VPNサーバーの仮想NATと仮想DHCP)に合わせて修正する。

sudo halt
で電源を切って、RaspberryPIのBridgeを発電所に取付して、作業完了。
これまで、bridgeを担当していたWindowsノートパソコンは、同時に撤去。

tapデバイスが必要な理由。
bridgeにtapデバイスを設定しない状態では、なぜかサーバーとのカスケード接続が成立しない症状が出た。

WDR-7のログデータとVPN接続でのリアルタイム監視で発電所の遠隔監視はほぼ完璧な状態となった。前々回に記入したUSB通断器の効果も相当に大きい。

自宅に、VPNサーバーを置いているが、自宅のLANとVPNサーバ内の仮想HUBをローカルブリッジ接続していない。これは有限責任事業組合の組合員もこのVPNサーバーに接続するので、当然のことである。
VPNサーバーへの接続には、Softether VPN Clientというソフトウェアを用いる方法のほか、AndroidやIOSからの接続、Windows7以降で使えるMS-SSTPでの接続などに対応している。

次回は、VPNサーバーへの接続方法について、記載したいと考えている。







posted by bmasterna at 23:41| Comment(2) | 遠隔監視装置

2013年12月22日

遠隔監視装置を設置する(その12)

VPN Bridge

暫定的に、WindowsXPのノートパソコンをVPNブリッジとして稼働してきたが、普通に使えるノートパソコンを発電所に置き続けるのは、問題があるので、RaspberryPiでSoftEther VPN bridgeを導入することにした。
RaspberryPiはRAM512MBタイプのtypeBを購入した。
ブリッジサーバーを導入すると、発電所のLAN全体が、VPN自宅のサーバにつながり、サーバに接続しているクライアントから、発電所のロガーなどが同一のLAN上に存在するように見えるようになる。
設定はそれなりに大変だが、一度設定すると、あとは、ほとんどノーメンテナンスとなる。前回紹介したUSB通断器とセットで使用すると、DTI serverman SIM LTEのサービスで常時接続の環境が構築できる。DTI serverman SIM LTEのサービスで割り当てられるIPアドレス
プライベートなものであるが、SoftEther VPN bridgeによって、サーバーの仮想HUBとカスケード接続して、発電所のLANに接続することになる。

1.RaspberryPIの設定
RaspberryPIの設定は、ubuntuなどのLinuxから行う方が便利。
Raspbian(OS)をここからダウンロードする。Raspbian以外のOSもダウンロードできるが、2013-09-25-wheezy-raspbian.zipをダウンロードする。torrentでも同じものがダウンロードできる。
DDでSDカード(4GB以上のもの、できれば8GB class10以上)へ書き込む。
RaspberryPIに差し込み、自宅のLANに接続して、HDMI用ディスプレーで起動を確認する。
USBキーボードを差し込めば、CUIベースで環境が構築できる。
詳しい設定方法は他のホームページに譲る。
sudo raspi-config

SDカードの領域拡張、hostname、ロケールを日本に設定、Piのパスワードを変更、オーバークロックの設定(しなくともいいが)などを行う。
なお、日本語環境を構築しても、CUIベースではなぜか日本語は表示できない。SSHで外部殻接続すると、ちゃんと日本語で表示できる。

一旦再起動して、IPアドレスを固定する。
sudo pico /etc/network/interfaces
を直接書き換える。自宅のLANと発電所のLANは192.168までは同じでも、次は異なっているが、
設定中は、自宅側のLAN殻見えるアドレスを割り付けする。
picoは、端末上で動くテキストエディタで、viよりはるかに使いやすいので、RaspberryPiの設定でテキストを扱う場合はこれを使うとよい。
sudo halt
で一旦終了。今後は、SSHで別のパソコンから制御するので、LANケーブルと電源以外は不要となる。

RaspberryPiには電源スイッチはないので、電源を抜き差しして起動。
ubuntuの端末から、
sudo ssh pi@192.168.(固定したアドレス)
として、raspberrypiにログインする。
初回接続の時だけ、質問してくるので、yesと入力し、piのパスワードを入力する。

日本語フォントをインストールする。

sudo apt-get update
sudo apt-get upgrade
を実行して、OSを最新状態にする。

rootのパスワードの設定をする。

/etc/hosts.allow
sshd: 192.168.0.0/24 127.0.0.0/8
を加筆して、ローカルLANからのみSSH接続を許可する。
/etc/hosts.deny
では、
sshd: ALL
を加筆して、allowに記載したもの以外を拒否する。

chkconfigをインストール
sudo apt-get install chkconfig

sudo chkconfig --list
でデーモンの起動状況を確認しておく。必要ないデーモンは停止させてもよいが、しなくても、それほど問題は起きない。

すぐには必要ないか、いずれ必要となるので、
ブリッジユーティリティーをインストール
sudo apt-get install bridge-utils

2.SoftEther VPN bridgeのインストール

プログラムをRaspberryPIのGUIのブラウザを利用してダウンロードしてもいいのだが、
wgetでダウンロードした方がスマート。
ubuntuのGUIで
SoftEtherプロジェクトのダウンロードサイトから、
bridge Linux ARM EABI(32bit)で表示されるファイルの最新版を右クリックして「リンク先のURLをコピー」
SSHでRaspberrypPiにログインして、
cd /usr/local/src
ls
で何もないことを確認する。
sudo wget (貼り付け)
端末では、Ctrl+Vは利用できない。右クリックで貼り付けを選択する。
再び
ls
ファイルがダウンロードされていることを確認する。
マウスで、このファイル名を選択して、右クリックでコピーを選択。Ctl+Cは端末では使用できない。
sudo tar zxvf (貼り付け)
でダウンロードしたプログラムが解凍される。
ls
で、状況を確認する。解凍前のtarファイルとvpnbridgeというディレクトリがあるはす。
cd vpnbirdge
でその中に入って
sudo make
これで実行ファイルが作成される。
cd ..
sudo mv vpnbridge /usr/local
プログラムの入っているフォルダを正式な位置へ移動する。
ダウンロードしたプログラムファイルは不要なので消去
rm -f (貼り付け)

プログラムに実行権限を付与する
cd /usr/local/vpnbridge/
ls
vpnbidgeやvpncmdの実行ファイルが存在することを確認する。
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnbridge

ここまででVPN bridgeの実行環境はほほ整ったが、まだ、起動用スクリプトやtapデバイスの設定が用意できていない。
なお、起動用スクリプトを導入した段階で、DDを使って、SDカードをバックアップする。SDカードは、HDDやSSDなどのように、強固ではなく、故障することもある。バックアップしておけば、いざと言うときに困ることもない。
サーバーはtapデバイスを導入しなくても成立するが、ブリッジはtapデバイスを導入しないとうまく機能しなかった。理由はよくわからないが、LinuxでSoftEther VPNを導入する場合には、tapデバイスを使う方が普通なのかもしれない。SoftEtherプロジェクトの説明には、専用のLANカードを用意するのが良いとしているが、RaspberryPiのシンプルさを損なうので、tapデバイスがいい感じなのである。

次回は、起動用スクリプトやtapデバイスの設定について記載する予定。
こちらのサイトを参考にさせていただいた。



posted by bmasterna at 23:31| Comment(0) | 遠隔監視装置

2013年12月14日

遠隔監視装置を設置する(その11)

USB通断器

発電所で使用しているUSB通信端末L-03Cのインターネット接続が途切れてしまう問題がある。長時間接続を嫌って、通信業者(DTI)から切断されているのかもしれない。遠隔監視をするためには、接続されていない時間がない方が良いに決まっているが、実際問題として、1週間も連続で接続できることはほとんどないようだ。
このような現象は、最初から想定していたので、タイムスイッチを利用して、1日数回、ルータの電源をon/offさせて、ルータに連動して、L-03Cもon/offさせていた。しかし、この方法では、どうしても、インターネットへの接続が切断されてしまう現象が起きてしまう。自動復帰するならさほど問題ではないが、一度、インターネットへの接続が切断されてしまうとルータの電源がon/offしても、復帰できなくなってしまう。このような場合、L-03CのUSB端子を抜き差しすると復帰できることを確認しているので、1週間に一度は、必ず、L-03CのUSB端子を抜き差ししている。管理者としては情けない状態なのだ。
というわけで、このような状態は何としても、避けたいので、簡単な電子回路を組んで、自動的にL-03Cを電気的に抜き差しする装置(USB通断器)を作ることにした。
装置の考え方は非常にシンプルだ。USBからの電源5V利用して、タイマーIC(NE555)で約8時間ON/1分間OFFの発振回路を組み、その後段に、オンディレイ回路とオフディレイ回路を接続し、リードリレーで、USB電源ラインと、信号ラインを別々のタイミングで入り切りするというものである。USB電源ラインと、信号ラインを同時に入り切りしてもよさそうにも思えるが、USB機器の着脱行為を正確にシュミレートするために、このような仕様とした。
使ってみてわかったことだが、このような装置を作っても、何かのタイミングでインターネットへの接続は切断されることがある。それでも、8時間毎に来るUSB着脱動作のタイミングで、再接続される。便利なツールである。
調べた限りでは市販品はないので、作るしかない。穴開き基板とハンダゴテで作れるが、小型できれいに作りたかったので、エッチングで基板を製作した。
回路検討段階では、リードリレーを使用せずに、4066(アナログスイッチIC)でUSB通断をさせる計画だったが、4066では、ダメだった。リードリレーには可動部があるので、寿命の問題があるのが、この装置の弱みになりそうだ。製作に要した部品代は1500円くらい。市販されている工業用タイマーやリレーを組み合わせても、同等機能の装置は作れるが、コスト面ではこちらの方がかなり有利のようだ。

自作USB通断器.jpg

posted by bmasterna at 23:36| Comment(0) | 遠隔監視装置