2016年08月19日

DCR-G54/U故障

発電所の遠隔監視装置に使用してたルーターDCR-G54/Uが故障した。調べてみると、設定した内容が全て消失してデフォルト状態になっている。再設定すれば、当然、故障前の状態に戻るが、一旦電源を抜くと、すぐに、デフォルト状態になる。つまり、内部のフラッシュメモリが壊れたとか、バックアップ用の電池が切れたとか・・・・・という状態。
ルーターの内部基板を取り出してみたが、電池らしいものはどこにもない。結局、DCR-G54/Uは、廃棄処分となった。

先日、書いたRaspberryPiをNATルーター化することにする。DCR-G54/Uが無くなっても、ルーティングは普通にできる。先日照会したソースよりも、少し進化したソースを導入する予定。RaspberryPiをNATルーター化に関するインターネット上の記事は大量にあるが、連続して、3G回線接続をさせようとすると、そんなに単純ではない。

さらに、先日vsftpd3.0.2のことを書いたが、最新のraspbian(Jessie lite)を導入すると、デフォルトで,3.0.2が導入される。古いOSを何度もupdateするのもいいが、メジャーなupdateのときは、デフォルトからRasoberry PiのSDカードを作り治す方がいいような気がする。
Jessieのくせというかルール変更もあるので、慣れるしかないところもある。


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

2016年06月08日

Raspbeey Piを有線NATルーターとする

3G/USBドングルをRaspberry Piに直接挿して、ルーター機能を持たせれば、VPN-clientあるいはbridgeとNATルーターさらに、簡易なロガーも兼ねることができる。ルーターを別置しなくてもいい点がシンプルでよい。VPNクライアントとして利用するので、DHCPはVPNサーバー側に設置し、クライアント側には設置しない。クライアント側のIPアドレスは全て固定する。なお、3G/USBドングルは、L-05Aを使用するものとする。当然、isc-dhcp-serverやhostapdは不要。SIMは、トーンモバイル(旧DTI)のserverman SIM LTEを利用。

(1)IPアドレスを固定する。
最新のRaspbian/Jessieのデフォルト状態では、LAN内にDHCPサーバーがあると、IPアドレスを固定していても、SecondaryのIPアドレスが自動的に割り付けられる。SecondaryのIPアドレスが重複して付与されてもさほど問題ではないが、この対策は下記の通り
sudo nano /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes
を編集する。
8行目の
RUN="yes"

RUN="no"
とする。
これで、強制割付されなくなる。設定後再起動。

(2)必要なパッケージ導入
sudo apt-get install eject wvdial iptables-persistent

(3)wvdial.conf編集
sudo nano /etc/wvdial.conf
を下記の内容に修正する。

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 = AT+CGDCONT=1,"IP","dream.jp"
Dial Attempts = 3
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
Modem = /dev/ttyACM0
ISDN = 0
Phone = *99***1#
APN = dream.jp
Username = user@dream.jp
Password = dti
Carrier Check = no
Auto DNS = 1
Check Def Route = 1

(4)sysctl.conf編集
sudo nano /etc/sysctl.conf
を修正する。
28行目付近
net.ipv4.ip_forward=1
(#を取る)
sudo reboot
または
sudo sysctl -p
で反映させる。

(5)iptablesを設定
次のコマンド画面に打ち込む
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -i ppp0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i br0 -o ppp0 -j ACCEPT

iptables-persistentへ保管する。
実際には、
/etc/iptables/rules.v4に保管される
su
でrootになって
iptables-save > /etc/iptables/rules.v4
exit
でrootを脱する。
再起動後には、このiptablesの設定が自動的に反映するようになる。

(6)/etc/network/interfacesの編集
Jessieでは、eth0など実態のあるNICのIPアドレス固定は、/etc/dhcpcd.confに記述するが、br0のような仮想NICなどは、従来通りinterfacesに記載する。
-------
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.190.150
netmask 255.255.255.0
network 192.168.190.0
broadcast 192.168.190.255
gateway 192.168.190.150
dns-nameservers 192.168.190.150 192.168.190.1 202.231.208.73 202.231.208.74 8.8.8.8 8.8.4.4
bridge_ports eth0
bridge_maxwait 10
--------
これで、起動時に、br0とeth0がブリッジした状態で立ち上がるようになる。

(7)vpnclientのアカウント作成ほか
softether vpnの接続アカウントの作成などが整備された状態で、
sudo /usr/local/vpnclient/vpnclient start
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd accountconnect (接続名)
これで仮想NICがvpnサーバーに接続される。仮想nicには、ipアドレスは付与しない。
sudo /sbin/brctl addif br0 vpn_(仮想nic名)
でbr0と仮想NICをブリッジさせる。
これで、eth0と仮想nicがbr0を介して接続された。
bridge接続もほぼ同じ方法となる。
ただし、client接続の場合は、raspbery pi以外2台までeth0に接続したLAN機器がvpnサーバーに接続できるのが、bridge接続都の違いである。
実際には、スクリプト化して、起動時に自動でvpn接続するように設定する。

(8)ppp接続のスクリプト

スクリプト名は任意だが、下記のようなスクリプトを用意する。
書き込み後実行権限を付与する。
----
#!/bin/sh

br0_address="192.168.190.150"
echo "ppp_connect_log\n" > /home/tri/testppp

ifconfig | grep 'br0' > /dev/null 2>&1
if [ $? -eq 0 ] ; then
ip_br0=`LANG=C ifconfig | grep 'inet addr' | grep -v 169 | grep -v 127 | grep -v 100 | awk '{print $2;}' | cut -d: -f2`
test $ip_br0 = $br0_address
if [ $? -ne 0 ] ; then
ifconfig br0 $br0_address
fi
while :
do

lsusb | grep '1004:6124' > /dev/null 2>&1
if [ $? -eq 0 ] ; then
wvdial & 2>&1
sleep 10
fi

lsusb | grep '1004:613a' > /dev/null 2>&1
sleep 1
eject /dev/sr0 > /dev/null 2>&1
sleep 5
wvdial & 2>&1
sleep 10
fi
count=0

while :
do
loop=0
ifconfig | grep 'ppp0' > /dev/null 2>&1
if [ $? -eq 0 ] ; then
ip_ppp0=`ip addr list ppp0 | grep 'inet' | grep -v 169 | grep -v 127 | awk '{print $2;}' | cut -d: -f2`
route add default gw $ip_ppp0 dev ppp0
sleep 2
while :
do
loop=0
ping -c 5 -n -w 10 8.8.8.8 > /dev/null 2>&1
if [ $? -ne 0 ]; then
lsusb | grep '1004:6124' > /dev/null 2>&1
if [ $? -eq 0 ]; then
loop=1
break
else
lsusb | grep '1004:613a' > /dev/null 2>&1
if [ $? -eq 0 ]; then
loop=2
break
else
loop=3
break
fi
fi
fi
sleep 15
done
else
sleep 15
count=$(($count + 1))
if [ $count -gt 2 ] ; then
loop=1
fi
fi

if [ $loop -eq 1 ] ; then
wvdial & 2>&1
sleep 10
fi
if [ $loop -eq 2 ] ; then
eject /dev/sr0 > /dev/null 2>&1
sleep 5
wvdial & 2>&1
sleep 10
fi
if [ $loop -eq 3 ] ; then
sleep 15
break
fi
done
sleep 5
done
else
reboot
fi
exit 0
-----------

かなり書き込んだ。実際にppp接続させようとすると、いろいろなエラーが発生したので、これらのエラーが発生しても、pppを成功させるために工夫した。

(9) (8)のスクリプトをsupervisorに登録する。

(8)のスクリプトは無限ループになるので、これをデーモン化しておく。

以上で、DHCP機能のない有線ルータがraspberry piの中につくることができる。
iptablesの設定は非常に貧弱だが、トーンモバイルから付与されるIPアドレスは
100.で始まるシェアードIP(プライベートIP)なので、WAN側から直接アクセスされることはまずもってない。
だから、VPNを構築して、LANに取り込むことで、アクセスを可能とするというわけである。






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

2016年04月01日

vsftpd3.0.2 その2

前日記載の手順でvsftp3.0.2を導入した後の設定であるが、

/etc/vsftpd.conf
をまず、
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.org
のようにバックアップして、
を下記のように変更する。

----------ここから
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
log_ftp_protocol=NO
vsftpd_log_file=/var/log/vsftpd.log
dual_log_enable=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pasv_enable=YES
-----ここまで
次に、
sudo mkdir /etc/vsftpd
sudo mkdir /etc/vsftpd/vsftpd_user_conf
sudo nano /etc/vsftpd/user_list
に、接続させたいユーザー名だけを記載したファイルを作成
ユーザーがhogeなら
hoge
と1行だけ記載する。複数のユーザーが要る場合には、改行して複数のユーザー名を記載する。
sudo nano /etc/vsftpd/chroot_list
何も書かない。しかし、ファイル自体は必要。
sudo nano /etc/vsftpd/vsftpd_user_conf/hoge
には、
local_root=/home/hoge
と1行だけ記述する。
複数のユーザーが要る場合には、同様に、ユーザー名のファイルを作成して、
同様の1行を記載する。

sudo /etc/init.d/vsftpd restart
でvsftpdを再起動して、
インストール作業用のファイルは不要なので
sudo rm -rf /usr/local/src/*

念のため
/home/hogeの
パーミションとオーナーを確認する。
cd /home
ls -la

/home/hogeの
オーナーとグループが共に
hoge
で、パーミションが
755
になっている必要がある。

FTPクライアントからこのvsftpdのftpサーバに接続して、ファイルのupload、download
ができることを確認する。

3.0.2のバージョンは快適である。



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