WiRES/遠隔地に設置
概要
WiRESノードを遠隔地に設置するというミッションが現れた。遠隔地というのは以下のような場所である。
- 既存インターネット回線を使い、既設のルータの設定変更を行う事無く設置・撤収が可能。
- なかなか立ち入ることが出来ない。
そこで・・・全てを遠隔で行う方法が必要!となる。
今までの問題点
- パソコンはたまに調子悪くなって固まる。
- ある程度の周期で再起動などが必要。
- WindowsUpdateなどで勝手に再起動してハングアップする例もある。
- 遠隔地では再起動が出来ない。
- TermViewerなどでログインすることは出来るが、誤って電源をOFFにしてしまうと二度と立ち上がってこない。(←現地に立ち入って電源を入れてくるしかない。)
設置案
インターネット回線接続
- 既設ルータの下にもう一つルータを設置する。
- WANアドレスは DHCP取得にする。
- ルータで PPTPクライアントとしてマイIPに接続し、ルータ自身にグローバルIPアドレスを割り振る。
- マイIPに常時接続し、常にルータにはグローバルIPアドレスが割り当たるようにする。
- 40000-50000(TCP/UDP)をLAN下に接続した WiRESノードPCにポートフォワーディングする。
- WakeOnLANを使ってインターネット側からPCの電源をONできるようにする。
- ルータにはPPTPサーバーを稼動させて、WAN側からルータにログインできるようにしておく。
- ルータは業務用 YAMAHA RTX1000 を使用した。
死活監視機能自動再起動
- 10分に1回、インターネット接続ができるかどうか ルータのWAN側にpingを送り反応が無ければ、ワイヤーズPC自ら再起動を行うようにする。
ルータの設定
以下の条件で設定した場合。
- MyIPで取得したIPアドレス 61.206.113.131
- VPNサーバー myip03.interlink.or.jp(203.141.128.102)
- LAN2がWAN側で既設ルータ配下に接続しDHCP接続される。
- LAN1がLAN側でWiRES PC(IP 192.168.100.100)が接続される。
- pp1でMyIPに常時接続しトンネル1を定義し、nat descriptor 2000 を定義。
- nat descriptor 2000 で WiRESで使用するポートや遠隔操作用ポート、WakeOnLAN用ポートのフォワーディングを行う。
- pp anonymous で PPTPサーバーを稼動。トンネル2を定義。
config.dat
# show config
ip route default gateway tunnel 1 metric 1
ip route 61.206.113.0/24 gateway tunnel 1
ip route 203.141.128.102 gateway dhcp lan2
ip lan1 address 192.168.100.1/24
ip lan1 proxyarp on
ip lan1 wol relay broadcast
ip lan2 address dhcp
ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032 101080 101081
ip lan2 secure filter out 101013 101020 101021 101022 101023 101024 101025 101099 dynamic 101080 101081 101082 101083 101084 101098 101099
ip lan2 nat descriptor 200
pp select 1
pp name WAN/VPN:MyIP03
pp bind tunnel1
pp always-on on
pp auth accept mschap
pp auth myname <MyIP ログインID> <MyIP パスワード>
ppp ipcp ipaddress on
ppp ccp type mppe-any
ppp ipv6cp use off
ip pp nat descriptor 2000
pptp service type client
pp enable 1
pp select anonymous
pp name RAS/VPN:
pp bind tunnel2
pp auth request mschap-v2
pp auth username <PPTP用ログインID> <PPTP用パスワード>
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type mppe-any
ppp ipv6cp use off
ip pp remote address pool 192.168.100.150-192.168.100.152
ip pp mtu 1280
pptp service type server
pp enable anonymous
tunnel select 1
tunnel encapsulation pptp
tunnel endpoint address 203.141.128.102
pptp tunnel disconnect time off
pptp keepalive interval 30 12
ip tunnel nat descriptor 2000
tunnel enable 1
tunnel select 2
tunnel encapsulation pptp
pptp tunnel disconnect time off
tunnel enable 2
ip filter 101000 reject 10.0.0.0/8 * * * *
ip filter 101001 reject 172.16.0.0/12 * * * *
ip filter 101002 reject 192.168.0.0/16 * * * *
ip filter 101003 reject 192.168.100.0/24 * * * *
ip filter 101010 reject * 10.0.0.0/8 * * *
ip filter 101011 reject * 172.16.0.0/12 * * *
ip filter 101012 reject * 192.168.0.0/16 * * *
ip filter 101013 reject * 192.168.100.0/24 * * *
ip filter 101020 reject * * udp,tcp 135 *
ip filter 101021 reject * * udp,tcp * 135
ip filter 101022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 101023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 101024 reject * * udp,tcp 445 *
ip filter 101025 reject * * udp,tcp * 445
ip filter 101030 pass * * icmp * *
ip filter 101031 pass * * established * *
ip filter 101032 pass * * tcp * ident
ip filter 101033 pass * * tcp ftpdata *
ip filter 101034 pass * * tcp,udp * domain
ip filter 101035 pass * * udp domain *
ip filter 101036 pass * * udp * ntp
ip filter 101037 pass * * udp ntp *
ip filter 101080 pass * 192.168.100.1 tcp * 1723
ip filter 101081 pass * 192.168.100.1 gre * *
ip filter 101098 reject-nolog * * established
ip filter 101099 pass * * * * *
ip filter 500000 restrict * * * * *
ip filter dynamic 101080 * * ftp
ip filter dynamic 101081 * * domain
ip filter dynamic 101082 * * www
ip filter dynamic 101083 * * smtp
ip filter dynamic 101084 * * pop3
ip filter dynamic 101098 * * tcp
ip filter dynamic 101099 * * udp
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
nat descriptor masquerade static 200 1 192.168.100.1 tcp 1723
nat descriptor masquerade static 200 2 192.168.100.1 gre
nat descriptor type 2000 masquerade
nat descriptor masquerade static 2000 1 192.168.100.100 tcp 40000-50000
nat descriptor masquerade static 2000 2 192.168.100.100 udp 40000-50000
nat descriptor masquerade static 2000 3 192.168.100.100 tcp 5800
nat descriptor masquerade static 2000 4 192.168.100.100 tcp 5900
nat descriptor masquerade static 2000 5 192.168.100.1 tcp 1723
nat descriptor masquerade static 2000 6 192.168.100.1 gre
nat descriptor masquerade static 2000 7 192.168.100.255 udp 9104
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns server 203.141.128.34
dns server dhcp lan2
dns private address spoof on
pptp service on
httpd host lan1
死活監視機能自動再起動
- こんなことを自動でやってくれるテーブルタップが商品として出回っている。これをつかうのが一番だが、お金をかけないでやりたい。
- 10分に1回 あるバッチファイルを読み出す。
- タスクマネージャで呼び出しても良いし。
- 自分はMulti Function Alarmを使った。
- バッチファイルってこんな感じ。
OnlineTestRestart.bat
@echo off
set TARGET_IPADDRESS=61.206.113.131
set SHUTDOWN_COMMAND="C:\WINDOWS\system32\shutdown.exe"
set SHUTDOWN_MESSAGE="再起動をすることを準備しています。拒否するにはコマンドラインから shutdown /a を投入してください"
set /a MAXLOOP_CONUT_LENGTH=3
set /a PING_LENGTH_AT_ONLINE=2
set /a PING_WAITTIME_MS=3000
set /a COUNT=0
set /a RETRY_WAIT_TIME=30
echo ** 死活監視・再起動 バッチファイル**
echo 監視先 : %TARGET_IPADDRESS%
echo 再試行回数 : %MAXLOOP_CONUT_LENGTH%
echo 再試行間隔 : %RETRY_WAIT_TIME% [sec]
ping -w %PING_WAITTIME_MS% -n %PING_LENGTH_AT_ONLINE% -a %TARGET_IPADDRESS% | find /i "bytes=32" 1>nul
if %errorlevel%==0 (
goto end
) else (
echo IP[%TARGET_IPADDRESS%] は ping応答がありませんでした。
goto step1
)
:step1
set /A count=count+1
echo *** [再試行] %count%/%MAXLOOP_CONUT_LENGTH% 回目です %RETRY_WAIT_TIME%秒後に再試行します。
ping localhost -n %RETRY_WAIT_TIME% >NUL
ping -w %PING_WAITTIME_MS% -n %PING_LENGTH_AT_ONLINE% -a %TARGET_IPADDRESS% | find /i "bytes=32" 1>nul
if %errorlevel%==0 (goto end)
if %count%==%MAXLOOP_CONUT_LENGTH% (
echo オフラインにより再起動を準備します
%SHUTDOWN_COMMAND% /r /f /t 30 /c %SHUTDOWN_MESSAGE% /d p:0:0
goto end
)
goto step1
:end
exit 0