<YAMAHA RTA52i用:回線メンテナンス・障害時の自動接続システム>

 フレッツ・ISDN回線はOCN等の専用線と異なり、365日24時間接続が保証されていません。この為、サーバー公開を行っている環境で回線が切断された場合、サーバー側からインターネットにアクセスして接続しなければ、外側からサーバーにアクセス出来ません。
 ここでは回線切断されてもLinuxサーバーからインターネットに常時パケットを送信することにより、自動復旧する仕組みを紹介します。また、YAMAHA RTA52iでは回線障害時、CHAP認証に10回以上失敗するとその後ダイヤルアップしない仕様になっているため、こちらの対応についても併せて説明します。

【RTA52iのルーターログをLinuxへ転送】

1. RTA52iのSYSLOG転送設定

GTO# telnet 192.168.xxx.xxx	RTA52iのIPアドレスを指定
Trying 192.168.xxx.xxx...
Connected to 192.168.xxx.xxx.
Escape character is '^]'.

Password: xxxxxxxx	RTA52iのログインパスワードを入力

RTA52i Rev.4.01.15 (Wed Feb 21 22:10:40 2001)
  Copyright (c) 1994-2001 Yamaha Corporation.
00:a0:de:09:05:60
Memory 8Mbytes, 1LAN, 1BRI
> administrator
Password: xxxxxxxx	RTA52iのadministratorパスワードを入力
# syslog host 192.168.xxx.xxx	LinuxサーバーのIPアドレスを指定
# syslog notice on
# syslog debug on
# save
セーブ中...
セーブ終了
# exit
> exit
Connection closed by foreign host.
GTO#
2. LinuxサーバーのSYSLOG設定

2.1 /etc/syslog.confに以下4行を追加

# Save Yamaha RTA52i router syslog
user.debug                                              /var/log/router.log
user.notice                                             /var/log/router.log
user.info                                               /var/log/router.log
2.2 /etc/rc.d/init.d/syslogのsyslogdの起動箇所で-rオプションを追加

daemon syslogd -m 0 -r

2.3 syslogdのリスタート

ROOT# /etc/rc.d/init.d/syslog restart

3. /var/log/router.logにrouterログが記録されているか確認

【RTA52iのリスタート環境のセットアップ】

1. Perlスクリプトで必要な.Net::Telnetの設定

1.1 モジュールのダウンロード

http://www.cpan.org/modules/by-module/Net/から、Net-Telnet-X.XX.tar.gzの最新版をダウンロードします。

1.2 Net::Telnetモジュールのインストール

gto-star$ tar zxvf Net-Telnet-3.02.tar.gz
Net-Telnet-3.02/
Net-Telnet-3.02/Makefile.PL
Net-Telnet-3.02/ChangeLog
Net-Telnet-3.02/lib/
Net-Telnet-3.02/lib/Net/
Net-Telnet-3.02/lib/Net/Telnet.pm
Net-Telnet-3.02/t/
Net-Telnet-3.02/t/select.t
Net-Telnet-3.02/README
Net-Telnet-3.02/MANIFEST
gto-star$ cd Net-Telnet-3.02
gto-star$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Net::Telnet
gto-star$ make
mkdir blib
mkdir blib/lib
mkdir blib/lib/Net
mkdir blib/arch
mkdir blib/arch/auto
mkdir blib/arch/auto/Net
mkdir blib/arch/auto/Net/Telnet
mkdir blib/lib/auto
mkdir blib/lib/auto/Net
mkdir blib/lib/auto/Net/Telnet
mkdir blib/man3
cp lib/Net/Telnet.pm blib/lib/Net/Telnet.pm
Manifying blib/man3/Net::Telnet.3
gto-star$ su
Password: xxxxxxxx
# make install
Installing /usr/lib/perl5/site_perl/5.005/Net/Telnet.pm
Installing /usr/lib/perl5/man/man3/Net::Telnet.3
Writing /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Net/Telnet/.packlist
Appending installation info to /usr/lib/perl5/5.00503/i386-linux/perllocal.pod
#
2. RTA52iリスタートスクリプトの設定

2.1 /usr/local/bin/rta52i_restartを以下の内容で作成します。

#!/usr/bin/perl
use Net::Telnet ();

my($lines,$t,$pass,$adminpass,$rthost);

$rthost = '192.168.xxx.xxx'; RTA52iのIPアドレスを指定
$pass = 'xxxxxxxx';          RTA52iのログインパスワードを指定
$adminpass = 'xxxxxxxx';     RTA52iのadministratorパスワードを指定

$t = new Net::Telnet (-host => "$rthost");

## Wait for first prompt
$t->waitfor('/Password:.*$/');
$t->print("$pass");
$t->waitfor('/>.*$/');
$t->print("administrator");
$t->waitfor('/Password:.*$/');
$t->print("$adminpass");
$t->waitfor('/#.*$/');
$t->print("restart");
$t->close;

exit;
2.2 作成後は、スクリプト内にRTA52iのパスワードが含まれているため、以下のとおり所有者のみアクセス権を与えます。

ROOT# chmod 700 /usr/local/bin/rta52i_restart

2.3 一度起動してRTA52iがリスタートするかを確認してみて下さい。

【自動接続環境のセットアップ】

1.自動接続スクリプトの作成

/usr/local/scripts/flets_chk.shを以下の内容で作成します。最終行のpingで確認するインターネット側のIPアドレス:xxx.xxx.xxx.xxxは、契約プロバイダのDNSサーバー等を指定して下さい。

#!/bin/sh
RESTART_CMD=/usr/local/bin/rta52i_restart
ROUTER_LOG=/var/log/router.log
NOW=`date "+%b %e %H:%M"|cut -c-11`

sleep 61
FLAG=`grep "${NOW}" ${ROUTER_LOG}|grep "Too many authentication"`
if [ ! -z "${FLAG}" ] ; then
        ${RESTART_CMD}
        sleep 30
fi

/bin/ping -c 1 -s 1 xxx.xxx.xxx.xxx      >/dev/null 2>&1
2.自動接続スクリプトへ実行権を与える

ROOT# chmod 700 /usr/local/scripts/flets_chk.sh
3.自動接続スクリプトをcron登録

 必ず以下のように毎9分に起動するようにcron登録して下さい。

9,19,29,39,49,59 * * * *	/usr/local/scripts/flets_chk.sh