# PPP - Pedantic PPP Primer

### Steve Sims

`<SimsS@IBM.net>`

これは FreeBSD システムをローカル環境のダイアルアップルータ / ゲートウェイとしてセットアップするためのステップアップガイドです. 内容は, 特に指定のない限り FreeBSD 2.2 以降のバージョンを想定しています.

[ 分割版 / 単一版 ]

# 概要:

FreeBSD 2.2 におけるユーザモード PPP ("IIJ-PPP" としても知られています) は, 現在ダイアルアップインターネット環境における Packet Aliasing をサポートしています. この機能は, "Masquerading", "IP Aliasing", そして "Network Address Translation" としても 知られており, この機能を生かせば FreeBSD システムをイーサネットを基盤とした ローカルエリアネットワーク (LAN) とインターネットサービスプロバイダ間の ダイアルオンデマンドルータとして活用することができます. LAN 上のシステムは FreeBSD システムを経由することにより, 単一のダイアルアップ接続を通してインターネットと情報を交換することが できるのです.

このガイドは

- FreeBSD システムをダイアルアウト接続できるように設定し,

- ダイアルアウト接続をネットワーク上の他のシステムと共用し,

- Windows システムが FreeBSD システムをインターネットへの ゲートウェイとして用いる

のための方法を説明しています.

このガイドは IP Aliasing の設定を助けることに重点を置いたものですが, 個々の構成要素をインストールし設定する時に必要となる具体例も含まれていますから, どの章をとっても, FreeBSD でネットワークに関する様々な設定を行うときの 助けになるでしょう.

# Chapter 1. ローカルエリアネットワーク (LAN) をつくる

ppp は通常 一台の ローカルな FreeBSD マシンに サービスを提供するために設定されていますが, LAN に接続された資源とインターネット, またはその他のダイアルアップサービス間の「ゲートウェイ」(または「ルータ」)として 使用することもできます.

## 1.1. 典型的なネットワークトポロジ

このガイドでは, 典型的なローカルエリアネットワークでは, 次のような接続を行っていると想定しています.

    +---------+       ----> ダイアルアップインターネット接続
    | FreeBSD |       \       (例: So-net, Infoweb, RIMNET, 等)
    |         |--------
    | "Curly" |
    |         |
    +----+----+
         |
    |----+-------------+-------------+----|  <-- イーサネットネットワーク
         |             |             |
         |             |             |
    +----+----+   +----+----+   +----+----+
    |         |   |         |   |         |
    |  Win95  |   |   WFW   |   |  WinNT  |
    | "Larry" |   |  "Moe"  |   | "Shemp" |
    |         |   |         |   |         |
    +---------+   +---------+   +---------+

## 1.2. ローカルエリアネットワークに関する想定

このガイド中のネットワークでは, 次のようなことを想定しています.

三台のワークステーションとサーバはイーサネットでつながっています.

- FreeBSD サーバ ("Curly") は 'ed0' として設定された NE-2000 アダプタを使用しています.

- Windows-95 ワークステーション ("Larry") は Microsoft 「ネイティブ」な 32 ビット TCP/IP ドライバを使用しています.

- Windows for Wrokgroups ワークステーション ("Moe") は Microsoft の 16 ビット TCP/IP エクステンションを使用しています.

- Windows NT ワークステーション ("Shemp") は Microsoft 「ネイティブ」な 32 ビット TCP/IP ドライバを使用しています.

イーサネットで結ばれた LAN 内部での IP アドレスは, RFC-1597 で提案された「予約」アドレスの中から選ばれています. 具体的には以下の通り.

名前 | IP Address | 備考
--- | --- | ---
`Curly` | `192.168.1.1` | FreeBSD マシン
`Larry` | `192.168.1.2` | Win95 マシン
`Moe` | `192.168.1.3` | WfW マシン
`Shemp` | `192.168.1.4` | Windows NT マシン

このガイドではモデムは FreeBSD マシンの一番目のシリアルポート ('`/dev/cuaa0`' DOS 用語では 'COM1:') に接続されているものとします.

最後に, インターネットサービスプロバイダ (ISP) は PPP/FreeBSD サイドと ISP サイドの両方に自動的に IP アドレスを割り当てるものとします. (つまり, リンクの両端で動的 IP アドレス割り当てが行われます.) PPP のダイアルアウトの設定の詳細については, 第 2 章 「FreeBSD システムの設定」で扱います.

# Chapter 2. FreeBSD システムの設定

ローカルエリアネットワーク (LAN) の統合を進める前に FreeBSD マシンについて基本的な情報を三つ知っておく必要があります.

- FreeBSD システムのホスト名 (ガイドの例の中では "Curly"),

- ネットワークの設定,

- `/etc/hosts` ファイル. (ネットワーク内の 他のシステムの名前を IP アドレスをリストにしたもの)

FreeBSD システムをネットワークインストールした場合, これらの幾つかはすでに設定されている場合があります.

インストール時に FreeBSD システムの設定を正しく行った自信がある場合でも, 後のステップでつまずかないよう, もう一度見直しておくと良いでしょう.

## 2.1. FreeBSD のホスト名の確認

FreeBSD システムのインストール時に, マシンのホスト名が指定, 保存されている場合があります. 確認のため, 以下のコマンドをプロンプトから入力してください.

    # hostname

FreeBSD システムのホスト名が表示されたはずです. もしホスト名が正しければ (すぐわかるでしょ :-), Section 2.2 まで進んでください.

例えば, ガイド中のネットワークでは, インストール中 / 後にホスト名を正しく設定していれば, 'hostname` コマンドは 'curly.my.domain' を返します. (ここでは ".my.domain" の部分はあまり気にしないでください. それは後で片付けます. ここで大事なのは最初のドットまでの部分です.)

FreeBSD のインストール時にホスト名を設定していない場合, たぶん 'myname.my.domain` という答が返ってくるはずです. `/etc/rc.conf` を編集し, マシンに名前をつけてください.

### 2.1.1. FreeBSD のホスト名を設定する

念のため: システム設定ファイルを編集するためには 'root' でログインする必要があります!

警告: システム設定ファイルにおかしな変更を 加えた場合, システムが正常に **起動しない** 可能性があります! くれぐれもご注意を!

ブート時に FreeBSD システムのホスト名を決定している設定ファイルは `/etc/rc.conf` です. デフォルトのテキストエディタ ('ee') を使ってこのファイルを編集しましょう.

ユーザ 'root' でログインし, 以下のコマンドを入力して `/etc/rc.conf` をエディタに読み込みましょう.

    # ee /etc/rc.conf

矢印キーや scroll down を使って, FreeBSD システムのホスト名を 記述した部分を見つけましょう. デフォルトではこうなっているはずです.

    ---
    ### Basic network options: ###
    hostname="myname.my.domain" # Set this!
    ---

これを次のように変えましょう.(あなたの環境に合わせてください)

    ---
    ### Basic network options: ###
    hostname="curly.my.domain"  # Set this!
    ---

ホスト名を変更したら, 'Esc' キーを押してコマンドメニューを呼び出して下さい. "leave editor" を選択し, 確認を求めてきたら "save changes" を選びましょう.

## 2.2. イーサネットインタフェイスの設定の確認

もう一度確認ですが, このガイドでは FreeBSD システムのイーサネットインタフェイスとして 'ed0' が用いられていると想定しています. これは NE-1000, NE-2000, WD/SMC models 8003, 8013 と Elite Ultra (8216) ネットワークアダプタがデフォルトで使用するものです.

これ以外のネットワークアダプタは FreeBSD では異なったデバイス名で参照されます. FAQ をチェックして, ネットワークアダプタの記述を探してください. アダプタのデバイス名が分からない場合は, FreeBSD FAQ を読んで, 使用中のカードのデバイス名を確かめ, 以下のステップで登場するデバイス名をその名前 (例えば 'de0', 'zp0' など) に読み替えてください.

ホスト名と同様, イーサネットインタフェイスも FreeBSD システムのインストール時に設定されている場合があります.

FreeBSD システムの (イーサネットその他の) インタフェイスに関する設定を表示するために, 以下のコマンドを入力してください.

    # ifconfig -a

(フツーの言葉に直すと, 「うちのネットワークデバイスの InterFace CONFIGuration を見せて」って意味です)

例えば...

    # ifconfig -a
     ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu
    1500
          inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
          ether 01:02:03:04:05:06
     lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
     tun0: flags=8050<POINTOPOINT,RUNNING, MULTICAST> mtu 1500
     sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
     ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
     lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
          inet 127.0.0.1 netmask 0xff000000
    # _

この例では, 以下のデバイスが表示されました.

ed0: イーサネットインタフェイス

lp0: パラレルポートインタフェイス (このガイドでは触れません)

tun0: 「トンネル」デバイス ユーザモード ppp が使うやつです!

sl0: SL/IP デバイス (このガイドでは触れません)

ppp0: もう一つの PPP デバイス (カーネル ppp 用. このガイドでは触れません)

lo0: 「ループバック」デバイス (このガイドでは触れません)

この例では, 'ed0' デバイスは「上がって」動作しています. 以下の表示がキーになります.

1. このデバイスのステータスは "UP" で,

2. インターネット ("inet") アドレス (この例では 192.168.1.1) を持ち,

3. 有効なサブネットマスク ("netmask" 0xffffff00 は 255.255.255.0 に等しい) を持ち,

4. 有効なブロードキャストアドレス (この例では 192.168.1.255) を持っている.

もしイーサネットカードに関する表示がこんな感じだったら,

    ed0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
            ether 01:02:03:04:05:06

イーサネットカードはまだ設定されていません.

イーサネットインタフェイスの設定が正しく行われているなら, Section 2.4 まで進んでください.

### 2.2.1. イーサネットインタフェイスの設定

年のため: システム設定ファイルを編集するためには 'root' でログインする必要があります!

警告: システム設定ファイルにおかしな変更を 加えた場合, システムが正常に **起動しない** 可能性があります! くれぐれもご注意を!

ブート時に FreeBSD システムのネットワークインタフェイスの設定を決定している設定ファイルは `/etc/rc.conf` です. デフォルトのテキストエディタ ('ee') を使ってこのファイルを編集しましょう.

ユーザ 'root' でログインし, 以下のコマンドを入力して `/etc/rc.conf` をエディタに読み込みましょう.

`# ee /etc/rc.conf`

`/etc/rc.conf` の先頭から 20 行ほどの所に, システムのブート時にアクティブにするネットワークインタフェイスを記述する節があります. デフォルトの設定ファイルでは, 当該行は次のようになっています.

    network_interfaces="lo0"       # List of network interfaces (lo0 is loopback).

FreeBSD に 'ed0' という名前の 別のデバイスを加えることを伝えるには, この行を修正する必要があります. この行を次のように変えてください.

    network_interfaces="lo0 ed0"   # List of network interfaces (lo0 is loopback).

(ループバックデバイス ("lo0") と イーサネットデバイス ("ed0") の定義の間に スペースを入れるのを忘れないでください!)

念のため: イーサネットカードの名前が 'ed0' でない場合, きちんとその正しいデバイス名を指定してください

FreeBSD をネットワークインストールした場合, '`network_interfaces=`' の行がすでにイーサネットアダプタを参照している場合があります. その場合, それが正しいデバイス名かどうかを確認してください.

次に, イーサネットデバイス ('ed0') インタフェイスの設定を行いましょう.

アクティブにするインタフェイスの指定行の下に, 各インタフェイスに対する実際の設定を記述する行があります. `/etc/rc.conf` のデフォルトでは, この一行があるだけです.

    ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.

この下に 'ed0' デバイスの 設定を記述する行を加えましょう.

FreeBSD をネットワークインストールした場合, '`ifconfig_ed0=`' の行がループバックデバイスの定義の下に存在する場合があります. その場合, 記述された値が正しいものであるかどうか確認してください.

このガイドでは, ループバックデバイスの定義のすぐ次の行に次の一文を加えることにします.

    ifconfig_ed0="inet 192.168.1.1 netmask 255.255.255.0"

`/etc/rc.conf` の編集が終わったとき, ネットワークインタフェイスの記述と設定を行う行は, だいたいこんな感じになっているはずです.

    ---
    network_interfaces="ed1 lo0"    # List of network interfaces (lo0 is loopback).
    ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.
    ifconfig_ed1="inet 192.168.1.1  netmask 255.255.255.0"
    ---

`/etc/rc.conf` の編集が終わったら, 'Esc' キーを押してコントロールメニューを呼び出して下さい. "leave editor" を選択し, 確認を求めてきたら "save changes" を選びましょう.

## 2.3. パケットフォワーディングの有効化

デフォルトでは, FreeBSD システムは様々なネットワークインタフェイス間で IP パケットのフォワードを行いません. 言い換えると, ルーティングの機能 (ゲートウェイの機能とも言えます) は無効にされています.

FreeBSD システムただ一台をインターネット用のワークステーションとして使用し, LAN ノードと ISP 間とのゲートウェイとして使用しない場合は, Section 2.4 まで進みましょう.

PPP プログラムを使用してローカルの FreeBSD マシンを LAN のワークステーション (つまりルータ) としても機能させる場合は, IP フォワーディングを有効にする必要があります.

IP パケットのフォワーディングを有効にするためには `/etc/rc.conf` を編集する必要があります.

このファイルは `/etc/defaults/rc.conf` によるデフォルト値を上書きします. デフォルトゲートウェイの設定はそのファイルの 以下の行で行われています.

    gateway_enable="NO"

上書きするには, 以下の様な行を

    gateway_enable="YES"

`/etc/rc.conf` に追加します.

注意: FreeBSD システムのインストール時に IP フォワーディングが有効になっていた場合, すでに '`gateway_enable=YES`' という設定が行われている場合があります.

## 2.4. 他の LAN ホストのリスト (`/etc/hosts`) をつくる

FreeBSD システムの LAN に関する設定の最後のステップは, ローカルエリアネットワーク (LAN) に接続された様々なシステムのホスト名と TCP/IP アドレスのリストをつくることです. このリストは '`/etc/hosts`' の中に記述されます.

デフォルトの状態では, このファイルにはホスト名が一つしか含まれていません. ループバックデバイス ('lo0') のホスト名とアドレスです. ネットワークに関する約束事にしたがって, このデバイス名はいつも "localhost" と名付けられ, 127.0.0.1 という IP アドレスを持つことになっています Section 2.2.

`/etc/hosts` を編集するために, 以下のコマンドを入力してください.

     # ee /etc/hosts

ファイルの終りまで一気に移動して, (途中のコメントも気をつけて見ておきましょう. 有益な情報がいくつか書いてありますよ!) LAN 上のホストの IP アドレスとホスト名を入力してください. ガイド中のネットワークでは次のようになります.

    192.168.1.1    curly  curly.my.domain  # FreeBSD システム
    192.168.1.2    larry  larry.my.domain  # Windows '95 システム
    192.168.1.3    moe    moe.my.domain    # Windows for Workgroups
    システム
    192.168.1.4    shemp  shemp.my.domain  # Windows NT システム

('127.0.0.1 localhost' のエントリが書かれた行は変更する必要はありません.)

入力を終えたら, 'Esc' キーを押してコントロールメニューを呼び出してください. "leave editor" を選択し, 確認を求めてきたら "save changes" を選びましょう.

## 2.5. FreeBSD システムのテスト

おめでとう! これで FreeBSD システムはネットワークに接続された UNIX システムとして設定されました. `/etc/rc.conf` を変更した場合, ここで FreeBSD システムをリブートしてください. これには二つの大きな目的があります.

- インタフェイスの設定に加えた変更を反映させ,

- システムが設定エラーを報告せずに再起動することを確かめるためです.

システムのリブートが完了したら, ネットワークインタフェイスのテストを行ってください.

### 2.5.1. ループバックデバイスの動作点検

ループバックデバイスが正しく設定されているかどうか確かめるために, 'root' でログインしてこう入力してください.

    # ping localhost

こういうメッセージが見えるはずです.

    # ping localhost
    PING localhost.my.domain. (127.0.0.1): 56 data bytes
    64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.219 ms
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.287 ms
    64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.214 m
    [...]

このメッセージは Ctrl-C を押すまで延々流れ続けます.

### 2.5.2. イーサネットデバイスの動作点検

イーサネットデバイスが正しく設定されているかどうか確かめるために, こう入力してください.

    # ping curly

こういうメッセージが見えるはずです.

    # ping curly
    PING curly.my.domain. (192.168.1.1): 56 data bytes
    64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.219 ms
    64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.200 ms
    64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.187 ms
    [...]

この二つの例で大事なのは, ホスト名 (loopback と curly) が正しく IP アドレス (127.0.0.1 と 192.168.1.1) に関連づけられているのを確認することです. これで `/etc/hosts` ファイルの内容が正しいかどうか確認できます.

もし "curly" の IP アドレスが 192.168.1.1 ではない, あるいは "localhost" のアドレスが 127.0.0.1 ではない場合, Section 2.4 まで戻って `/etc/hosts` の内容を見直してください.

ping コマンドの出力でホスト名とアドレスは正しく対応づけられているが, 何か他のエラーが表示されるなら, インタフェイスの設定がうまく行っていないのでしょう. Chapter 2 まで戻って最初から確認し直してください.

チェックが全部終わったら, つぎの章に進んでください.

# Chapter 3. PPP のダイアルアウト接続の設定

ppp ドライバには, 基本的には "Interactive" と "Automatic" という二つの動作モードがあります.

Interactive モードでは,

- 手動で ISP に接続を確立し,

- ネットサーフィンを楽しんだり, ファイルやメールを転送したりのなにやかやの後で,

- 手動で ISP との接続を切断することになります.

Automatic モードでは, PPP プログラムは FreeBSD システムが内部的にどういう処理を行っているかじっと観察していて, 必要に応じて自動的に ISP と接続, 切断し, あたかもネットワークがインターネットに直接接続されているかのように振る舞います.

この章ではこの二つのモードのうち, `ppp` 環境を "Automatic" モードで動作させる設定に重点を置いて説明します.

## 3.1. オリジナルの PPP 設定ファイルをバックアップする

> Note: FreeBSD の最近のバージョンではサンプルファイルが `/usr/share/examples/ppp` にありますので この段階は不要です.

PPP 用のファイルに何か変更を加える前に, FreeBSD システムのインストール時につくられたデフォルトのファイルのコピーを取っておきましょう.

'root' でログインして, 次の手順を踏んでください.

'`/etc`' ディレクトリに移ります.

# cd /etc

'ppp' ディレクトリ内のオリジナルのファイルのバックアップをつくります.

# cp -R ppp ppp.ORIGINAL

これで '`/etc`' ディレクトリの下に 'ppp' と '`ppp.ORIGINAL`' という二つのサブディレクトリができました.

## 3.2. お手製の PPP 設定ファイルをつくる

FreeBSD のインストール中に, たくさんの設定ファイルのサンプルが `/usr/share/examples/ppp` ディレクトリの中につくられます. 少し時間を取ってファイルの内容を眺めてみてください. これらのサンプルは実際の稼働例に基づいたもので, PPP プログラムの機能や特長がよくあらわれています.

これらのサンプルファイルを参考にし, 必要に応じて実際の設定に生かすことを強くお勧めします.

`ppp` プログラムに関する詳細な情報がほしいなら, ppp の man を 読んでください.

    # man ppp

PPP ダイアラで使われている `chat` スクリプト言語に関する詳細な情報がほしいなら, chat の man を読んでください.

    # man chat

この章の残りの部分は PPP 関連のファイルのお勧め設定です.

### 3.2.1. '`/etc/ppp/ppp.conf`' ファイル

'`/etc/ppp/ppp.conf`' ファイルにはダイアルアウト PPP 接続に必要な設定と情報が含まれています. このファイルには複数の接続の設定が含まれていてもかまいません. FreeBSD ハンドブック (XXX URL? XXX) には, このファイルの内容と文法に関する詳しい記述があります.

この章では, ダイアルアウト接続を行うための必要最小限の設定についてのみ説明します.

下の /etc/ppp/ppp.conf ファイルは, ガイド中の LAN において, ダイアルアウトインターネットゲートウェイの機能を提供するのに十分なものです.

> Note: `ppp.conf`の文法の完全なものはppp(8)に記述されています. 特に, コロンで終了しない行 (例えば`default:`や`interactive:`), “!”で始まるコマンド (例えば`!include`) はラベルではないことに注意してください. また, コメントはインデントされなければいけないにも注意してください!

    ################################################################
    # PPP 設定ファイル ('/etc/ppp/ppp.conf')
    #
    # デフォルト設定; PPP が発動した時常に実行され, 全ての
    # システム設定に適用される.
    ################################################################
    default:
      set device /dev/cuaa0
      set speed 57600
      disable pred1
      deny pred1
      disable lqr
      deny lqr
      set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0M0 OK-AT-OK\\dATDT\\T TIMEOUT 40 CONNECT"
      set redial 3 10
    #
    #
    ################################################################
    #
    # interactive モード用の設定:
    #
    # `ppp -alias interactive` で発動せよ.
    #
    ################################################################
    interactive:
      set authname _リモートシステムでのユーザ ID_
      set authkey _リモートシステムでのパスワード_
      set phone 1-800-123-4567
      set timeout 300
      set openmode active
      accept chap
    #
    ################################################################
    #
    # demand-dial (automatic) モードではこの設定が使われる:
    #
    # 'ppp -auto -alias demand' で発動せよ.
    #
    ################################################################
    demand:
      set authname _リモートシステムでのユーザ ID_
      set authkey _リモートシステムでのパスワード_
      set phone 1-800-123-4567
      set timeout 300
      set openmode active
      accept chap
      set ifaddr 127.1.1.1/0 127.2.2.2/0 255.255.255.0
      add 0 0 127.2.2.2
    ################################################################

# /etc/ppp/ppp.conf はこれでおしまい このファイル - 実際のシステムから持ってきたものですが - には, 設定に関連する三つのセクションがあります.

#### 3.2.1.1. "default" セクション

'default:' セクションには, このファイルの他のどのセクションからも参照される値と設定がおさめられています. このセクションの内容が, 暗黙の内に他のセクションの設定に書き加えられるものと考えておけば良いでしょう.

ここは全てのダイアルアップセッションにおいて共通な 「グローバルなデフォルト設定」を置いておくのに丁度良い場所です. 例えばモデムの設定やダイアルの前準備等の, 通常接続先のシステムに応じて変更する必要のない設定を置くのに特に適しています.

サンプルとして挙げた '`/etc/ppp/ppp.conf`' ファイルの "default" セクションを一行づつ見ていきましょう.

    set device /dev/cuaa0

この文は PPP プログラムに一番目のシリアルポートを使用するよう通知しています. FreeBSD 下における '`/dev/cuaa0`' デバイスとは, DOS, Windows, Windows 95 なんかで言うところの "COM1:" と同じポートのことです.

モデムが COM2: につながれている場合は, '`/dev/cuaa1`' を指定してください. COM3: の場合は '`/dev/cuaa2`' です.

    set speed 57600

この文はシリアルポートとモデム間での送信 / 受信速度を設定しています. この例で使用されているのは 28.8k のモデムですが, 値を 57600 に設定しておけば, 最近のモデムに組み込みのデータ圧縮機能のおかげでスループットが上がり, シリアルリンク間でより高い転送速度を得ることができます.

モデムとの通信に問題がある場合, この設定を 38400, あるいは 19200 まで下げてみてください.

    disable pred1
    deny pred1

この二行は PPP プログラムの "CCP/Predictor type 1" 圧縮機能を無効にしています. 現在のバージョンの `ppp` は draft Internet standards に従ったデータ圧縮法をサポートしていますが, 残念なことに, 多くの ISP では, この機能をサポートしていない機器が使用されています. どちらにせよ多くのモデムは実行時に圧縮を行っていますから, FreeBSD 側でこの機能を無効にし, リモート側がこの機能を要求してきた場合に拒否しても, 大してパフォーマンスは落ちないでしょう.

    disable lqr
    deny lqr

この二行は Point-to-Point protocol (PPP) の完全な仕様の一部である "Line Quality Reporting" (回線品質報告) 機能を制御しています. (詳細は RFC-1989 を参照してください.)

一行目 "disable lqr" は回線の品質状態をリモートエンドのデバイスへ報告しないよう, PPP プログラムに命じています.

二行目, "deny lqr" はリモートエンドからの回線品質報告要求を拒否するよう, PPP プログラムに命じています.

最近のダイアルアップ用のモデムには大抵自動エラー検出 / 訂正機能がついていますし, LQR 報告機能は多くのベンダの製品で完全には実装されていませんから, 通常はこの二行をデフォルト設定に加えておいても大丈夫でしょう.

    set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0M0
    OK-AT-OK\\dATDT\\T TIMEOUT 40 CONNECT"

注意: (このドキュメントでは改行が入っているように見えるかもしれませんが, 実際にはこの文の途中で改行を入れないでください.)

この行は PPP プログラムにモデムのダイアル法と, 以下のようなダイアル時の基本的なガイドラインを指定しています.

- モデムが "BUSY" リザルトコードを返した場合, ダイアル試行は失敗したものとし,

- モデムが "NO CARRIER" リザルトコードを返した場合もダイアル試行は失敗したものとし,

- PPP プログラムは以下のイベント各々が 5 秒間のタイムアウト期間内に終了するものと想定する.

  - 初期状態では, PPP プログラムはモデムに対して何も想定していない (上の例の \"\" の部分で指定されている)

  - プログラムはモデムにモデム初期化文字列 "ATE1Q0M0" を送り, "OK" という返事が返ってくるのを待つ. レスポンスが帰ってこない場合, プログラムはモデムに attention コマンド ("AT") を送り, 再び "OK" という返事が返ってくるのを待つ.

  - プログラムは一秒間待ち時間を入れ ("\\d" の部分で指定されている), モデムにダイアリング文字列を送る. "ATDT" はトーンダイアリングを用いてダイアルを行う場合の標準モデムコマンドであり, 回線がトーンダイアルではない場合, "ATDT" を "ATDP" と置換する必要がある. "\\T" 文字列は実際の電話番号が入る場所である ("set dial 123-4567" で指定された値が自動的に挿入される).

- 最後に, (最大) 40 秒のタイムアウトの前に, PPP プログラムはモデムが "CONNECT" リザルトコードを返すと想定している.

この対話におけるいかなる時点での失敗もダイアリングの失敗と解釈され, PPP プログラムは接続に失敗します.

(PPP ダイアラで使用されているミニスクリプト言語の詳細については "chat" の man を参照してください.)

    set redial 3 10

この行はダイアル接続を直ちに確立することができなかった場合, リダイアルまで 10 秒の間隔を挟んで (必要な場合は 3 回まで) 再試行するよう, PPP プログラムに指定しています.

#### 3.2.1.2. "interactive" セクション

'interactive:' セクションには, 特定のリモートシステムと「対話的 (interactive)」に PPP セッションを確立するときに使用される値と設定がおさめられています. このセクションの設定には, "default" セクションの内容が自動的に追加されます.

このガイド中の "interactive" セクションの例では, 接続先のリモートシステムは, 何らかの風変わりなスクリプト言語を使用しないでもユーザ認証を行うことができるものと想定しています. つまり, このサンプルでは接続を確立するために CHAP プロトコルを使用します.

おおざっぱに言うと, もし Windows95 のダイアラの「接続」ボタンを押しただけで接続が確立できる環境なら, このサンプルはうまく働きます.

一方, もし Microsoft Windows95 のダイアルアップネットワーク機能を利用して ISP に接続するとき, Microsoft Plus! の「ダイアルアップスクリプトツール」に頼るか, Windows 95 の接続オプションで「ダイアル後にターミナルウィンドウを表示する」を選択しなければならない場合, ISP と接続を行うためには, PPP 設定ファイルのサンプルや ppp の man で "expect / response" スクリプトの例を参考にする必要があるでしょう. "set login" コマンドはそのような目的に使用できます.

まあ、それよりも PAP / CHAP 認証を提供している ISP を探した方が良いかもしれませんけどね!

この設定例は, 以下のプロパイダと接続するために使えることが分かっています.

- Various Shiva LanRovers

- The IBM Network (http://www.ibm.net/)

- AT&T WorldNet (http://att.com/worldnet/)

- Erol's (http://www.erols.com/)

サンプルとして挙げた '`/etc/ppp/ppp.conf`' ファイルの "interactive" セクションを一行づつ見ていきましょう.

    set authname _リモートシステムでのユーザ ID_

リモートシステムでログイン時に使用する名前を指定します.

    set authkey _リモートシステムでのパスワード_

リモートシステムで使用するパスワードです.

    set phone 1-800-123-4567

リモートシステムの電話番号です. PBX (Private Branch eXchange, 構内交換機) の内部にいる場合は, 9, を番号の前に加えることができます.

    set timeout 300

300 秒 (5 分) 間データが流れなかった場合, 自動的に回線を切断するよう PPP プログラムに命じています. この値は必要に応じて変更することができます.

    set openmode active

モデムが接続したらすぐに交渉を試みるよう PPP プログラムに命じています. 自動的にこれを行うリモートサイトもありますが, 自分からは行わないサイトもあります. このオプションを使えば, リンクのこちら側でイニシアチブを取って接続確立を試みることができます.

    accept chap

ユーザ認証に "Challenge-Handshake Authentication Protocol" を用いるよう PPP プログラムに命じています. ローカル側とリモート側でユーザ ID とパスワードとしてやり取りされる値は, 上の 'authname' と 'authkey' のエントリからとられます.

#### 3.2.1.3. "demand" セクション

特定のリモートサイトと「ダイアル・オン・デマンド」な PPP セッションを確立するときに使用される値と設定がおさめられています. このセクションの設定にも, "default" セクションの内容が自動的に追加されます.

最後の二行を除いて, このセクションの設定は "interactive" モードの設定で用いられているのと全く同じものです.

前の方でも述べているように, このガイド中にあらわれる "demand" セクションの例では, 接続先のリモートシステムは CHAP プロトコルを利用した接続確立法を理解できるものと想定しています.

サンプルとして挙げた '`/etc/ppp/ppp.conf`' ファイルの "demand" セクションを一行づつ見ていきましょう.

    set authname _リモートシステムでのユーザ ID_

リモートシステムでログイン時に使用する名前を指定します.

    set authkey _リモートシステムでのパスワード_

リモートシステムで使用するパスワードです.

    set phone 1-800-123-4567

リモートシステムの電話番号です.

    set timeout 300

300 秒 (5 分) 間データが流れなかった場合, 自動的に回線を切断するよう PPP プログラムに命じています. この値は必要に応じて変更することができます.

    set openmode active

モデムが接続したらすぐにネゴジェーションを試みるよう PPP プログラムに命じています. 自動的にこれを行うリモートサイトもありますが, 自分からは行わないサイトもあります. このオプションを使えば, リンクのこちら側でイニシアチブを取って接続確立を試みることができます.

    accept chap

ユーザ認証に "Challenge-Handshake Authentication Protocol" を用いるよう PPP プログラムに命じています. ローカル側とリモート側でユーザ ID とパスワードとしてやり取りされる値は, 上の 'authname' と 'authkey' のエントリからとられます.

    set ifaddr 127.1.1.1/0 127.2.2.2/0 255.255.255.0

PPP リンクのローカル側とリモート側の「偽の」 IP アドレスのペアを設定し, ローカル側の 'tun0' (トンネル) デバイス に 127.1.1.1 の, リモート側には 127.2.2.2 の IP アドレスを生成するように PPP プログラムに命じています. 両方のアドレスに '`/0`' をつけておけば, それらのアドレスの先頭から 0 ビットまでが重要な部分で, 残りの部分はリンクが確立されたときに, ローカル側とリモート側のシステムの交渉によって変更してもよい (というか, この場合は必ず変更されなければならない) と PPP プログラムに教えることができます. 255.255.255.0 という文字列は, それらの仮想デバイス間に適用されるサブネットマスク値を PPP プログラムに教えています.

注意. この例では ISP がリンクの両端に対して IP アドレスを動的に提供するものと想定しています! もし ISP からローカル側で使用すべき具体的な IP アドレスの割り当てを受けている場合, 127.1.1.1 の代わりにその IP アドレスを入力してください.

逆に, ISP がリモート側で使用する具体的な IP アドレスを指定している場合, 127.2.2.2 の代わりにその IP アドレスを入力してください.

これらの場合においても, 各アドレスの後ろの '`/0`' を残しておくのが良い考えでしょう. もしそれらのアドレスが実際に変更された場合でも, PPP プログラムはその変更に対応することができるからです.

    add 0 0 127.2.2.2

最後の行では, ISP システムの (偽の) IP アドレスを指す IP トラフィックのデフォルトルートを追加するよう, PPP プログラムに命じています.

注意: 前の行で 127.2.2.2 の代わりに ISP に指定されたアドレスを用いている場合, ここでも 127.2.2.2 の代わりにその番号を使用してください.

この「偽」の IP トラフィックルートを追加しておけば, アイドル中の PPP プログラムは以下の動作を自動的に行うことができます.

- ISP と「自動的に」 接続を確立し,

- リンクのローカル側とリモート側の IP アドレスを再設定し,

- ローカルのマシンと ISP 間でパケットを転送する.

"default" セクションの timeout の値に指定された秒間 TCP/IP のトラフィックが流れなかった場合, PPP プログラムは自動的にダイアルアップ接続を切断し, 始めの状態に戻ります.

### 3.2.2. '`/etc/ppp/ppp.linkup`' ファイル

PPP の設定を完全にするために必要なもう一つのファイルが '`/etc/ppp/ppp.linkup`' です. このファイルにはダイアルアップリンクが確立した後に, PPP プログラムが実行すべき命令が含まれています.

ダイアルアップ接続の場合, PPP プログラムはリモート側の偽の IP アドレス (前の章の例では 127.2.2.2) に対して生成されたデフォルトルートを削除し, (ダイアルアップ接続の確立中にわかる) 実際のリモートエンドの IP アドレスを指す新しいデフォルトルートをインストールする必要があります.

典型的な '`/etc/ppp/ppp.linkup`' ファイル:

    #########################################################################=

    # PPP Link Up File ('/etc/ppp/ppp.linkup')
    #
    #  このファイルは PPP がネットワーク接続を確立した後でチェックされます.
    #
    #  このファイルは以下の順序で検索されます.
    #
    #  1) まず, ローカル側に割り当てられた IP アドレスが検索され,
    #     関連するコマンドが実行されます.
    #
    #  2) IP アドレスが見つからない場合, PPP の起動時に指定されたラベル名が
    #     検索され, 関連するコマンドが実行されます.
    #
    #  3) いずれの場合にも当てはまらない場合, 'MYADDR:' ラベルの下の
    #     コマンドが実行されます.
    #
    #########################################################################=

    #
    # このセクションは /etc/ppp/ppp.conf 内の "demand" の設定で
    # 使用される.
    demand:
     delete ALL
     add 0 0 HISADDR
    #
    # /etc/ppp/ppp.conf 中の他の全ての設定ではこちらを用いる
    #
    MYADDR:
     add 0 0 HISADDR
    ########################################################################
    # End of /etc/ppp/ppp.linkup

'`/etc/ppp/ppp.conf`' で使用されているのと全く同じ "demand:" というタグのセクションがあることに注意して下さい. このセクションでは, "demand" の設定を用いてリンクが確立された場合,

1. PPP プログラムが生成した全ての IP ルーティング情報を削除し,

2. リモートエンドの実際のアドレスをデフォルトルートに追加する

よう, PPP プログラムに命じています.

'`/etc/ppp/ppp.conf`' 内で 'set ifaddr' や 'add 0 0' を使用している設定 (つまり, ダイアルオンデマンドの設定) においては, `/etc/ppp/ppp.linkup` 内で "delete ALL" や "add 0 0 HISADDR" コマンドを実行することが重要になります.

これこそがリンクのオンデマンド設定を制御するメカニズムだからです.

`/etc/ppp/ppp.linkup` 内で明示的に名前を指定されていない設定は, "MYADDR:" セクションにあるコマンドを (それが何であれ) 実行します. 非デマンドダイアルの設定 (例えばサンプルの "interactive:") はこれに該当します. このセクションでは, ISP (リモートエンド) の IP アドレスをデフォルトルートに追加しているだけです.

## 3.3. IP Aliasing

今までのステップは, ISP にダイアルアップで接続しようとしているどのような FreeBSD システムにとっても共通のものです.

もしこのガイドを読む目的が FreeBSD とインターネットをダイアルアウト ppp で接続することだけである場合, Chapter 5 まで進んでください.

PPP プログラムをオンデマンドモードで動かす非常に大きな利点の一つは, プログラムがローカルエリアネットワーク (LAN) 上の他のシステム間の IP トラフィックを自動的にルーティングできる点にあります. この機能は "IP Aliasing", "Network Address Translation", "Address Masquerading" または "Transparent Proxying" などの様々な名前で知られています.

しかしながら, どのような呼び名が使用されるにせよ, このモードは自動的に得られるものではありません. PPP プログラムをごく普通に起動した場合, プログラムは LAN のインタフェイスとダイアルアウト接続間でパケットを転送しません. 要するに, FreeBSD システムだけが ISP に接続され, 他のワークステーションはその接続を「共用」することができないのです.

プログラムが以下のコマンドのいずれかで起動されたとしましょう.

# ppp interactive (Interactive mode)

または

# ppp -auto demand (Dial-on-Demand mode)

すると, システムは FreeBSD マシンに対してのみ, インターネットに接続されたワークステーションとしての機能を提供するでしょう.

PPP プログラムを LAN の資源とインターネット間のゲートウェイとして起動するには, 代わりに以下のコマンドのいずれかを使用してください.

# ppp -alias interactive (Interactive mode)

または

# ppp -auto -alias demand (Dial-on-Demand mode)

また, ``alias enable yes'' というコマンドを ppp の設定ファイルにいれておく方法をとることもできます (詳細については man をご覧ください).

Chapter 4 に進んでも, このことは忘れないでおいてください.

# Chapter 4. Windows システムの設定

第 1 章で説明したように, ガイド中のネットワークはローカルエリアネットワーク (LAN) 間のゲートウェイ (ルータ) として FreeBSD システム ("Curly") を使用しています. LAN 自体は二系統の Windows ワークステーションで構成されていますが, LAN のノードが Curly をルータとして使用するには, 各ノードが適切に設定される必要があります. このセクションは Windows ワークステーションのダイアルアップネットワークの 設定法を説明するものではありません. そちらの説明をお捜しなら, http://www.aladdin.co.uk/techweb/ をお勧めします.

## 4.1. Windows 95 の設定

Windows 95 を LAN に接続された資源として設定するのは比較的簡単です. Windows 95 のネットワークの設定で ISP に対するデフォルトのゲートウェイとして FreeBSD システムを使用するよう変更するだけで済むからです. 以下の手順を踏んでください.

Windows 95 用の "hosts" ファイルをつくる

LAN 上の他の TCP/IP システムに接続するためには, Section 2.4 で FreeBSD システムにインストールした "hosts" ファイルとまったく同じものを作成してやる必要があります.

- 「スタート」ボタンを押し,「ファイル名を指定して実行」を選択して "notepad \WINDOWS\HOSTS" (引用符は除いてください) と入力し, 「OK」ボタンを押してください.

- エディタが開いたら, Section 2.4 の hosts ファイルに書いてあるアドレスとシステム名を入力してください.

- 編集が終わったらノートパッドを閉じてください (ファイルをセーブするのをお忘れ無く!).

Windows 95 の TCP/IP ネットワークの設定

- タスクバーの「スタート」ボタンを押し, 「設定」「コントロールパネル」を選択してください.

- 「ネットワーク」アイコンをダブルクリックして開いてください.

  ネットワークのすべての構成要素に対する設定が表示されます.

- 「ネットワークの設定」 タブを選択し, 現在のネットワーク構成の中から "TCP/IP->インタフェイスのタイプ" を選択してください ("インタフェイスのタイプ" の部分には, あなたのシステムのイーサネットの名称かタイプが入ります).

  TCP/IP がネットワーク構成に入っていない場合は, 次の作業に進む前に「追加」ボタンを押し, TCP/IP をインストールしてください.

  (ヒント: 「追加」「プロトコル」「Microsoft」「TCP/IP」「OK」)

- 「プロパティ」ボタンを押し, TCP コンポーネント関連の設定を表示させて下さい.

IP アドレス情報の設定

- 「IP アドレス」のタブをクリックし

- 「IP アドレスを指定」ラジオボタンをクリックしてください.

  (ガイド中の LAN では Windows 95 システムは "Larry" という名前です.)

- 「IP アドレス」のフィールドに "192.168.1.2" を入力してください.

- 「サブネット マスク」フィールドに 255.255.255.0 を入力してください.

ゲートウェイの情報の設定

- 「ゲートウェイ」タブをクリックしてください.

  ガイド中のネットワークでは, FreeBSD マシンがインターネットへのゲートウェイとして働き, イーサネットで結ばれた LAN と PPP ダイアルアップ接続間でパケットをルーティングします. FreeBSD のイーサネットインタフェイスの IP アドレス, 192.168.1.1 を「新しいゲートウェイ」フィールドに入力し, 「追加」ボタンを押してください. 他のゲートウェイが「インストール済のゲートウェイ」リスト内に定義されているなら, 削除しておいたほうが良いかもしれません.

DNS 情報の設定

このガイドでは, インターネットサービスプロバイダ (ISP) が利用可能なドメインネームサーバ (または「DNS サーバ」) のリストを提供しているものと想定しています. ローカル側の FreeBSD システム上で DNS サーバを走らせたいなら, 第 6 章「熱心な学習者への練習問題」に DNS を FreeBSD システム上でセットアップする時の tips がありますので参照してみてください.

- 「DNS 設定」のタブをクリックしてください

- 「DNS を使用する」のラジオボタンが選択されているかどうか確認してください.

  (このボタンが選択されていない場合, アクセスできるのは hosts ファイルに書かれたエントリだけなので, ネットサーフィンをしようとしてもうまく行きません!)

- 「ホスト名」フィールドに Windows 95マシンの名前を入力してください. このガイドでは "Larry" です.

- 「ドメイン名」フィールドにローカルネットワーク名を入力してください. このガイドでは "my.domain" です.

- 「DNS サーバの検索順」セクションに ISP の DNS サーバの IP アドレスを入力してください. 一つ入力するごとに "Add" ボタンを押して, この作業を ISP の提供するアドレスをすべて入力するまで続けてください.

その他の Windows 95 の TCP/IP オプション

このガイドでは, 「詳細設定」「WINS 設定」「バインド」のタブの下にある設定は重要ではありません.

Windows Internet Naming Service ("WINS") を使用したいなら, http://www.localnet.org/ へ行ってみましょう. WINS の設定, 特にインターネット透過でのファイル共有に関する詳細な情報が得られます.

後始末

- 「OK」ボタンを押して TCP/IP プロパティのウィンドウを閉じてください.

- 「OK」ボタンを押してネットワークコントロールパネルを閉じてください.

- 要求された場合, コンピュータをリブートしてください.

これでおしまいです!

## 4.2. Windows NT の設定

Windows NT を LAN の資源として設定するのも比較的簡単です. Windows NT を設定する手順は, ユーザインタフェイスの些細な差異を除けば Windows 95 と似ています.

ここでの手順は Windows NT 4.0 ワークステーション用のものですが, 原則的には NT 3.5x でも同じです. Windows NT 3.5x を使用している場合, 「Windows for Workgroups の設定」を参照するのも良いかもしれません. NT 3.5 と WfW はユーザインタフェイスが同じだからです.

次の手順を踏んでください.

Windows NT 用の "hosts" ファイルをつくる

LAN 上の他の TCP/IP システムに接続するためには, 3.4 章で FreeBSD システムにインストールした "hosts" ファイルとまったく同じものを作成してやる必要があります.

- 「スタート」ボタンを押し, 「ファイル名を指定して実行」を選択して "notepad \WINNT\SYSTEM32\DRIVERS\ETC\HOSTS" (引用符は除いてください) と入力し, 「OK」ボタンを押してください.

- エディタが開いたら, 3.4 章の hosts ファイルに書いてあるアドレスとシステム名を入力してください.

- 編集が終わったらノートパッドを閉じてください (ファイルをセーブするのをお忘れ無く!).

Windows NT の TCP/IP ネットワークの設定

- タスクバーの「スタート」ボタンを押し, 「設定」「コントロールパネル」を選択してください.

- 「ネットワーク」アイコンをダブルクリックして開いてください.

- "Identification" タブを選択し, "Computer Name" と "Workgroup" フィールドの内容を確かめてください. このガイドでは "Shemp" を名前に, "Stooges" をワークグループに使用します. 必要に応じて "Change" ボタンを押し, 内容を修正してください。

- "Protocols" タブを選択してください.

  インストール済のネットワークプロトコルが表示されます. プロトコルが幾つも表示されるかもしれませんが, このガイドで大事なのは 「TCP/IP プロトコル」だけです. 「TCP/IP プロトコル」が表示されていない場合, 「追加」ボタンを押してこのプロトコルを読み込んでください.

  (ヒント:「追加」「TCP/IP プロトコル」「OK」)

- 「TCP/IP プロトコル」を選択し, 「プロパティ」ボタンを押してください.

  TCP/IP の様々な設定を行うためのタブが表示されるはずです.

IP アドレスの設定

イーサネットインタフェイスが「アダプタ」ボックスの中に表示されているかどうか確かめてください. 表示されていない場合, アダプタの一覧表をスクロールさせて正しいインタフェイスを探してください.

- 「IP アドレスを指定する」ラジオボタンを押して, 三つのテキストボックスを有効にしてください.

  ガイド中の LAN では, Windows NT システムは "Shemp" という名前です

- 「IP アドレス」フィールドに "192.168.1.4" を入力してください.

- 「サブネットマスク」フィールドに 255.255.255.0 を入力してください.

ゲートウェイの情報の設定

ガイド中のネットワークでは, FreeBSD マシンがインターネットへのゲートウェイとして働き, イーサネットで結ばれた LAN と PPP ダイアルアップ接続間でパケットをルーティングします.

- FreeBSD のイーサネットインタフェイスの IP アドレス, 192.168.1.1 を「新しいゲートウェイ」フィールドに入力し, 「追加」ボタンを押してください.

  他のゲートウェイが「インストール済のゲートウェイ」リスト内に定義されているなら, 削除しておいたほうが良いかもしれません.

DNS の設定

繰り返しますが, このガイドでは, インターネットサービスプロバイダ (ISP) が利用可能なドメインネームサーバ (または「 DNS サーバ」) のリストを提供しているものと想定しています.

ローカル側の FreeBSD システム上で DNS サーバを走らせたいなら, 第 6 章「熱心な学習者への練習問題」に DNS を FreeBSD システム上でセットアップする時の tips がありますので参照してみてください.

- 「DNS」タブをクリックしてください.

- 「ホスト名」フィールドに Windows NT マシンの名前を入力してください. このガイドでは "Shemp" です.

- 「ドメイン名」フィールドにローカルネットワーク名を入力してください. このガイドでは "my.domain" です.

- 「DNS サーバの検索順」セクションに ISP の DNS サーバの IP アドレスを入力してください. 一つ入力するごとに "Add" ボタンを押して, この作業を ISP の提供するアドレスをすべて入力するまで続けてください.

その他の Windows NT の TCP/IP オプション

このガイドでは, "WINS Address" と "Routing" タブの下にある設定は使用しません.

Windows Internet Naming Service ("WINS") を使用したいなら, http://www.localnet.org/ へ行ってみましょう. WINS の設定, 特にインターネット透過でのファイル共有に関する詳細な情報が得られます.

後始末

- 「OK」ボタンを押して TCP/IP プロパティセクションを閉じてください.

- 「閉じる」ボタンを押してネットワークコントロールパネルを閉じてください.

- 要求された場合, コンピュータをリブートしてください.

これでおしまいです!

## 4.3. Windows for Workgroups の設定

Windows for Workgroups をネットワーククライアントとして作動させるには, Microsoft TCP/IP-32 ドライバディスクがワークステーションにインストールされている必要があります. TCP/IP ドライバは WfW の CD / ディスクには付属していません. コピーは ftp://ftp.microsoft.com:/peropsys/windows/public/tcpip/ から手に入ります.

TCP/IP ドライバを読み込んだら、次の手続きを踏んでください.

Windows for Workgroups 用の "hosts" ファイルをつくる

LAN 上の他の TCP/IP システムに接続するためには, 3.4 章で FreeBSD システムにインストールした "hosts" ファイルとまったく同じものを作成してやる必要があります.

- プログラムマネージャで "File" ボタンを押し, "Run" を選択して "notepad \WINDOWS\HOSTS" (引用符は除いてください) と入力し, "OK" ボタンを押してください.

- エディタが開いたら, 3.4 章の hosts ファイルに書いてあるアドレスとシステム名を入力してください.

- 編集が終わったらノートパッドを閉じてください (ファイルをセーブするのをお忘れ無く!).

Windows for Workgroups の TCP/IP ネットワークの設定

- プログラムマネージャのメインウィンドウで, "Network" グループのアイコンをダブルクリックして開いてください.

- "Network Setup" アイコンをダブルクリックしてください.

- "Network Drivers Box" で "Microsoft TCP/IP-32" のエントリをダブルクリックしてください.

Windows for Workgroups の IP アドレスの設定

正しいイーサネットインタフェイスが "Adapter" リストで選択されているかどうか確認してください. 選択されていない場合, インタフェイスが表示されるまでリストをスクロールさせ, クリックして選択してください.

- "Enable Automatic DHCP Configuration" チェックボックスが選択されていないことを確かめてください. 選択されている場合, クリックして "X" 印を取り除いてください.

- ガイド中の LAN では, Windows for Workgroups システムは "Moe" という名前です. "IP Address" フィールドには "192.168.1.3" を入力してください.

- "Subnet Mask" フィールドに 255.255.255.0 を入力してください.

ゲートウェイの情報の設定

ガイド中のネットワークでは, FreeBSD マシンがインターネットへのゲートウェイとして働き, イーサネットで結ばれた LAN と PPP ダイアルアップ接続間でパケットをルーティングします.

- FreeBSD システムの IP アドレス, 192.168.1.1 を "Default Gateway" フィールドに入力してください.

DNS の設定

繰り返しますが, このガイドでは, インターネットサービスプロバイダ (ISP) が利用可能なドメインネームサーバ (または「DNS サーバ」) のリストを提供しているものと想定しています. ローカル側の FreeBSD システム上で DNS サーバを走らせたいなら, 第 6 章「インターネット初心者への課題」に DNS を FreeBSD システム上でセットアップする時の tips がありますので参照してみてください.

- "DNS" ボタンを押してください.

- "Host Name" フィールドに Windows for Workgroups マシンの名前を入力してください. このガイドでは "Moe" です.

- "Domain" フィールドにローカルネットワーク名を入力してください. このガイドでは "my.domain" です.

- "Domain Name Service (DNS) Search Order" セクションに ISP の DNS サーバの IP アドレスを入力してください. 一つ入力するごとに "Add" ボタンを押して, この作業を ISP の提供するアドレスをすべて入力するまで続けてください.

後始末

- "OK" ボタンを押して TCP/IP 設定ウィンドウを閉じてください.

- "OK" ボタンを押してネットワークセットアップウィンドウを閉じてください.

- 要求された場合, コンピュータを再起動してください.

これでおしまいです!

# Chapter 5. ネットワークのテスト

上記の作業を適切に完了したなら, PPP をインターネットへのゲートウェイとして機能させることができるはずです.

## 5.1. ダイアルアップリンクのテスト

最初に, モデムと ISP 間で接続を確立できるかどうかテストします.

## 5.2. イーサネット LAN のテスト

*** TBD ***

# Chapter 6. 熱心な学習者への練習問題

## 6.1. ミニ DNS システムの作成

確かにドメインネームサービス (DNS) ヒエラルキーの管理は黒魔術にも似た作業ではありますが, FreeBSD システムを ISP へのゲートウェイとして作動させながら, 同時に小さな DNS サーバとしても働かせることも可能なのです.

FreeBSD システムのインストール時に `/etc/namedb` ディレクトリに作成されるファイルを元にすれば, ガイド中のネットワークに権威を持ちながら, インターネットの DNS アーキテクチャに対する正面玄関としての役割も果たすネームサーバをつくることができるのです.

最小限の DNS の設定を行うには, 以下の三つのファイルが必要になります.

    /etc/namedb/named.boot
    /etc/namedb/named.root
    /etc/namedb/mydomain.db

`/etc/namedb/named.root` ファイルは FreeBSD のベースインストールの一部として自動的にインストールされますが, 他の二つのファイルは手で書いてやる必要があります.

### 6.1.1. `/etc/namedb/named.boot` ファイル

`/etc/namedb/named.boot` ファイルは DNS サーバのスタートアップ時の設定をコントロールします. 基本的には, ネームサーバに以下の情報を伝えます.

1. どこに設定ファイルが存在し,

2. どの「ドメイン名」を管理するのか. そして

3. どこへ行けば他の DNS サーバを見つけられるのか.

'ee' エディタを使って, 以下の内容の `/etc/namedb/named.boot` ファイルをつくってください.

    ; boot file for mini-name server

    directory   /etc/namedb

    ; type    domain        source host/file        backup file

    cache     .         named.root
    primary   my.domain.        mydomain.db

セミコロンで始まる行はコメントです. このファイル内で重要な行は

- `directory /etc/namedb`

  ネームサーバに '`/etc/namedb/named.boot`' の残りのセクションで参照される設定ファイルの存在するディレクトリを伝えています.

- cache . named.root

  ネームサーバにインターネットの "Top-Level" の DNS サーバの一覧が '`named.root`' ファイルに書いてあることを伝えています. (このファイルはベースインストールの一部に含まれているので, このドキュメントでは内容については説明しません.)

  ネームサーバに対して, "my.domain" という DNS ドメインを 「管理する (authoritative)」こと, "my.domain" (このローカルネットワーク) 上のシステムのホスト名と IP アドレスのリストは '`mydomain.db`' ファイル内にあることを伝えています.

`/etc/namedb/named.boot` ファイルをつくってセーブしたら, つぎの章に進んで `/etc/namedb/mydomain.db` ファイルをつくってください.

### 6.1.2. `/etc/namedb/mydomain.db` ファイル

`/etc/namedb/mydomain.db` ファイルはローカルエリアネットワーク (LAN) のすべてのシステムのホスト名と IP アドレスを一覧にしたものです.

このファイルで使用されている文の詳細な説明については, named の man を参照してください.

このガイド中のネットワークで DNS サーバの設定を最低限行う `/etc/namedb/mydomain.db` ファイルは, 次のような内容になるでしょう.

    @  IN SOA  my.domain. root.my.domain.  (
                    961230  ; 通し番号
                    3600    ; 問い合わせ
                    300 ; 再試行
                    3600000 ; 無効化
                    3600 )  ; 有効期間
        IN NS   curly.my.domain.

    curly.my.domain.    IN A    192.168.1.1 # FreeBSD マシン
    larry.my.domain.    IN A    192.168.1.2 # Win'95 マシン
    moe.my.domain.      IN A    192.168.1.3 # WfW マシン
    shemp.my.domain.    IN A    192.168.1.4 # Windows NT マシン

    $ORIGIN 1.168.192.IN-ADDR.ARPA
            IN NS   curly.my.domain.
    1       IN PTR  curly.my.domain.
    2       IN PTR  larry.my.domain.
    3       IN PTR  moe.my.domain.
    4       IN PTR  shemp.my.domain.

    $ORIGIN 0.0.127.IN-ADDR.ARPA
            IN NS   curly.my.domain.
    1       IN PTR  localhost.my.domain.

簡単に説明すると, このファイルでは, ローカルの DNS サーバは以下のようであると宣言しています.

- 'my.domain' というドメインに対する管理情報の始点 (Start of Authority, "SOA") であり,

- 'my.domain' に対するネームサーバ ("NS") であり,

- '192.168.1.' と '127.0.0.' で始まる全ての IP アドレスに対する逆引き情報に責任があること ("$ORIGIN ...")

このファイルにワークステーションのエントリを加えるとき, 一つのシステムにつき二つの行を加える必要があります. 一つは頭のセクション, ホスト名がインターネットアドレス ("IN A") に対応づけられる部分で, もう一つは `$ORIGIN 1.168.192.IN-ADDR.ARPA` セクションの, アドレスをホスト名に逆付けする部分です.

### 6.1.3. DNS サーバの起動

デフォルトではシステムのブート時に DNS サーバ ('`/usr/sbin/named`') は起動しません. この振る舞いは, 以下のように '`/etc/rc.conf`' を一行変えるだけで変更することができます.

'ee' エディタを使って `/etc/rc.conf` を読み込み, このようなセクションに当たるまで 40 行ほど下ってください.

    ---
    named_enable="NO"                       # Run named, the DNS server (or NO).
    named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
    ---

このセクションを次のように変えましょう.

    ---
    named_enable="YES"                      # Run named, the DNS server (or NO).
    named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
    ---

ファイルをセーブしてマシンを再起動してください.

または, 次のコマンドを打ち込んでネームサーバデーモンを起動してください.

    # named -b /etc/namedb/named.boot

`/etc/namedb` 以下のファイルを変更した場合はいつも, 変更に対応させるために, ネームサーバのプロセスにキックスタートをかけてやる必要があります. これは以下のシステムコマンドで実行できます.

    # kill -HUP `cat /var/run/named.pid`

## 6.2. PPP フィルタとの戯れ

PPP プログラムには, PPP 経由のトラフィックに対して, 選択的にフィルタをかける能力があります. これが正式のファイアウォールほどセキュアーだとはとても言えませんが, リンクの使用についてある種のアクセス制御を提供することはできるのです.

(FreeBSD システムをよりセキュアーにする方法を知りたい方は 'man ipfw' してください)

PPP 下で使用できる様々なフィルタとその制御法についての完全な説明は PPP の man にあります.

PPP プログラムに適用できる制御法には四つのクラスがあります.

- afilter - アクセスカウンタ (または "Keep Alive") のフィルタ

  設定ファイル中の `set timeout=` 文に無視されるイベントの種類を制御します.

- dial - ダイアリングフィルタ

  デマンドダイアルモードの PPP に無視されるイベントの種類を制御します.

- in - インプットフィルタ

  システムに入ってくるパケットを, 破棄すべきものと通過してよいものに仕分けるやり方を制御します.

- out - アウトプットフィルタ

  システムから出てゆくパケットを, 破棄すべきものと通過してよいものに仕分けるやり方を制御します.

以下は実際に稼働しているオペレーティングシステムから一部拝借して来たものです. このシステムは「通常の」インターネットオペレーションに十分な素地を提供しつつ, PPP がすべてのデータをダイアルアップ接続越しにやり取りすることのないようにしています. 各ルールセットのロジックを解説する簡単なコメントをつけてあります.

    #
    # KeepAlive フィルタ
    # ICMP,DNS と RIP パケットが流れても「通信中」とはみなさない
    #
     set filter alive 0 deny icmp
     set filter alive 1 deny udp src eq 53
     set filter alive 2 deny udp dst eq 53
     set filter alive 3 deny udp src eq 520
     set filter alive 4 deny udp dst eq 520
     set filter alive 5 permit 0/0 0/0
    #
    # ダイアルフィルタ
    #  注意:  この設定では ICMP もダイアルアウトのトリガになる
    #
     set filter dial 0 permit 0/0 0/0
    #
    # ident パケットの通過を許可する
    #
     set filter in 0 permit tcp dst eq 113
     set filter out 0 permit tcp src eq 113
    #
    # インターネットへの telnet 接続を許可する
    #
     set filter in 1 permit tcp src eq 23 estab
     set filter out 1 permit tcp dst eq 23
    #
    # インターネットへの ftp アクセスを許可する
    #
     set filter in 2 permit tcp src eq 21 estab
     set filter out 2 permit tcp dst eq 21
     set filter in 3 permit tcp src eq 20 dst gt 1023
     set filter out 3 permit tcp dst eq 20
    #
    # DNS への問い合わせを許可する
    #
     set filter in 4 permit udp src eq 53
     set filter out 4 permit udp dst eq 53
    #
    # DNS ゾーン転送を許可する
    #
     set filter in 5 permit tcp src eq 53
     set filter out 5 permit tcp dst eq 53
    #
    # ローカルネットワークから / へのアクセスを許可する
    #
     set filter in 6 permit 0/0 192.168.1.0/24
     set filter out 6 permit 192.168.1.0/24 0/0
     set ifilter 6 permit 0/0 192.168.1.0/24
     set ofilter 6 permit 192.168.1.0/24 0/0
    #
    # ping と traceroute への返答を許可する
    #
     set filter in 7 permit icmp
     set filter out 7 permit icmp
     set filter in 8 permit udp dst gt 33433
     set filter out 9 permit udp dst gt 33433
    #
    # cvsup を許可する
    #
     set filter in 9 permit tcp src eq 5998
     set filter out 9 permit tcp dst eq 5998
     set filter in 10 permit tcp src eq 5999
     set filter out 10 permit tcp dst eq 5999
    #
    # 時間の同期のために NTP を許可する
    #
     set filter in 11 permit tcp src eq 123 dst eq 123
     set filter out 11 permit tcp src eq 123 dst eq 123
     set filter in 12 permit udp src eq 123 dst eq 123
     set filter out 12 permit udp src eq 123 dst eq 123
    #
    # SMTP もいいかも!
    #
     set filter in 13 permit tcp src eq 25
     set filter out 13 permit tcp dst eq 25
    #
    #
    # `whois` を多用するので, これも通す
    #
     set filter in 14 permit tcp src eq 43
     set filter out 14 permit tcp dst eq 43
     set filter in 15 permit udp src eq 43
     set filter out 15 permit udp dst eq 43
    #
    # 上記のどのルールにもマッチしない場合, パケットはブロックされる.
    #-------

フィルタクラス一つにつき, 20 個までのフィルタリングルールを適用することができます. 各クラスのルールは 0 から 20 までの連続した数字である必要がありますが, あるフィルタクラスに対するルールは, ルールセット '0' が定義されるまでは有効になりません!

PPP の設定でフィルタリングルールを使用しない場合, ISP への接続中はすべてのトラフィックがシステムに出入りすることになります.

フィルタリングルールを使用したいなら, 上記の設定を `/etc/ppp/ppp.conf` ファイルの "default:", "demand:", または "interactive:" セクションのどれか (あるいはすべて - 選ぶのはあなたです) に追加してください.