◆ NetInfo

NetInfo とは, NeXT STEP で用いられてきた NIS (YP) に代わるディレクトリサービスで, 複数のデータベースを階層的に配置することが可能です.
NetInfo とそのコマンドの詳細に関しては, MacOS X Beta の NetInfo のページを御覧下さい.

目次

◆ NetInfo データベースの階層構造

ここでは, osxserver というホストに, 4階層からなる NetInfo データベースを構築します. それらのデータベース名称と, そこに含まれるデータベースの中身は, 以下のように設定します. このような階層を設定することにより, 各ホストの local データベースの上位データーベースとしてどれを指定するかにより, そのホストの設定内容を決めることができます.

例えば, 特定の個人だけが利用するホストで, プリンタ設定や DNS の設定だけをしたい場合には, local データベースの上位として level-0 を指定することにより, 余分なユーザ情報を受け付けなくて済みます.
また, 各種フリーソフトウェアを(例えば Solaris などの)サーバワークステーション上にインストールしておき, それらを利用したい場合には, local データベースの上位として level-1 を設定すれば, NFS により, サーバ上にあるソフトウェアを利用することが可能になります.

◆ NetInfo サーバの設定

本来は, Solaris などの全体のサーバ上に NetInfo サーバを置くことが理想的です. しかし, Solaris 上で動作する NetInfo のパッケージが存在しないため, 取りあえず, MacOS X が動作しているホストを NetInfo サーバとして設定します.

◆ NetInfo データベースの初期化

NetInfo サーバ上で以下のコマンドを実行します.
        # nidomain -m level-0
        # nidomain -m level-1
        # nidomain -m level-2
        # nidomain -m level-3
nidomain は NetInfo データベースを作成したり, 削除したりするコマンドです. これらのコマンドにより, level-0 から level-3 までの4つの NetInfo データベースが作成できました.

◆ NetInfo データベースの階層化

上で作成した4つのデータベースを
              level-0 
                |
                |
              level-1
                |
                |
              level-2 
                |
                |
              level-3 
と階層構造に配置する設定を行います.

各データベースには master と呼ばれるプロパティが必要であり, これは, 各データベースのマスターサーバのホスト名と, そのデータベース名を指定します.
NetInfo も NIS と同様にマスターサーバのコピーを持ち, それを他のホストに提供するサーバを構築することが出来ます. (NIS で言うところの slave server ですが, NetInfo では clone server と呼びます. クローンサーバを作成するには, nidomain コマンドを用います.) master プロパティは各クローンサーバがマスターサーバを識別するために用いられます.

NetInfo データベースの階層構造を決定するためのプロパティが serves で, machines タグの中に記述されます. 具体的に上のデータベース配置を行うためには, 各データベースに以下のようなプロパティを設定します.

要するに,
Tag Property Contents  
/ master hostname/database_name そのデータベースのマスターサーバを指定
/machines/hostname serves hostname/level-X 上位データベースを指定
./level-X 自身のデータベースを指定
hostname/level-X 接続してくる下位ホストのデータベースを指定
とします.

すなわち, OSXServer が上位データベースと自身のデータベースをサービスするホストであることを示し, 一方, そのデーターベースに対して, localhost の下位データベースが接続することを許可しています. ここで, それぞれの serves プロパティに書かれている XXX/local という記述は, 実際には, XXX の部分に他のホスト名が書かれ, そのホストの local データベースからの接続を許可する設定を行います.

◆ local データベースの接続

MacOS X の各ホストには NetInfo の local なデータベースが存在します. ここでは, local データベースを, 上で作成した階層構造のどこかに接続するための設定を行います. (ここの例では, level-3 データベースの下位データベースとします.)

MacOS X Public Beta とは異なり, MacOS X では, インストール時には他のホストの NetInfo データベースを参照しない設定となっています. そのため, "Directory Service" を有効にする必要があります. これは, "Applications/Utilities" 内にある "Directory Service" を起動し, NetInfo を有効にすることで実現できます.
"Directory Service" では,

という3つの方法のいずれかで上位 NetInfo データベースを指定することが出来ますが, Broadcast や DHCP を用いる方法では, 上位データベースとして "network" という名前を持つデータベース以外を指定することが出来ません.
そこで, 今回は「特定のホストを指定する」という方法を用います. すなわち, この部分に OSXServer の level-3 データベースを指定して, ホストを再起動することで, local データベースの上位データベースに OSXServer の level-3 データベースを持ってくることが出来ます.
なお, "Directory Service" で特定のホストを指定するためには, そのホストの「ホスト名」ではなく, 「IPアドレス」を指定した方が安全です. なぜなら, DNS 自身を NetInfo を用いて設定しようとしているため, 「ホスト名」では NetInfo の起動時に正しく検索が行われない可能性があるためです.
また, この設定内容は, /var/db/SystemConfiguration/preferences.xml の中に,

NetInfo->BindingMethods->Manual
NetInfo->ServerAddresses->133.6.XXX.XXX
NetInfo->ServerTags->level-3

として格納されます.

◆ NetInfo データの設定

以下では各データベースにデータを設定していきます.

◆ root エントリの設定

各データベースには root の password エントリをいれておかないと, NetInfo Manager を開いたときに Warning Dialog が発生してしまいます.
そのため, 以下の操作を行います.

        # nidump passwd -t localhost/local | grep "^root" > /tmp/passwd
        # niload -t passwd localhost/level-0 < /tmp/passwd
        # niload -t passwd localhost/level-1 < /tmp/passwd
        # niload -t passwd localhost/level-2 < /tmp/passwd
        # niload -t passwd localhost/level-3 < /tmp/passwd

第1行めは, local データベースに存在する root ユーザのエントリを取得して, /tmp/passwd に保存します. それ以後の4つのコマンドで, 各データベースに対して root ユーザのエントリを作成しています.

◆ DNS の設定

DNS の設定, すなわち resolv.conf の設定を level-0 データベースに書き込みます. 書き込むべき内容は,

        domain math.nagoya-u.ac.jp
        search math.nagoya-u.ac.jp
        nameserver 133.6.130.5
        nameserver 133.6.130.1

とします. そのためには, 以下のコマンドを利用します.

        # niutil -t -create     localhost/level-0 /locations/resolver
        # niutil -t -createprop localhost/level-0 /locations/resolver nameserver 133.6.130.5 133.6.130.1
        # niutil -t -createprop localhost/level-0 /locations/resolver domain math.nagoya-u.ac.jp
        # niutil -t -createprop localhost/level-0 /locations/resolver search math.nagoya-u.ac.jp

この段階で設定内容をみると, 以下のようになっています.

       # nidump resolv.conf -t localhost/level-0
       domain math.nagoya-u.ac.jp
       serach math.nagoya-u.ac.jp
       nameserver 133.6.130.5
       nameserver 133.6.130.1

さらに, resolver の検索順序を設定します. ホスト名を検索する方法としては,

を, どの順序で検索するかを指定することが出来ます. ここでは, FFAgent, NIAgent, DNSAgent の順で検索することを指定します. そのためには,

        # niutil -t -create     localhost/level-0 /locations/lookupd/hosts
        # niutil -t -createprop localhost/level-0 /locations/lookupd/hosts LookupOrder FFAgent NIAgent DNSAgent

と指定します.

◆ Network Time Server の指定

MacOS X では, ntpd を利用することにより, NTP サーバと時刻の同期をとることが可能です. この機能を利用するには, /etc/hostconfig TIMESYNC -YES- にする必要があります. さらに, 以下の用法で NetInfo データベースに NTP サーバを指定します.

       # niutil -t -create     localhost/level-0 /config/ntp
       # niutil -t -createprop localhost/level-0 /config/ntp server timekeeper.math.nagoya-u.ac.jp

ここでは, NTP サーバとして timekeeper.math.nagoya-u.ac.jp というホストを指定しています.

◆ プリンタ情報の設定

MacOS X におけるプリンタの利用は結構面倒ですが, 取りあえず, 通常の UNIX における /etc/printcap に相当する情報を設定します.
通常 /etc/printcap は以下のようなフォーマットをしています. (これは, print_host のプリンタ 2F を利用する, リモートプリントの設定です.)

2F|2f:\
        :lp:\
        :rm=print_host:\
        :sd=/var/spool/lpd/2F:\
        :mx=#0:\
        :rp=2F:

このような printcap ファイルを設定すれば良いように思えるのですが, MacOS X では, プリンタエントリの "|" を正しく認識してくれません. そのため, 上のような設定, すなわち, このプリンタを 2F でも 2f でも認識させるためには,

2F:\
        :lp:\
        :rm=print_host:\
        :sd=/var/spool/lpd/2F:\
        :mx=#0:\
        :rp=2F:
2f:\
        :lp:\
        :rm=print_host:\
        :sd=/var/spool/lpd/2F:\
        :mx=#0:\
        :rp=2F:

のように, プリンタエントリを分解した printcap を作成する必要があります. このようにして作成した printcap を利用して,

        # niload -t printcap localhost/level-0 < printcap

とすることにより, NetInfo に printcap の設定が出来ます.

実際にプリンタを利用するためには,

という2つの方法があります.

(未完)


naito@math.nagoya-u.ac.jp
$Id: netinfo.html,v 1.6 2001-09-05 13:04:44+09 naito Exp $