(Original: Mon Sep 19 02:06:18 JST 2005)
Last modified: Sun Oct 06 11:11:25 JST 2019

ローカルネットワークの構築(1997.12 - 2000.11)

家庭内 LAN 構築の弧軍奮闘記

スタンドアロンで動かし始めた PC も, 2 台目の導入に伴いネットワーク化を 進めています. 世間でも自宅の PC をインターネット接続する人は多く, それ に関する情報もあちこちで得られます. ところが, 自宅で閉じたネットワーク を組もうとする人は少ないらしく, 情報も限られています. そんな中, 自分自 身の覚え書きの意味も込めて, 作業記録をまとめる事にしました.
と, 書き始めたのが 97 年の 4 月. まだ書き切らない内に OS のバージョン アップを繰り返し, ここに書き留めた設定方法等も古くなってしまいました. 今回加筆 & 大改定を行います.(1997 年 12 月)

目次

  1. ネットワーク図
  2. スタンドアロン時のネットワーク設定
  3. WWW サーバ
  4. 2 台目接続時のネットワーク設定
  5. NFS 設定
  6. Proxy サーバ
  7. ネームサーバ
  8. DHCP サーバ
  9. Samba サーバ

ネットワーク図

これが我が家のネットワーク構成です. と書くとカッコいいんですが, 実際に 稼働しているのは左の 2 台. X68000 は CPU アクセラレータ(約 4 万円也)を 買わないと始まらないし, Libretto に至ってはまだ本体が無い ^^;

このネットの特徴は, 何と言ってもインターネットに接続していないローカル で閉じたネットワークだと言う点です. (将来的にはインターネットに接続し たいと思っています. このためインターネット接続に移行する時もすんなり行 くような構成を目指します.)

スタンドアロン時のネットワーク設定

FreeBSD もバージョンが上がる度に設定が簡単になって行きます. ネットワー ク設定もその恩恵を受けています. 以前は `/etc/sysconfig' での設定でした が, (FreeBSD 2.2.1 以前はこちら)
2.2.2 以降は `/etc/rc.conf' での設定です. インストール後にチョコチョコ とファイルを編集して, 以下 のようにしまし た. 尚, インストール時に WWW サーバ(Apache)と, Samba サーバのインストー ルも行いました.

ちなみに /etc/hosts, /etc/host.conf はこんなです.

WWW サーバ

以前は WWW サーバとして CERNを使っ ていましたが, 今はデフォルトでインストールされる Apache です.

/usr/local/etc/apache ディレクトリ以下に設定ファイルが置かれますが, 差 し当たりデフォルトの設定で OK です. 起動スクリプトも /usr/local/etc/rc.d/apache.sh が自動的に作られます.

簡単すぎて少し寂しい...

2 台目接続時のネットワーク設定

(This is old version)
2 台目の導入に伴い, ネットワークカードを購入. まずは kernel にこのカー ドを認識させます. 下準備として NIC(Network Interface Card)のポートアド レスと割り込み番号を調べておきます. 私の場合 Port は 0x280, IRQ は 9 でした.

ここでカーネルとして GENERIC カーネルをそのまま使っている場合と, カス タマイズのために再構築したものを使っている場合とで作業が少し異なります. 後者の場合はコンフィギュレーションファイルに以下の行を加えて再コンパイ ルします.

device ed0 at isa? port 0x280 net irq 9 iomem 0xd8000 vector edintr
簡単に説明をしておくと, device のエントリは自分の NIC に合ったドライバ を選びます. 私の場合 NE2000 互換ボードなので `ed0' です. `port', `irq' は控えておいた値を入れます.

GENERIC カーネルを使う場合はユーザインタフェイスを使ってドライバ設定を します. 具体的には, まずシステムを立ち上げ, `Boot:' 表示の時につかさず `-c' と打ち込みます.

Boot: -c
こうする事で kernel configulation mode に入り, `config>' と言うプロ ンプト表示で止まります. ここで `visual' と打ち込みます.
config> visual
これでビジュアルモードに入り, メニュー形式の表示が現れます. ここで `Inactive Drivers' フィールドの `Network :' 項目の中で, 自分の NIC に 対応したデバイスを選択し `Active' にします. 私の場合 NE2000 互換ボード なので, `ed0' を選びました. 次に `Active Drivers' に加わった `ed0' を 選びます. すると Port や IRQ 設定に進みます. ここで, 下調べしておいた 設定に合わせて抜けます([Q] Save and Exit).
Port address : 0x280          Memory address : 0xd8000
IRQ number   : 9
Flags        : 0x0
これで OK です. 立ち上げメッセージに
ed0 at 0x280-0x29f irq 9 on isa
ed0: address 00:60:52:03:6e:6a, type NE2000 (16 bit) 
と言った表示が出れば無事認識されています. (立ち上げ時の画面で見逃して しまった場合は `/sbin/dmesg' コマンドで表示できます.)

ボードが認識されれば後は簡単. `/etc/sysconfig' の `network_interfaces' の行に, 自分のデバイス `ed0' を加え以下のようにしました.

network_interfaces="ed0 lo0"
ifconfig_ed0="inet 10.10.10.10 netmask 0xffffff00"
ifconfig_lo0="inet localhost"

もう 1 台のマシンも同じようにネットワーク設定して, 最後にお互いを認識 させるために `/etc/hosts' に相手のアドレスエントリを登録して終了. ちな みに私の場合こんな風です.

# $Id: hosts,v 1.5 1995/04/09 09:54:39 rgrimes Exp $
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/host.conf for the resolution order.
#
#
#127.0.0.1               localhost localhost.my.domain
127.0.0.1               localhost angel.dream.or.jp angel
# Imaginary network.
#10.0.0.2               myname.my.domain myname
#10.0.0.3               myfriend.my.domain myfriend
10.10.10.10             heaven.dream.or.jp heaven
10.10.10.11             angel.dream.or.jp angel

動作確認は `/sbin/ping' コマンドで十分です. これで FTP や Telnet も実 行可能になりました. Remote Login もできるんですがこの場合ちょっと注意 が必要です. サーバ側の各ユーザのホームディレクトリに `~/.rhosts' ファ イルを置く際に, ファイルのパーミションを `600' にしておかないとダメで す. これで片方のマシンから他方のマシンに自在に入れるようになりました. もうたった 1 台のモニタを, マシンを替えるたび毎回繋ぎ替えると言う苦労 から開放されます \(^o^)/

NFS 設定

(This is old version)
サーバ側(heaven), クライアント側(angel)にそれぞれ簡単な設定をしました. まず, サーバ側では, `/etc/sysconfig' ファイル中の `nfs_server' の項を 有効にし,

# Set to YES if this machine will be an NFS server
nfs_server=YES
`/etc/exports' ファイルにエクスポートするファイルを書きます.
/usr    angel
/usr1   angel
後はシステムをリブートするか, スーパーユーザになって `/sbin/mountd' コ マンドを実行するだけ. これでサーバ側は OK.

クライアント側は `/etc/sysconfig' ファイル中の `nfs_cli' の項を有効にします.

# Set to YES if this machine will be an NFS client
nfs_client=YES
後はシステムをリブートするか, スーパーユーザになって `/sbin/nfsiod -n 4' を実行すれば準備 OK.

実際にファイルシステムとして使うにはマウントしなくてはなりません. スー パーユーザになって以下のコマンドを実行します. (`mount -t nfs' と `mount_nfs' は等価です.) あ, マウントポイントとなるディレクトリ(下の例 では `/usr0' と `/usr1') を作っておくのを忘れずに...

angel# /sbin/mount -t nfs heaven:/usr /usr0
angel# /sbin/mount_nfs heaven:/usr1 /usr1

毎回こう入力するのが面倒な場合, `/etc/fstab' ファイルに以下の行を追加 しておけばシステム起動時に自動的にマウントされます. 但し, サーバ側のマ シンが立ち上がっていないと困った事に...

heaven:/usr             /usr0           nfs     rw 1 1
heaven:/usr1            /usr1           nfs     rw 1 1
ちなみに私の場合は, スタンドアロン立ち上げの場合でも困らない様に半自動 方式を採用してます. 方法は `/etc/fstab' ファイルに `noauto' 付きで登録 し,
heaven:/usr             /usr0           nfs     rw,noauto 1 1
heaven:/usr1            /usr1           nfs     rw,noauto 1 1
システム立ち上げ後にコマンドラインから, 以下のように打ち込んでます.
angel# /sbin/mount /usr0
angel# /sbin/mount /usr1
前述の全て書く方法よりは楽でしょう? (alias 指定すれば同じって話もある けど... ^^;)

これで NFS 設定はおしまい. NFS が動き始めると 2 台のマシン間でディレク トリやファイルが共有できるので, ファイルの参照やコピーが更に便利に...

Proxy サーバ

Proxy サーバとしては, WWW サーバと同様に CERN httpd を用います. このた め新たなインストールは不要です. 設定はサンプル `/usr/local/www/config/proxy.conf' を参考にします. こちらはこんな感じ にして `/usr/local/www/config/proxy.conf' として登録しました.

ServerRoot      /usr/local/www
Port            8080
UserId          nobody
GroupId         nogroup
AccessLog       /usr/local/www/log/proxy-log
ErrorLog        /usr/local/www/log/proxy-errors
LogFormat       Common
LogTime         LocalTime
Protection      PROXY-PROT {
                ServerId        YourProxyName
                Mask            @(dream.or.jp, 10.10.10.*)
}
Protect         *  PROXY-PROT
Pass            http:*
Pass            ftp:*
Pass            gopher:*
Pass            wais:*

実はこの Proxy 設定で悩みました. と言うのは, 1 つのデーモンで WWW サー バと Proxy サーバの 2 つの機能を持たせられるのか, それとも機能毎に別の デーモンを立ち上げる必要があるのかが良く分からなかったのです. コンフィ グレーションファイルにも `all.conf' と言うのがあって, 1 つにまとめられ そうな気もしますし, ダメなような... man を読んでも雑誌の記事を当たって も良く分かりません. が, 上述のコンフィグレーションファイルで, Port 番 号が異なっていることから, 別々の立ち上げだ(1 つにはできん)と判断しまし た.

...と言う事で結局 rc.local に以下を加えました.

if [ -f /usr/local/libexec/httpd ]; then
  echo -n ' CERN httpd'
  /usr/local/libexec/httpd -r /usr/local/www/config/httpd.conf
  echo -n ' Proxy Server'
  /usr/local/libexec/httpd -r /usr/local/www/config/proxy.conf
fi

ネームサーバ

FreeBSD ではデフォルトで BIND(Berkeley Internet Name Domain) が組み込 まれています. ネームサーバとして使うには設定ファイルを用意し起動するだ けで OK です.

設定ファイルは通常 /etc/nameds ディレクトリに置きます. 今回用意したファ イルは,

  • 起動ファイルとなる named.boot
  • IP アドレス検索用データファイル dream.zone (ゾーン名は dream としました)
  • 逆引きファイル dream.rev
  • ループバック用逆引きファイル localhost.rev
  • の 4 つです. 外部のネットに接続する場合は, 上流のネームサーバを参照す るためのファイル named.rootが必要です. これらのファイルは man named 等 を参考に自分の環境に合わせて記述しなくてはなりません. 但し, localhost.rev だけは /etc/named/make-localhost スクリプトで自動生成で きます.

    DHCP サーバ

    DHCP サーバによりネットワークアドレスを動的に割り当てる事ができます. これはいろいろなネットワークに接続するモバイルコンピュータ等にとって非 常に便利な機能です.

    package として用意されている wide-dhcp をインストールし, dhcpdb.pool と dhcpdb.relay の 2 つの設定ファ イルを用意します. 後者の dhcpdb.relay は空ファイルで OK です. その後 /usr/local/etc/rc.d/wide-dhcps.sh.sample を参考に起動スクリプト wide-dhcps.sh を置けば OK です.

    Samba サーバ

    前述の通り, システムのインストール時に Samba サーバもインストールでき, 更に設定ファイルも自動生成してくれます.

    samba の 1.9.15 までは設定ファイルとして smb.conf, lmhosts の 2 つのファイルを 用意する必要がありましたが, 1.9.16 から lmhosts は特には必要ない様です. 但し, Windows 95 から正常に認識させるためには, smb.conf

    interfaces = 10.10.10.10/255.255.255.0
    workgroup = DREAM
    
    の 2 行を付け加えました. 後は起動スクリプト samba.sh を用意し, /usr/local/etc/rc.d ディレクトリに置くだけです.

    さて. Windows 95 側の設定ですが... (記述中)