次のページ 前のページ 目次へ

23. 接続が確立した後、、

PPP 接続が確立したら、pppd は /etc/ppp/ip-up をチェックします。 このスクリプトが存在して実行可能になっていたら PPP デーモンはそのスク リプトを実行します。ですから、このスクリプトに PPP 接続を使う場合に実 行したい特別の経路情報の設定やその他の必要な設定をするためのコマンド を書いておけば、PPP 接続のたびに自動的に実行できます。

/etc/ppp/ip-upは普通のシェルスクリプトで構わないので、シェル スクリプトで可能なことは何でもできます(やりたいことは何でもできます)。

例えば、このシェルスクリプトの中で sendmail を使って mail queue に溜っ ているメールを送りだすようなことも可能です。

同様に、ip-up に(pop を使って)メールを取りこむようなコマンドを設定し、 ISP に届いているメールを自動的に取りこむことも可能です。

23.1 特別の経路設定

2 つの LAN を接続する場合、'外部の' LAN へ向いた特別の経路情報を設定し てやる必要があります。これも /etc/ppp/ip-up スクリプトの中で 設定するのが簡単でしょう。問題になるのは、複数の PPP 接続を使う場合で す。

/etc/ppp/ip-up は全ての ppp 接続の際に実行されるスクリプトな ので、接続に応じた必要な経路制御に関するコマンドが正しく実行されるよう に注意深く設定してやる必要があります。

このためには pppd がこのスクリプトに渡すパラメータを使って bash の 'case' 文で条件分岐してやるのがいいでしょう。例えば、以下に示すものは、WAN 接 続と私の自宅へのイーサネット接続を使いわけるためのスクリプトです(両者 とも同じ ppp サーバを使っています)


#!/bin/bash
# pppd で必要に応じてルーティングを設定するためのスクリプト
# Newman campus へのリンクにのみルーティングが必要
#
# ppp 接続の際、このスクリプトは以下のような引数で呼び出される。

#       $1      pppd が使うインターフェイス名(例:ppp3)
#       $2      tty デバイス名
#       $3      tty デバイス速度
#       $4      インターフェイスのローカル IP アドレス
#       $5      リモートの IP アドレス
#       $6      pppd の ipparam オプションで指定するパラメータ
#
case "$5" in
# Newman Campus のサーバへのルーティングを設定
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# メールキューに溜っているメールを送りだす。
                /usr/sbin/sendmail -q &
                ;;
        139.130.177.2)
# インターネット接続
# タイムサーバが動いてなければ接続時に起動して、世界の時刻と同期する。
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &
                fi
# ニュースサーバの起動(動いてなければ)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &
                fi
                ;;
        203.18.8.104)
# 
# 自宅のマシンにメールを送りこむ。自宅のイーサネットはIP masqeurade と 
# proxy arp のルーティングになっているのでルーティングは不要
                /usr/sbin/sendmail -q &
                ;;
        *)
esac
exit 0

Newman campus へこのスクリプトで接続した場合、以下に示すようなルーティ ングテーブルが設定されます(このマシンは私たちのダイアルアップ PPP サー バ兼インターネット接続マシンです)。それぞれのエントリが何を示すかのコ メントを付けておきました。


[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# インターネットゲートウェイへのホストルート
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# Newman campus サーバへのホストルート
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# 私の自宅のイーサネット LAN へのホストルート
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# 公開している 2 つのダイアルアップ PPP 用回線
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# Newman campus LAN へのネットワークルート
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# ローカルのイーサネットへのルート(2 つの連続するクラス C のネットワーク
# を接続しています)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# loop back デバイスへのルート
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# インターネットへのデフォルトルート
default         139.130.177.2   *               UG    1500   0     3633 ppp4

23.2 e-mail の処理

前節では接続が確立した時に単純にメールキューをフラッシュするという方法 で外へ送り出すメールをどう処理するかを示しました。

WAN 接続の場合、接続先の LAN のネットワーク管理者と相談して同じことを することが可能です。例えば、我々の WAN 接続では Newman Campus 側の /etc/ppp/ip-up スクリプトはこのようになっています。


#!/bin/bash
#
# pppd に必要なルーティング情報の設定
# Hedlan 宛ての接続の場合のみに必要
#
# ppp 接続の際、このスクリプトは以下のような引数で呼び出される。
#
#       $1      pppd が使うインターフェイス名(例:ppp3)
#       $2      tty デバイス名
#       $3      tty デバイス速度
#       $4      インターフェイスのローカル IP アドレス
#       $5      リモートの IP アドレス
#       $6      pppd の ipparam オプションで指定するパラメータ

case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0

ISP 接続で IP アドレスを動的に割りあてる PPP 接続しか使えない場合でも ISP のマシンにあるあなた宛のメールを取りこみたい場合があるでしょう。こ の場合、一般的には POP(Post Office Protocol)を使います。POP は 'popclient' プログラムで扱え、ip-up スクリプトで設定することで自動化することが可能 です。

適切な設定で popclient を起動するスクリプトのみを含む /etc/ppp/ip-up を用意します。Red Hat Linux の入っているラップトップ機(旅行の必需品で す)では、このようにしています。


popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail

ニュースについても同様のことが slurp などのプログラムを使うことで可能 です。ip-up スクリプトは単なる bash スクリプトなので PPP 接続が立ちあ がったときに毎回行うべきどんな仕事でもさせることが可能です。


次のページ 前のページ 目次へ