[NIS]Solarisで使うNISのはなし

Solaris 2.x/7(主にSolaris 2.6以降)で、NISを利用するための設定方法をまとめました。

[back]Solaris 2と戦う
[go!]Solaris 2.5.1→2.6へのアップグレード

日経BP, Find'X(コンピュータ・通信分野の専門検索サイト)に「厳選お薦めサイト」として登録されました。


* はじめに

Solaris 2.6以降では、NISサーバが標準で利用できます。それ以前のSolaris では、Solaris Migration Initiative Home PageからNISサーバのパッケージを手に入れることができます。なお、クライアントとしてなら、どのバージョンの Solarisも簡単に設定できます。

1999年4月に、NISの設定をやり直したので、忘れないうちにNISの設定方法をメモしておきます。Solaris 2.6以降では、標準で付いてくるだけあって、NIS の設定が非常に簡単になりました。困ったり迷ったりする心配はほとんどないでしょう。

* NISって何?

ええと、そのぅ…。すみませんがそこまで基本的な説明は、このページではとてもカバーできません。適当な文献を当たってください。大雑把に言うと、簡易ディレクトリサービスにあたるもので、複数のワークステーションでパスワードやホスト情報などを共有するためのサービスです。

これより下の部分は、NISって何か知っている方、マスターサーバー、スレーブサーバー、クライアントの違い、「マップ」などの用語を知っている方向けです。


* NISの設定

* 設定の前に

* マスターサーバー編

  1. rootになる。
  2. NISドメイン名を設定する。
  3. /etc/inet/hostsに、スレーブサーバーの名前とIPア ドレスの対応を書いておく。
  4. マップの元となるファイルを用意する。
  5. インターネットに接続されている環境では、DNSを利用したい場合が多々 あるだろう。この場合、NISでホスト名を引いて、見つからないとき にはDNSに聞きに行くように設定するのが簡単で、一般的である。 /var/yp/Makefileを編集し、先頭の方の
          #B=-b
          B=
          

    とある行の"B=-b"の方のコメントをはずし、"B="の方をコメントアウト する。(要するに"B=-b"と定義する。)

  6. /usr/sbin/ypinit -mを実行する。スレーブサ ーバーの名前を要求されるので、適切に入力する。
  7. /etc/nsswitch.confを適切に設定する。NIS用の設定が /etc/nsswitch.nisという名前で置いてあり、そのまま使 えるだろう。
  8. 念のために再起動する。

マップの元となるファイルを、システムにもともとあるファイルと分けるのは、セキュリティのことを考えてのことです。具体的には、たとえばパスワードファイル/etc/passwdをそのままマップに使うと、次のようなことが心配です。

ですから私のサイトでは、パスワードマップは/etc/passwdとは別に用意したものを利用しています。同じような設定をしたい場合には、 /var/yp/Makefileをよく読みましょう。Makefileの読み方が分からない人は…、うーむ、勉強してください。

* スレーブサーバー編

マスターサーバーの設定より、スレーブサーバーの設定の方が多少面倒かもしれません。しかし気をつけて進めば、どうってことはありません。

  1. まずはじめにNISクライアントになる。方法は下の 「クライアント編」に譲る。スレーブサーバーはマスターサーバーのデ ータベース(マップ)をもらってきて保存しておくのだが、NISのクライ アントにならないと、マップをもらうことができない。
  2. rootになる。
  3. NISドメイン名を設定する。すでにNISクライアントになっているなら、 これは設定済みのはずである。
  4. /etc/inet/hostsに、マスターサーバーの名前とIPア ドレスの対応を書いておく。すでにNISクライアントになっているなら、 これは設定済みのはずである。
  5. /usr/sbin/ypinit -s masterを実行 する。masterの部分はマスターサーバーの名前を入れる。
  6. /etc/nsswitch.confを適切に設定する。NIS用の設定が /etc/nsswitch.nisという名前で置いてあり、そのまま使 えるだろう。
  7. 念のために再起動する。

スレーブサーバーとしての最低限の設定は、これで終わりです。しかし安定した運用のためには、さらにもう一仕事しましょう。rootになって、crontabに以下のような設定をします。時間の設定は、各サイトの事情に合わせてください。(読み方はcrontab(1)参照)

20 * * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_1perhour
25 0,12 * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_2perday
30 3 * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_1perday

これはスレーブサーバーが、定期的にマスターサーバーのマップを読みに行くための設定です。マスターサーバーのマップが修正されたとき、たまたまスレーブサーバーが止まっていたとか、ネットワークが切れていたなどの事情で、マップの修正がスレーブサーバに反映されず、情報の不整合が起こる可能性があります。そのような事態が起こっても速やかに復旧できるように、定期的に確認するのです。

* クライアント編

いちばん簡単なのは、クライアントの設定です。

  1. rootになる。
  2. NISドメイン名を設定する。(方法はマスターサーバーと同じ)
  3. /etc/inet/hostsに、マスターサーバーおよびスレー ブサーバーの名前とIPアドレスの対応を書いておく。
  4. /usr/sbin/ypinit -cを実行する。 NISのサーバー(マスター、スレーブ)を、言われた通りに入力する。 /etc/inet/hostsに書いてあるホスト名でないと弾かれる ので注意。
  5. /etc/nsswitch.confを適切に設定する。NIS用の設定が /etc/nsswitch.nisという名前で置いてあり、そのまま使 えるだろう。
  6. 念のために再起動する。

* 最近のNIS事情

* NISクライアントでも、サーバのアドレスを設定するべし

SunOS4の頃のNISを管理した経験のある方は、クライアントでもサーバの名前を指定するのに違和感を感じたかもしれません。SunOS4の頃のNISでは、クライアントではサーバの名前を与えませんでした。

ではどうやってサーバを見つけるかというと、マシンの起動時にネットワークにブロードキャスト(同報通信、ネットワークに繋がっているマシンすべてに聞こえるように喋ること)をして同じドメインのNISサーバを探し、最初に返事をしたサーバに接続していましした。このため、偽のサーバ(嘘つきサーバ)がセキュリティを侵害する可能性がありました。ドメイン名を外部に知られないようにするのは、嘘つきサーバが立つのを防ぐためです。

現在のSolarisに搭載されているNISは、前もってサーバの名前を与えておき、それに直接聞きに行くように設定するのが標準です。しかしサーバの名前を設定しなくとも、SunOS4の頃と同じように、ブロードキャストしてサーバを見つけ、問題なく動きます。ですから、もしかしたらあなたのサイトにも、サーバの名前を知らないために、ブロードキャストでサーバを探しているSolarisマシンがあることに気づいていないかもしれません。…ひとごとみたいに言っていますが、実は私の研究室がそうでした(^^;;)。気づいて良かった :-)

今までいい加減な設定でNISを使ってきた方は、今からでも遅くないので、 /var/yp/binding/ドメイン名/ypservers というファイルを調べて、適切なサーバが設定されているかどうかを確認してください。サーバの設定がおかしかったり、そもそもこのファイルがなかった場合には、ypinitを実行して、 サーバを正しく設定することを強くお薦めします。

* スレーブサーバーを立てる意味

上で述べたようにSunOS4のNISクライアントは、サーバをブロードキャストで探し、最初に返事をしたサーバに接続していました。スレーブサーバを立てる意味は、SunOS4のころは単に負荷を分散するだけのため、つまり同じサーバにたくさんのクライアントが接続し、負荷が集中するのを防ぐためのものでした。接続先のサーバが何らかの事情で動かなくなった場合、SunOS4のクライアントは他のサーバを探しに行こうとせず、接続先のサーバが復活するのをただただ待ち続けます。せっかくサーバが複数あるのに、もったいないですね。

このためSunOS4のころは、マシンの数が少ないサイトでは、スレーブサーバーを立てる意味があまり無かったのです。複数のサーバがあると、あるサーバを止めたとき、どのクライアントに影響が出るのかがつかみづらいという副作用もありました。まぁぜんぶ止まるよりはましなのかもしれませんが…。

現在のSolarisのNISは、さすがに以前より賢くなっていて、接続先のサーバが止まっているときには、次のサーバを見に行きます。また、あるクライアントが最初にどのサーバに接続しに行くのかを決めることができます。したがって、スレーブサーバを用意しておくと、次のようなうれしい点があります。

実際に、NISマスターサーバーを止めてから、クライアントにログインしてみたことがあるのですが、ログインのときにしばらく待たされただけで、それ以降は普通に使えました。SunOS4だと"刺さった"ままになるのを何度か経験しているので、ちょっとうれしかった。まぁそういうわけなので、SolarisをNISクライアントにしている場合には、ドメイン内のマシンが少なくとも、スレーブサーバーを立てる意味があると思います。

蛇足ですが、PC UNIXでも、最近では当たり前にNISを使えます。PC UNIXが動くPCを、NISクライアントにするのはもちろん、サーバにすることもできます。

* なんでNIS+じゃないの?

あ、うちのサイトですか? 歴史的な事情ってやつです(^^)。NISを導入したのは5年前、1994年だったと思います。そのころはSunOS 4.1.x-JLEが主流で、他にRISC/osや純SVR4などがありました。そのころから今までずっとNISを使っていて、問題なく動いているし、管理のノウハウも覚えてきたので、なかなか新しいソフトウェアに乗り換えられないんです。

NIS+のほうがセキュリティが向上しているそうですし、NISクライアントも問題なく繋がるそうですね。そろそろ乗り換えを検討しようかな。


<- トップページ
工学院大学機械工学科流体研

リンクはご自由に。でもメールをくれると嬉しいな。

金野 祥久  konno@researchers.jp

Last modified: Wed Mar 29 11:05:18 JST 2000