PPP 接続が確立したら、pppd は /etc/ppp/ip-up
をチェックします。
このスクリプトが存在して実行可能になっていたら PPP デーモンはそのスク
リプトを実行します。ですから、このスクリプトに PPP 接続を使う場合に実
行したい特別の経路情報の設定やその他の必要な設定をするためのコマンド
を書いておけば、PPP 接続のたびに自動的に実行できます。
/etc/ppp/ip-up
は普通のシェルスクリプトで構わないので、シェル
スクリプトで可能なことは何でもできます(やりたいことは何でもできます)。
例えば、このシェルスクリプトの中で sendmail を使って mail queue に溜っ ているメールを送りだすようなことも可能です。
同様に、ip-up に(pop を使って)メールを取りこむようなコマンドを設定し、 ISP に届いているメールを自動的に取りこむことも可能です。
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
前節では接続が確立した時に単純にメールキューをフラッシュするという方法 で外へ送り出すメールをどう処理するかを示しました。
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 接続が立ちあ がったときに毎回行うべきどんな仕事でもさせることが可能です。