Linux自宅サーバーの設定
PPPoEの導入(セットアップ編)


【パッケージ・ハードウエア】


Vine2.1.5 + 815Eマザー自作マシン
RP-PPPoE − http://www.roaringpenguin.com/pppoe/
PPPd − http://ftp.riken.go.jp:8000/ftpseING


【参照HomePage】


http://www.utchy.com/linux/
http://www.sh.rim.or.jp/~ssato/adsl-linux.html


【1.Confファイル編集】

色々書こうと思ったらZDネットで解説してるからパス(笑)
と、いう事でここを参照しよう(手抜き)


【2.ネットワークインターフェイス初期化設定】

サーバーマシン起動時のネットワークインターフェイスの初期化を指定する。(下記のネットワーク構成で運用する場合)

 ・内側のネットワークインターフェイスは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の中で自動設定される)

 

 


【3.ゲートウェイ設定】


ゲートウェイはスクリプト(adsl.start)の中で自動設定される。以下のファイルにゲートウェイに関する記述があると、切断/自動接続した全てのパケットが外に出られなくなる(外部に接続出来なくなる)ので注意する事。

/etc/sysconfig/network
の中に
--------------------------
GATEWAYDEV=eth1
GATEWAY=192.168.1.1
--------------------------
のよう、GATEWAYDEVにインターフェイス、GATEWAYにIPが記入されているときは各行の左端に””を入れてコメントアウトしておく。


【4.強制切断された時の対策】


ADSLのキャリアによって異なると思うが、一定時間無通信だと強制切断されてしまう(東京めたりっくは1時間)
この強制切断時にダイナミックDNS等、IPアドレスが変わってしまうと不都合がでる物の対策をする。


強制切断された時のログは/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
--------------------------


[back]
[top]