<!-- $Id: userppp.sgml,v 1.6 1997/03/15 06:57:56 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.15 -->

<sect> ユーザ PPP のセットアップ <label id="userppp">

<p><em>原作: &a.nik;<newline>
28 July 1995</em>.
<p><em>更新: &a.brian;<newline>
14 March 1997</em>.
<p><em>訳: &a.saeki;<newline>
11 November 1996</em>.

<!--  この FAQ または手引は, <em> ユーザレベル ppp</em> としても
  知られている iijppp を, あなたの FreeBSD 2.0.5 (以降) で
  動くようにすることを目的としています. 

  実は私は PPP の権威ではありません. ですから, このドキュメントが
  協力の成果となってくれるよう望んでいます. 
  わたしは ppp を動かすことができるようになりましたので, 他の人もそれを
  動かすことができるように, 私がやったことの詳細を伝えたいと思います. 
  しかし, 私はいくつかの細かい点について 100% 理解しているわけではありません. 
  そのため, このドキュメントを書くことにより他の人に情報を伝えるとともに, 
  私も何かを学びたいと思っています. 
-->

  <p> ユーザ PPP は FreeBSD 2.0.5-RELEASE において, 
  既存のカーネル実装版の PPP に加えて導入されました. 
  それでは, この新しい PPP が追加された理由となる ppp との違いは何でしょう ?
  マニュアルから引用すると: 

<quote>
       これはユーザプロセス PPP ソフトウェアパッケージです. 通常 PPP は
       (例えば pppd でそうなっているように) カーネルの一部として
       実装されています. そのためデバッグや動作の変更が幾分困難です. 
       しかしこの実装では,  PPP はトンネルデバイスドライバ (tun) の
       補助により, ユーザプロセスとして実装されています. 
</quote>

  これは本質として, 常に PPP デーモンを実行しておかないでも, 
  必要な時に ppp プログラムを実行できるということを意味します. 
  このプログラムはカーネルとのデータ送受のために一般のトンネルデバイスを
  使うことができるため, PPP インターフェースをカーネルに組み込んでおく
  必要がありません. 

  以降では, ユーザ ppp と他の PPP クライアント / サーバソフトウェアとを
  区別する必要がないので, ユーザ ppp を単に ppp とだけ呼びます. 
  特に断らない限り, このセクションのすべてのコマンドは root 権限で
  実行する必要があります. 

  このセクションでアスタリスクマーク (*) のついている部分は不完全です. 
  コメントや提案は歓迎しますので, &a.nik; まで送ってください. 
  私が最初にユーザ ppp を実験していた時に, 価値ある情報の宝庫となってくれた
  Rob Snow &lt;rsnow@txdirect.net&gt に感謝します. 

  訳者注: このユーザ ppp は iij-ppp0.94(beta2?) に由来しています. 
           作者の大野さんは日本の方ですので, iij-ppp には詳細な日本語
           ドキュメントが附属しています. オリジナルアーカイブ
           (iij-ppp0.94beta2.tar.gz) を入手して, そちらを参照されることを
           強くおすすめします. 

<sect1><heading> スタートの前に </heading>

<p> このドキュメントでは, あなたが大体以下のような状況にあると仮定しています:

    PPP 接続の使えるインターネットサービスプロバイダ (ISP) のアカウントを
    持っている. さらに, 接続済みのモデム (または他のデバイス) があり, 
    プロバイダとの接続が可能なように正しく設定されている. 

  以下の情報を手に入れておく必要があるでしょう:

<itemize>
    <item> プロバイダのゲートウェイの IP アドレス
    
    <item> プロバイダのネットマスク設定

    <item> 一つ以上のネームサーバの IP アドレス

    <item> もしプロバイダが固定の IP アドレスとホスト名を割り当ててくれるなら, 
      それも同様に必要でしょう. そうでなければ, どの IP アドレス範囲から
      割り当てがおこなわれるかを知っておく必要があるでしょう. 
</itemize>

  もしこれらの情報のうち不明なものがあれば, 
  プロバイダに連絡して確認しておいてください. 

  同様に, カーネルを再コンパイルするためのファイルが必要になるかもしれません. 
  これらを手に入れる方法の詳細については <ref id="kernelconfig" name="FreeBSD
  カーネルのコンフィグレーション"> を参照してください. 

  加えて, インターネットへの接続は常時おこなわれているものではなく, 
  そのためネームサーバ (<tt>named(8)</tt>) を立ち上げていないと仮定しています. 

<sect1><heading>ppp 対応カーネルの構築 </heading>

<p> 説明でも述べているように, ``ppp'' はカーネルの ``tun'' デバイスを使います. 
  そのため, このデバイスがカーネルに組み込まれているかどうか
  確認しておかなくてはいけません. 

  これを確認するには, カーネルコンパイルディレクトリ
  (おそらく /sys/i386/conf) に移動して, カーネルコンフィグレーション
  ファイルを調べます. 以下の行がどこかに含まれている必要があります. 
<tscreen><verb>
pseudo-device     tun           1
</verb></tscreen>
  元々の GENERIC カーネルは標準でこれを含んでいますので, カスタムカーネルを
  インストールしているのでなければ, 何も変更する必要はありません. 
  あなたのカーネルコンフィグレーションファイルに
  この行が含まれていなかったら, この行を追加して
  カーネルの再コンパイルとインストールをおこなう必要があります. 
  この新しいカーネルを使ってブートしてください. 
  カーネルコンフィグレーションの詳細については, 
  <ref id="kernelconfig" name="FreeBSD カーネルのコンフィグレーション">
  を参照してください. 

<sect1><heading>tun デバイスのチェック </heading>

<p> 私は一つの ``tun'' デバイス (tun0) による ppp を使った経験しかありません. 
  より多くのデバイスを使う場合 (すなわち, カーネルコンフィグレーション
  ファイルで疑似デバイスの行に `1' 以外の数値が指定されている場合), 
  以下のすべての ``tun0'' に対する参照を, あなたが使うデバイスの番号に
  あわせて変更してください. 

  tun0 デバイスが正しく設定されていることを確認する最も簡単な方法は, 
  それを作り直すことです. そのためには, 以下のコマンドを実行します:
<tscreen><verb>
# cd /dev
# ./MAKEDEV tun0
</verb></tscreen>

<sect1><heading>PPP の設定 </heading>

<p> これが一番重要な部分です. 

  まぎらわしいことに, ユーザ ppp と pppd (カーネルレベルの PPP 実装) は, 
  どちらも設定ファイルが /etc/ppp に置かれていると仮定しているようです. 
  しかし, 提供されているサンプル設定ファイルはユーザ ppp 用のものです. 
  後で参照できるようにこれを保存しておきます. 
  最も簡単な方法は, 以下の通りです: 
<tscreen><verb>
# cd /etc
# mv ppp ppp.orig
# mkdir ppp
</verb></tscreen>
  ppp を設定するためには, 必要に応じて一つ〜三つのファイルを
  編集する必要があります. 書き込む内容はプロバイダが静的に IP アドレスを
  割り当てる (つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う) か, 
  または動的に IP アドレスを割り当てる (つまり, PPP セッション毎に 
  IP アドレスが異なる可能性がある) かにある程度依存します. 

  しかし, 静的な IP アドレスを使うか動的な IP アドレスを使うかにかかわらず, 
  最初にやらなければならないことがいくつかあります. 

<sect2><heading>resolver(5) の設定 </heading>

<p>リゾルバ (resolver) はネットワーキングシステムの一部分で, IP アドレスと
     ホスト名との変換をおこないます. これは, IP アドレスとホスト名を
     対応づけるマップを二つの場所のうちの一つから探すように設定できます. 

     一つめの場所は <tt>/etc/hosts</tt> (<tt>man 5 hosts</tt>) と呼ばれる
     ファイルです. 
     二つめの場所は, 分散データベースである, インターネットドメイン
     ネームサービスです. これに関する議論はこのドキュメントの範囲を
     越えています. 

     リゾルバはマッピングをおこなうシステムコールの集合です. 
     どこからマッピング情報を得るのかは, あなたが指示する必要があります. 
     これは <tt>/etc/host.conf</tt> ファイルを編集することでおこないます. 
     混乱の元ですので, このファイルを <tt>/etc/hosts.conf</tt> と
     呼んだりしては <bf> いけません </bf> (余分な ``s'' に注意). 

     このファイルは以下の 2 行を含んでいるはずです. 
<tscreen><verb>
hosts
bind
</verb></tscreen>
     これは, 最初に <tt>/etc/hosts</tt> ファイルを調べ, 
     目的の名前が見つからなければ DNS を引きにいくようリゾルバに指示します. 

     このマシンで ``named'' サービスが走っていないことを確認しておいた方が
     良いでしょう. 
     <tt>/etc/sysconfig</tt> ファイルをチェックして ``namedflags'' の行を探し, 
     以下のようになっていることを確認します. 
<tscreen><verb>
namedflags="NO"
</verb></tscreen>

<sect2><heading>/etc/hosts(5) ファイルの作成 </heading>

<p> このファイルはローカルネットワーク上に存在するマシンの IP アドレスと
     ホスト名を含んでいるはずです. 最低でも ppp を動作させるマシンのエントリが
     含まれている必要があります. あなたのマシンのホスト名が foo.bar.com で, 
     IP アドレスが 10.0.0.1 であると仮定すると, <tt>/etc/hosts</tt> は
     以下の行を含んでいなければいけません:
<tscreen><verb>
127.0.0.1    localhost
10.0.0.1     foo.bar.com               foo
</verb></tscreen>
     最初の行は別名 ``localhost'' を現在のマシンの同義語として定義しています. 
     マシン固有の IP アドレスが何であっても, この行の IP アドレスは常に 
     127.0.0.1 でなければいけません. 二つめの行はホスト名 ``foo.bar.com'' 
     (と別名 ``foo'') を IP アドレス 10.0.0.1 にマップします. 

     もしプロバイダが固定の IP アドレスを割り当ててくれるなら, 
     それを 10.0.0.1 のかわりに使ってください. 

     <!-- XXX <em>(* IP アドレスの割り当てが動的におこなわれる場合は
     どうするべきか ?)</em> -->

<sect2><heading> /etc/resolv.conf ファイルの作成 </heading>

<p><tt>/etc/resolv.conf</tt> はネームサーバをそのマシンで走らせていない場合に
     必要になる特別な情報を含んでいます. これは実際のネームサーバの位置を
     リゾルバルーチンに指示したり, その他いくつかの情報を指定したりします. 

     少なくとも <tt>/etc/resolv.conf</tt> は問い合わせ可能なネームサーバを
     示す 1 行を含んでいる必要があります. 
     これは (ホスト名ではなく) IP アドレスで書かなければいけません. 
     私の <tt>/etc/resolv.conf</tt> は以下の行を含んでいます: 
<tscreen><verb>
nameserver 158.152.1.193
nameserver 158.152.1.65
</verb></tscreen>
     これはプロバイダ Demon Internet の二つのネームサーバです. 
     あなたのプロバイダのネームサーバ行をすべて書いてください. 

<sect1><heading>PPP と静的 IP アドレス </heading>

<p> これはおそらく設定が最も楽でしょう. 必要なのは <tt>/etc/ppp</tt> 
    ディレクトリにファイルを三つ作成することだけです. 

    一つめのファイルは <tt>ppp.conf</tt> です. 以下の例と似たような
    ものになるでしょう. ``:'' で終る行は 1 カラム目から始まり, その他の行は
    この例の通りにインデントされている必要があるということに注意してください. 

    <tt>/etc/ppp/ppp.conf</tt>
<tscreen><verb>
1     default:
2       set device /dev/cuaa0
3       set speed 9600
4       disable lqr
5       deny lqr
6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK
\\dATDT\\T TIMEOUT 40 CONNECT"
7      provider:
8        set phone 01234567890
9        set login "TIMEOUT 10 gin:-BREAK-gin: foo word: bar col: ppp"
10       set timeout 120
11       set ifaddr x.x.x.x y.y.y.y
12       delete ALL
13       add 0 0 y.y.y.y
14       set openmode active
</verb></tscreen>
    行番号はファイルには含めないでください. これは説明のためのものです. 

<descrip>
<tag/Line 1:/ デフォルトエントリを指定します. このエントリ中のコマンドは
              ppp が起動された時に自動的に実行されます. 

<tag/Line 2:/ モデムが接続されているデバイスを指定します. 
              COM1: は <tt>/dev/cuaa0</tt> で, 
              COM2: は <tt>/dev/cuaa1</tt> です. 

<tag/Line 3:/ 接続速度 (DTE 速度) を設定します. 

<tag/Line 4:/ LQR を要求しないように指示します. LQR とは接続相手がダウン
              していないことを確認するために ppp で使用されるプロトコルです. 

<tag/Line 5:/ 接続相手からの LQR 要求を受け付けないように指示します. 

<tag/Line 6:/ ダイアルスクリプトです. ユーザ ppp は <tt>chat(8)</tt> 言語を
              使用します. この言語の仕様に関する情報についてはマニュアルを
              参照してください. 

<tag/Line 7:/ 接続するプロバイダの名前を ``provider'' として指定します. 

<tag/Line 8:/ プロバイダの電話番号を設定します. 電話番号にはスペースを
              含めないでください. 

<tag/Line 9:/ ログインスクリプトを設定します. 
              この例は, 以下のようなログインセッションを持つ
              プロバイダのためのものです. 
<tscreen><verb>
J. Random Provider
login: foo
password: bar
protocol: ppp
</verb></tscreen>
              このスクリプトは必要に応じて書き換える必要があるでしょう. 
              これは <tt>chat(8)</tt> 言語で書かれています. 

<tag/Line 10:/ デフォルトのタイムアウトを (秒数で) 設定します. 
              この例では, 120 秒間通信がおこなわれなければ, 自動的に接続が
              切られます. 

<tag/Line 11:/ インターフェースアドレスを設定します. 文字列 x.x.x.x は
              プロバイダに割り当てられた IP アドレスで置き換えてください. 
              文字列 y.y.y.y はプロバイダによりゲートウェイとして指示された
              IP アドレスで置き換えてください. 

<tag/Line 12:/ この PPP 接続で使用する tun デバイスに関する, 
              既存の全ルーティングテーブルエントリを削除します. 

<tag/Line 13:/ プロバイダ側の IP アドレスをデフォルトルートに設定します. 

<tag/Line 14:/ こちら側からネゴシエーションを開始するように指示します. 
              これは接続相手が自分からネゴシエーションを開始するように
              設定されている場合には必要ありませんが, 両方とも自分から
              Line Control Protocol (LCP) を開始するように設定されていても
              何も問題はありません. 
</descrip>

    次に <tt>/etc/ppp/ppp.linkup</tt> ファイルを編集します: 
<tscreen><verb>
x.x.x.x:
  delete ALL
  add 0 0 HISADDR
</verb></tscreen>
    先ほどと同じように x.x.x.x をあなたの IP アドレスで置き換えます. 
    このファイルは, この PPP 接続に関する既存のルートを自動的に
    全部削除したり, あなたのマシンからプロバイダへのルート 
    (HISADDR マクロはプロバイダのアドレスで自動的に置き換えられます) を
    デフォルトルートとして追加するのに使われます. 

    プロバイダが静的な IP アドレスを割り当ててくれるなら, 実は
    <tt>/etc/ppp.linkup</tt> ファイルにエントリを書く必要はありません. 
    しかしもう一度言いますが, 書いてあっても何の問題もありません. 

    最後に, <tt>/etc/ppp/ppp.secret</tt> ファイルを作成します. 
    同じ ppp システムを使う他のユーザによる不正使用を防ぐためのパスワードを
    設定します. どれだけの人がこの ppp システムを使うかによっては, 
    これを設定したいと思うかもしれません. 

<sect1><heading>PPP と動的 IP 設定 </heading>

<!-- XXX -->
 <p> プロバイダが静的な IP アドレスの割り当てをおこなわない場合, 
   <tt>ppp</tt> がリモートホストと交渉してローカルアドレスを決定するように
   設定することができます. これは起動時には「仮定」した IP アドレスを使い, 
   接続時に LCP を使って ppp が IP アドレスを正しく設定できるように
   しておくことで実現されます. 
<tscreen><verb>
    ifaddr 10.0.1.1/0 10.0.1.2/0
    delete ALL
    add 0 0 10.0.1.2
</verb></tscreen>
   どちらの IP アドレスに対しても 0 を指定するべきでは「ありません」. 
   もし 0 を指定すると, ppp が正しい初期エントリをルーティングテーブルに
   設定することができなくなるでしょう. 

   <tt>ppp.conf</tt> を読み込んだ時点では, まだ HISADDR マクロは
   使えないことに注意してください. 

   詳細なサンプルについては, <tt>/etc/ppp/ppp.conf.sample</tt> ファイルの 
   pmdemand エントリと <tt>/etc/ppp/ppp.linkup.sample</tt> とを
   参照してください. 

<sect1><heading> システムの最終設定 </heading>

<p> これで PPP の設定は終りました. しかし PPP の動作準備が完了するのには
    もう少し必要なことがあります. 
    それはすべて <tt>/etc/sysconfig</tt> ファイルの編集に含まれています. 

    このファイルを上から順に設定していきます. まず ``hostname='' の行が
    設定されていることを確認します. 例えば, 
<tscreen><verb>
hostname=foo.bar.com
</verb></tscreen>
    次に network_interfaces 変数を探し, tun0 デバイスがリストに追加されて
    「いない」ことを確認します. 私の設定では以下のようになっています. 
<tscreen><verb>
network_interfaces="lo0 ep0"
</verb></tscreen>
    私はイーサネットカード (ep0) も持っているので, このように設定しています. 

    以下のようにルータプログラムを ``NO'' に設定します. 
<tscreen><verb>
router=NO
</verb></tscreen>
    <tt>routed</tt> は, せっかく ppp が作成したルーティングテーブル
    エントリを削除してしまう場合がありますので, これを (デフォルトの) 
    <tt>routed</tt> のままにしておかないことが重要です. 

    ``sendmail_flags'' 行が ``-q'' オプションを含まないように
    設定しておいた方がよいでしょう. さもないと, sendmail が
    アドレスを調べるために発信をおこなってしまう場合があります. 
    私の sendmail 行は次の通りです. 
<tscreen><verb>
sendmail_flags="-bd"
</verb></tscreen>
    結果として, PPP リンクを立ち上げた時はいつも以下のようにタイプして 
    sendmail に mailqueue を調べ直させるようにしています. 
<tscreen><verb>
# /usr/sbin/sendmail -q
</verb></tscreen>
    こうするのが嫌ならば, SMTP トラフィックをブロックするように
    "dfilter" を設定しておくこともできます. 
    詳細についてはサンプルファイルを参照してください. 

    これで PPP を動作させるために必要な設定はほとんど終了しました. 
    後はマシンをリブートするだけです. 

    さあ, どちらでもお好みのほうをタイプしてください. 
<tscreen><verb>
# ppp
</verb></tscreen>
    続いて PPP セッションを開始させるために ``dial provider'' をタイプします. 
    これとは別に, 外部へのトラフィックが発生した時に ppp が自動的に
    セッションを確立してくれるようにしたければ, 以下のようにタイプします. 
<tscreen><verb>
# ppp -auto provider
</verb></tscreen>
    この行を <tt>/etc/rc.local</tt> ファイルに追加しておいても良いでしょう. 
