【1.Confファイル編集】
色々書こうと思ったらZDネットで解説してるからパス(笑)
と、いう事でここを参照しよう(手抜き)
サーバーマシン起動時のネットワークインターフェイスの初期化を指定する。(下記のネットワーク構成で運用する場合)
・内側のネットワークインターフェイスはeth0
・内側に接続する他のマシンのIPアドレスはは192.168.1.xxx
・内側のゲートウェイアドレスは192.168.1.1
【プライベート(内)側ネットワークの設定】
/etc/sysconfig/network-scripts/ifcfg-eth0を以下のように記述する
--------------------------
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
NETMASK=255.255.255.0
IPADDR=192.168.1.1
USERCTL=no
--------------------------
【グローバル(外)側ネットワークの設定】
/etc/sysconfig/network-scripts/ifcfg-eth1を以下のように記述する
--------------------------
DEVICE=eth1
BOOTPROTO=static
IPADDR=
NETMASK=
ONBOOT=no
BROADCAST=
NETWORK=
USERCTL=no
--------------------------
IPADDR、NETMASK、BROADCASTは必ず空欄にしておく事、またONBOOTは必ず"no"にしておく事。
(adsl.startの中で自動設定される)
強制切断された時のログは/var/log/messagesに以下の様に残る
--------------------------
Jul 8 16:52:27 lxs 7月 8 16:52:27 adsl-connect: ADSL connection lost; attempting re-connection.
--------------------------
/etc/ppp/adsl-lost
というスクリプトを作るとrp-pppoeが切断を検出した時に自動実行される。
再接続が確立し新しいIPアドレスが決まるまでの時間を待つため、このスクリプトの中で、atを使い、任意の時間後に別のスクリプトを呼び出すようにする。
中身は以下の通り。オーナーをrootに変更、パーミションを700に変更する事。
-------- adsl-lost ----------
! /bin/bash
delay=1 #切断の1分後にadsl-delayを実行
hour=`date +%H`
min=`date +%M`
min=`expr $min + $delay`
`at -f/etc/ppp/sbin/adsl-delay $hour':'$min`
--------------------------
上記の例では1分後に実行するようにしているが切断検出〜再接続の時間がかかる場合は長めに変更する事。
ちなみに「delay=5」とかにしておいてdateで取得した日時が日付変わり間際とかでも、ちゃんと処理してくれる。
例 : 4/5 23:59 +5分 → 4/6 0:04
次に/etc/ppp/adsl-lostから呼び出される/etc/ppp/adsl-delay
というスクリプトを作り切断/再接続後に行わせたい処理を記述する。
以下の様に内容を記述し、オーナーをrootに変更、パーミションを700に変更する事。
-------- adsl-delay ---------
ipmasqadm portfw -f
/usr/local/bin/ez-ipupdate -c /etc/ez-ipupdate.conf 2>&1 | logger -t ez-ipupdate
/etc/rc.d/init.d/snortd start >
/dev/null
ipmasqadm portfw -a -P udp -L `/sbin/ifconfig ppp0 | grep "inetアドレス" | cut -f2 -d: | cut -f1 -d" "` 2425 -R 192.168.1.2 2425 &
---------------------------
上記の例では以下のような処理を行っている。
| 1 | ポートフォワードのリストをすべて削除する | ipmasqadmから呼び出されるportfw.oは外側のIPアドレスを指定して呼び出すため切断/再接続でIPが変わる以前の物はすべて破棄する。 |
| 2 | ダイナミックDNSのサーバーに新IPを登録する | ez-ipupdateはデーモンモードでも起動できるけど無駄なのでここでIP更新する。 |
| 3 | snortの起動 | 切断時にエラーで落ちてしまうため「起動」だけを実施。snortdは2重起動チェックしていないのでエラーで落ちないようなら前段に強制終了を入れる必要あり。 |
| 4 | ポートフォワードリストの登録 | インスタントメッセンジャーのIPMessageが使うUDPの2425を192.168.1.1にフォワードするよう設定する。 |
【おまけ】
rp-pppoeインストール時に入る/usr/sbin/adsl-connectにも以下の様な記述がありsleep 5の前後に実行するスクリプトを記述できるが、こちらは切断直後に実行されてしまうため、再接続する前の新IPが確定しない状態で実行されてしまうのであまり役に立たない。
--------------------------
# Re-establish the connection
$LOGGER -p daemon.notice \
"ADSL connection lost; attempting re-connection."
# Wait a bit in case a problem causes tons of log messages :-)
sleep 5
--------------------------