Comfortable Life with NetBSD

おうちで NetBSD (PPPの設定)

おうちで NetBSD といっても、特別なことはほとんどありません。 単に大学だと LAN 環境にいるけれども、家に帰ると電話回線でしか よその計算機とお話しできないって事だけです。そこで、 ここでは NetBSD 附属の pppd を用いて ppp 接続するための方法についてまとめます。

技術評論社 Linux x BSD Hyper Pressに 書いた記事を元に書き直しました。古いバージョンも あります。

NOTE:福井医科大学内のユーザで防火壁内部から 見ている場合はてらに 大学に特化した物があります。そちらもあわせて御覧下さい。


MENU

  1. カーネルの確認
  2. モデムの設定
  3. 手動接続
  4. Dial_On_Demand
  5. 便利にしよう

カーネルのチェック

まずはともあれ、自分のカーネルが、ppp をサポートしているか確認しましょう。

   [tamp]~% /sbin/ifconfig -a
   ...
   ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
   ppp1: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
   ...
  

と出てくればサポートしています。(一つあれば十分です。) 出てこないばあいは カーネルの configuration file に
pseudo-device ppp 2 # PPP
という行を付け加えて(別に 0 でなければいくつでもかまいません) カーネルを作り直しリブートをかけます。


モデムの設定

次は modem の設定確認です。モデムの繋がっているデバイス名を 確認します。

   % /sbin/dmesg | grep ^com
   com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
   com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
   com2 at pcmcia1 function 1 port 0x420-0x427: serial device
   com2: ns16550a, working fifo

私の場合 pcmcia card を用いていますから com2がモデムです。 ここで、comtty に変えたものがモデムの デバイス名になります。そこで、次のように入力します。

[tamp]/root# cu --line=/dev/tty02
connected
at
ok

ここまでくれば、modem ときちんとお話しできる環境になっています。 Modem のマニュアルを片手に必要なセットアップを行ってください。 以下では「57600baud, parity none, hardware flow control を用いて、 応答コードは文字列」という設定を仮定します。具体的な方法は モデムの種類によるのでマニュアルを片手に行ってください。

modem と話をするのを止めるのには "~." を入力します。


手動接続

必要な時に自分で pppd を立ち上げてネットワーク設定を行う 方法です。自動接続と違って一々しないといけない面倒くささはありますが、 思いもかけないときに勝手に電話されないので、まずこちらでつなぐことにしましょう。 次の様なファイルを作成します。基本的には pppd(8) に書いてあることと 同じですから、よくわからないときには参照してください。

さて以上のファイルを準備できれば、
[tamp]~% /usr/sbin/pppd call mygate
と入力すれば電話をかけはじめつながります。つながってしまえば、
[tamp]~% telnet <IP_Address>
とすれば外部の計算機につながるでしょう。もちろん、 /etc/resolv.confきちんと設定しておけば名前でもつながります。 複数のプロバイダと契約している場合には同様にして peers の ディレクトリの下に設定ファイルを作ります。認証方式が Unix Login の場合には chats/login の中身も変更したものを作ることを忘れないでくださいね。

あと、/etc/ppp/ip-up とか /etc/ppp/ip-down とかに つながった時と切れた時に行うコマンドを書くことが出来ますが、必須ではありません。 一応例題を。

    #!/bin/sh
    # /etc/ppp/ip-up
    /bin/echo `/bin/date` PPP: IP up:   $1 on $2 at ${3}b/s from $4 to $5 > /dev/console
    #!/bin/sh
    # /etc/ppp/ip-down
    /bin/echo `/bin/date` PPP: IP down: $1 on $2 at ${3}b/s from $4 to $5 > /dev/console

このようにしておくと PPP の状態が変化したときに console に通知されます。 これらのコマンドはスーパーユーザ権限で起動されるので security には十分 注意する必要があります。また、すべての入出力は /dev/nullに つながれていることにも注意しましょう。


Dial_On_Demand

必要な時にだけ電話を勝手にかけるようにするためには上にあげたファイルの内、 次のファイルだけをほんの少し変更する必要があります。

/etc/ppp/peers/mygate

    # mygate dial on demand version
    tty02
    noipdefault
    defaultroute
    idle 60
    noauth
    ipparam mygate
    user ogaito
    demand
    :<ip_of_pppserver>
    ipcp-accept-local
    ipcp-accept-remote
    connect  '/usr/sbin/chat -v -f /etc/ppp/chats/chap -T 123456'
    #connect '/usr/sbin/chat -v -f /etc/ppp/chats/login.mygate -T 123456'
  

マニュアルによれば remote 側の IP address が指定されていないばあいには dial on demand は出来ないようにみえます。しかしながら ipcp-accept-remote option をつけていると相手が自分の IP を 言ってきたときに動的に変わるのでわからないときは適当に設定してしまえばいいです。 嘘の gateway を指定していても接続後の routing table は書き直されます。 違っていた場合は syslogd にdaemon.warning で通知されますから、 log file を見れば正しい remote IP がわかります。あるいは接続中に netstat -rn の出力を見てもわかります。 ちなみに、"<" と ">" は必要ありません。 直接 IP address を書きます。

変更したら pppdを立ち上げます。

  
  [tamp]~% pppd call mygate

起動しても電話かかりませんよね? ではおもむろに

  [tamp]~% telnet xxxxxxxx
  

と打ってみましょう。電話がかかりはじめつながることでしょう。 この時注意するべきことは、一般の dialup 接続、つまり固定アドレスを 持っていない場合、ppp 接続の結果、起動前と接続後の ppp0 に振られていた アドレスは異なります。したがって、pppd を起動するきっかけとなった パケットは戻ってくることがありません。そのため、いきなり IP アドレスを 指定して telnetなどのコマンドを実行するとそのコマンドは 接続に失敗します。これを避けるためには pppd の書き直しをする必要が ある気がするのですが、私はめんどくさいのできっかけには pingを 使うか、/etc/hosts に書かれていない hostname を指定してコマンドを 実行するようにしています。hostname が /etc/hosts で解決できない場合に 用いられる resolver は timeout を起こした場合、retry を してくれるので、ユーザーにとって問題が起きていないように見せることが出来ます。

この Dial on Demand 設定を使うと思いがけないときに勝手に 電話をかけはじめるので cron などで起動されている scripts をチェックしておかないと、電話代が恐しいことになるかも 知れません。:-)


もっと便利にしよう

手動接続の最後で紹介した /etc/ppp/ip-up/etc/ppp/ip-downを 使うと、接続時に様々な設定を行わせることが出来ます。これらのスクリプトは 引数として、interface名、デバイス、スピード、local IP アドレス、 remote IP アドレスを与えられます。 ipparam が指定されている場合 その内容が最後の引数に加えられます。また、pppd の設定ファイルに

usepeerdns

を加えるとこれらの script の中から、DNS1, DNS2 という環境変数を 通して、server から通知された DNS の IP アドレスを利用することが出来ます。

また、これらの script はスーパーユーザー権限で実行されるので、 時刻あわせもできますし、mail queue にたまった mail を送り出すことも 出来ます。今私が使っている ip-upip-downを参考のために載せておきましょう。


Return to Comfortable Life With NetBSD


Driven By NetBSD Accesses to this page:


Valid HTML 4.0! tacha@tack.fukui-med.ac.jp
$Tera: netbsd_at_home.html,v 1.1 2001/08/23 08:46:29 tacha Exp $
Copyright(C) 1997,1998, 2000 Tatoku Ogaito. ALL RIGHTS RESERVED.