(Original: Mon Dec 22 02:01:11 1997)
Last modified: Sun Oct 06 11:12:45 JST 2019

ローカルネットワークの構築(旧バージョン)

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

冒頭で触れたように最初はスタンドアロン設定. そのためインストール時の作 業として `/etc/sysconfig' の hostname の行にホスト名を(適当なドメイン 名をくっつけて)書きました.

# set to the name of your host - this is pretty important!
hostname=heaven.dream.or.jp

後はこれに合わせて /etc/hosts, /etc/host.conf に追加修正をしただけです.

# $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
# $Id: host.conf,v 1.2 1993/11/07 01:02:57 wollman Exp $
# Default is to use the nameserver first
#bind
# If that doesn't work, then try the /etc/hosts file
hosts
# If you have YP/NIS configured, uncomment the next line
# nis

WWW サーバ

スタンドアロンの時代から WWW サーバを立ち上げていました. 自分のホーム ページを見るだけなら別に必要無いんですが, CGI スクリプトを試してみたく て...

WWW サーバは, NCSA, CERN, Apache 等があるようですが, 私は package で用 意されている CERN httpd (3.0) を使いました. (実は Apache も package 中 にあったのですが, 当初これが WWW サーバだとは知らなかったので, 必然的 に CERN になりました :-)

CERN は WWW サーバだけでなく, Proxy サーバ, Cache サーバとしても使える ので, 将来的にインターネットに接続するのであれば良い選択だと言えそうで す. (ローカルネットだけで終るのであれば負荷が思いため不適?)

インストールは pkg_add cern_httpd-3.0.tar で終了. 後はコンフィギュレー ションファイルを書くだけです. 実際には WWW サーバのサンプル `/usr/local/www/config/httpd.conf' を参考に作成します. 私は以下のよう な設定を行い `/usr/local/www/config/httpd.conf' として登録しました.

ServerRoot      /usr/local/www
Port            80
UserId          nobody
GroupId         nogroup
AccessLog       /usr/local/www/log/httpd-log
ErrorLog        /usr/local/www/log/httpd-errors
LogFormat       Common
LogTime         LocalTime
UserDir         public_html
Exec            /cgi-bin/*      /usr/local/www/cgi-bin/*
Exec            /~uranov/cgi-bin/*      /usr/home/uranov/public_html/cgi-bin/*
Pass            /*      /usr/local/www/htdocs/*

後は動作チェックをして, 問題無ければ rc.local に以下を加えて終了です.

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

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

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 abd 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 設定

サーバ側(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

ネームサーバ

DHCP サーバ

Samba サーバ

A LanManager(R)-compatible server suite for Unix

/etc/hosts の変更.

/var/spool/lpd/smb のパーミション変更.