訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter29.Network services

Table of Contents

29.1. The Network File System (NFS)
29.1.1. NFS setup example
29.1.2. Setting up NFS automounting for /net with amd(8)
29.2. The Network Time Protocol (NTP)

29.1.The Network File System (NFS)

これでネットワークは動作し、 Network File System (ネットワークファイルシステム、NFS) を使って、 ネットワーク越えのファイルおよびディレクトリーの共有が可能です。 ファイル共有の観点から、ファイルおよびディレクトリーのアクセスを与える計算機を server(サーバー) と呼び、これらの ファイルおよびディレクトリーを利用する計算機を client(クライアント) と呼びます。 計算機は、同時にクライアントにもサーバーにもなれます。

  • カーネルは クライアントおよび サーバーの、適切なオプションつきでコンパイルされなければなりません (オプションは カーネル設定ファイルに簡単に見つかります。 NFS に関係するカーネルオプションの更なる情報については Section24.1, “A walk through the kernel configuration” を御覧ください。(訳註:多分ここに閉じカッコ-原文では欠落)

  • サーバーは /etc/rc.conf で、 rpcbind mountd lockd statd および nfs_server デーモンを enable にする必要があります :

    rpcbind=yes
    mountd=yes
    nfs_server=yes
    lockd=yes
    statd=yes
  • クライアントは、 /etc/rc.conf で、 rpcbind lockd statd および nfs_client デーモンを enable にする必要があります:

    rpcbind=yes
    nfs_client=yes
    lockd=yes
    statd=yes
  • サーバーは export ディレクトリーを /etc/exports 中にリストし、それから、 kill -HUP `cat /var/run/mountd.pid (hup mountd も多分動きます!) コマンドを run する必要があります。

クライアントホストは NFS を通してリモートホストにアクセスでき、もし:

  • サーバーホストはこのディレクトリーをクライアントに exports します。 NFS サーバーが export するファイルシステムのリストは showmount -e コマンドでチェックできます。 showmount(8) を見てください:

    # showmount -e 192.168.1.2
    Exports list on 192.168.1.2:
    /home                              host1 host2 host3
  • クライアントホストはリモートディレクトリーをこのコマンドでマウントし mount 192.168.1.2:/home /home

mount コマンドは リモートでぃゃレクトリー向けの豊富なオプションかあって、 (すくなくとも話す分には)あまり直感的にわかるものではありません。

29.1.1.NFS setup example

ここで書かれているシナリオは次のとおり: 5台のクライアント機 (cli1, ..., cli5) がサーバー (buzz.toys.org) 上のいくつかのディレクトリーを共有。 ディレクトリーのいくつかはサーバーに exported され、 特定のクライアントに予約され、他のディレクトリーは全クライアント機共用。 全クライアントはサーバーから boot しディレクトリーをマウントしなければならない。

サーバーから exported されたディレクトリーは:

/export/cli?/root

5つのクライアント機に 5つの root ディレクトリー。 各クライアントは自分の root ディレクトリーを持ちます。

/export/cli?/swap

5つの swap machines に 5つの swap ディレクトリー。

/export/common/usr

/usr ディレクトリー; 全クライアントホストで共用。

/usr/src

全クライアント機で共通の /usr/src ディレクトリー。

次のファイルシステムがサーバー上に存在

/dev/ra0a on /
/dev/ra0f on /usr
/dev/ra1a on /usr/src
/dev/ra2a on /export

各クライアントは次のファイルシステムが必要

buzz:/export/cli?/root   on /
buzz:/export/common/usr  on /usr
buzz:/usr/src            on /usr/src

サーバー設定はつぎのとおり:

# /etc/exports
/usr/src  -network 192.168.1.0 -mask 255.255.255.0
/export   -alldirs -maproot=root -network 192.168.1.0 -mask 255.255.255.0

クライアント機上では /etc/fstab に入っているのは :

buzz:/export/cliX/root  /        nfs rw
buzz:/export/common/usr /usr     nfs ro,nodev,nosuid
buzz:/usr/src           /usr/src nfs rw,nodev,nosuid

各クライアント機は、前の例の最初の行の X 文字を、その番号で置き換えます。

29.1.2.Setting up NFS automounting for /net with amd(8)

29.1.2.1.Introduction

NFS (や他の) マウントの問題は、通常それをするのに root になる必要があることで、 ユーザーには不便です。 amd(8) の利用で 一定のディレクトリー (通例 /net)を アクセスに関する限り、通常のユーザーであらゆる NFS-マウントの セットアップができるようにでき、ファイルシステムは 実際には NFS サーバーが exported します。

さるサーバーがファイルシステムを exports しているのかのチェックは showmount コマンドに -e (export) スイッチでできます:

$ showmount -e wuarchive.wustl.edu
Exports list on wuarchive.wustl.edu:
/export/home                       onc.wustl.edu
/export/local                      onc.wustl.edu
/export/adm/log                    onc.wustl.edu
/usr                               onc.wustl.edu
/                                  onc.wustl.edu
/archive                           Everyone

それから、ディレクトリーの下 (例えば /archive/systems/unix/NetBSD) のアクセスをするためにディレクトリーのマウントをしたいなら、 ディレクトリーの中に移動するだけで:

$ cd /net/wuarchive.wustl.edu/archive/systems/unix/NetBSD

ファイルシステムはマウントされ (amd によって)、 そして、システムのスーパーユーザーによってマウントされたディレクトリーのように、 どのファイルにもアクセスできます。

29.1.2.2.Actual setup

次のステップ (基礎的 amd 設定を含む)で、そんな/net ディレクトリーの設定ができます:

  1. /etc/rc.conf 中に次の変数をセットし:

    amd=yes
  2. mkdir /amd

  3. mkdir /net

  4. /usr/share/examples/amd/amd.conf を用い, 以下を /etc/amd.conf に入れ:

    [ /net ]
    map_name =              /etc/amd/net
    map_type =              file
  5. /usr/share/examples/amd/net を例に用いて、 以下を /etc/amd/net に入れ:

    /defaults       type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root
    *             host==${key};type:=link;fs:=/                           \
                  host!=${key};opts:=ro,soft,intr,nodev,nosuid,noconn
  6. リブート、または、手で amd を(再)起動:

    # sh /etc/rc.d/amd restart

29.2.The Network Time Protocol (NTP)

システム時計がおかしいのは、普通でないことではなく たびたび何分も違うのが見つかります: いくつかの変な理由で計算機の時計は非常に不正確です。 あなたが管理する沢山のネットワークされたホストがあると、この問題はまずく: 時計の同期を保つことは、簡単に悪夢になるでしょう。 この問題を解決するため、 NTP プロトコル (version 3) が手助けに来ました: このプロトコルは、 ワークステーションのネットワークの時計を同期するのに使えます。 1つまたはいくつかの NTP サーバーを使って。

NTP プロトコルのおかげで一台のワークステーションの時刻を調整することもできますし、 けれども、ネットワーク全体の同期を取ることもできます。 NTP プロトコルはまったく複雑で、 strata(層) で分けられた、サーバーの マスター - スレーブ(主人 - 奴隷) 階層性構造が特徴であり: 階層のトップは、 高いレベルの正確性を保証するために外部時計 (例: 電波時計) が接続された stratum 1 サーバーが就いています。 下部に、 stratum 2 サーバーがその時計を stratum 1 に同期させ、うんぬん、です。 低い levels に進んでいくほど正確さは低下します。 この階層性構造は 全ホストの参照先が 同じ (少数の) stratum 1 サーバーに密集することを避けます。 もし、例えば、ネットワークの同期をとりたいなら、 全ホストを同じ公開 stratum 1 サーバーに接続してはなりません。 代わりに、メインサーバーと接続するローカルサーバーを作り、 残りのホストは、そのローカルサーバーと時計の同期を取ってください。

幸い、 NTP ツールの利用には、 プロトコルもしくは実装の詳細を理解する必要はなく (もし興味あれば RFC 1305 を参照してね)、 設定といくつかのプログラムの開始方法を知っているだけで良いです。 NetBSD の基本システムには、既にこのプロトコルを利用するのに必要な xntp 実装に由来するツール (および、見えるように、他の時刻関係プロトコルのも)が含まれます。 この節は、システム時刻をいつも正確にしておく簡単な方法 を記述します。

最初に、参照に使う公開 NTP サーバーのアドレスを見つけることが必要で; 詳しい一覧は http://support.ntp.org/bin/view/Servers/WebHome にあります。 例として、イタリアでは 3つの stratum 1 サーバー tempo.cstv.to.cnr.it, ntp1.inrim.it, and ntp2.inrim.it が使えます。

次に、システム時計を調整するために、次のコマンドを root で与え:

# ntpdate -b ntp1.inrim.it ntp2.inrim.it

(例中のサーバー名はあなたが実際に使うものに置き換えてください。 オプション -bntpdate に、 システム時刻の設定を adjtime (default) で slewingスルーイング(まわす)代わりに、 settimeofday システムコールで設定するように告げます。 このオプションは、 local 時刻と正しい時刻の間が少なからぬときも使えるようにすることを示唆します。

見られるように、 ntpdate の利用は難しくありません。 次のステップは、いつも正しいシステム時刻にする目的で、自動的に start ることです。 インターネット常時接続があるなら、 /etc/rc.conf に次の行で boot 時にプログラムが開始でき:

ntpdate=YES      ntpdate_hosts="ntp1.inrim.it"

利用する NTP サーバーの名前は ntpdate_hosts 変数で指定し; この欄が空のままなら、 boot スクリプトは、 /etc/ntp.conf ファイルから名前を引き出そうと試します。

インターネット常時接続を持たない (例: ISP とダイヤルアップモデム接続) なら、 Chapter24, Setting up TCP/IP on NetBSD in practice で説明したように ip-up スクリプトから ntpdate を start できます。 この場合、 ip-up スクリプトに次の行を加え:

/usr/sbin/ntpdate -s -b ntp1.inrim.it

(パスは必須で、もしくは、スクリプトはたぶんこの実行可能(物)を見つけることができないでしょう)。 オプション -s は logging output を 標準出力 (これが default) から system syslog(3) 設備に迂回し、ntpdate からのメッセージは、いつも /var/log/messages の終わりにあらわれます。

ntpdate の他にも、便利な NTP コマンドがあります。 local ホストの1つを ネットワークの残りのホストに対する NTP サーバーにすることもできます。 ローカルサーバーは公開サーバーに時刻の同期をするでしょう。 この type の設定には、 ntpd デーモンの利用および /etc/ntp.conf 設定ファイルの作成が必要です。 例えば:

server ntp1.inrim.it
    server ntp2.inrim.it

ntpd は rc.confからも started できて、 適切なオプションを使って:

ntpd=YES

ネットワークの同期を取るのには、NTP だけが option ではありません: そのうえ、 timed デーモンまたは、 rdate(8) コマンドもまた使えます。 timed は 4.3BSD のために開発されました。

Timed もまた、 マスター - スレーブ 階層性を取っていて: ホスト上で started すると、 timed はマスターにネットワーク時間を訊ね、それに応じて local clock を調整します。 混成構造、 timed および ntpd の両方をつかうことができます。 ローカルホストの1つが 公開 NTP サーバーから正しい時刻を取得して、 および、 ネットワークの残りのホストに対する timed マスターで、 (残りのほうは)クライアントになれて、 timed を用いてそれらの時計を同期します。 この意味は、 ローカルサーバーは NTP と timed の両方を run する必要があって; お互いに干渉しないように気をつけなければなりません (timed は -F hostname オプションを付けて started することが必要で、 それで、ローカル時計の修正を試みることはしません)。

最後に、 rdate(8) が与えられたホストに対して一度で同期するのに使うことができて、とても ntpdate(8) のようです。 本ホストは /etc/inetd.conf で "time" サービス (port 37) が enabled になってなければなりません。