・Vine Linux3.1 install memo05/07/05版

 最近,研究室の2台のサーバーをVine Linux2.6から3.1へ入れ替えた.また,これを機会に,今まで「勿体ない」の一念で使い続けてきたAlpha 21164 600MHzに別れを告げ,IAでサーバーを構築する事にした.高かったからなあ.でも,「長いものには巻かれろ」だ.

 しかし,インストールとサーバー構築作業は予想以上に難事業だった.Web上の情報は,不正確だったり,ある特定のディストリビューションに依存していたりして,そのままでは使えないことが多く,結局10以上のサイトからの情報のお世話になった.

 これは,これからAT コンパチブルのデスクトップ機にVine Linux3.1をインストールしてサーバーを構築する人達に少しでも役立てればと思い,実際に成功した手順を記したものである.マシン構成はごく一般的な,Pentium IIやIIIでWindows2000が動いていたヤツだ.HDDはもちろんパラレルATA.スレーブにインストールディスクを読み込むCDがついているとしよう.

1. インストールディスクの入手

2. インストール作業

3. aptのアップデート

4. webminのインストール

5. VNCによるリモートコントロール

6. DHCPとNATの設定

7. メールサーバー(Postfix)の設定

8. ntp daemonのインストール

9. メーリングリストサーバー fmlのインストール

10. Vine Linux 3.1 → 3.2

11. Vine Linux 3.2をWindowsドメインのPDCに仕立てる

12. ドメイン参加のトラブルシューティング


1. インストールディスクの入手

 Vine Linuxのサイトで,イメージディスクを配布している.i386アーキテクチャ用CDイメージが,たとえばここにある.ファイル名はVine31-i386.isoだ.これを,B'sなどのツールでイメージのまま焼けば,インストールディスクのできあがり.

2. インストール作業

 驚くほど簡単にできる.パーティション作成も全部お任せでフルインストール.しかも,ダイアログは日本語だし,驚くほどマイナーなビデオカードも認識する.ここで嵌る可能性としては,

どちらも,わりと新しいマシンを使っていればまず問題なし.両方嵌った私はなんなのだろう.

3. aptのアップデート

 まずは,webminをインストールしたい.しかし,apt-get updateが正常に動かない.インストールするrpmパッケージが正当であることを確認するための電子署名の公開鍵が正しくインストールされていないのが原因だそうだ.で,再インストールする必要がある.

http://www.ring.gr.jp/pub/linux/Vine/apt/3.1/i386/RPMS.main/からvine-keyring-1.0-0vl15.noarch.rpmをダウンロード.

# rpm -Uvh --force vine-keyring-1.0-0vl15.noarch.rpm
# apt-get update
# apt-get update (2回実行)


4. webminのインストール

 これも,一筋縄ではいかない.バグがあり Vine 3.1 ではインストールに失敗する.それを回避するために /etc/vine-release を修正し、Webmin を騙してインストールする.

# vi /etc/vine-release
 Vine Linux 3.1 (Pichon Lalande) → Vine Linux 3.0 (Pichon Lalande)

aptのオプションを変更,extrasを読み込んでからwebminのインストール.

#vi /etc/apt/sources.list
 rpm [vine] http://updates.vinelinux.org/apt 3.1/$(ARCH) ... extras
 rpm-src [vine] http://updates.vinelinux.org/apt 3.1/$(ARCH) ... extras
 ※extrasの記述を追加.

# apt-get update
# apt-get install webmin

Vineのリリースを元に戻しておく.

# vi /etc/vine-release
 Vine Linux 3.0 (Pichon Lalande) → Vine Linux 3.1 (Pichon Lalande)
#vi /etc/webmin/config
 real_os_version=3.0 → real_os_version=3.1

ローカルからwebminにアクセスし,アクセステスト.アドレスは「https://127.0.0.1:10000/」

アクセス可能なipアドレス制限を変更.

# vi /etc/webmin/miniserv.conf
 allow=127.0.0.1 xxx.xxx.xxx.xxx
 ※リモート端末のipを追加
# /etc/webmin/stop
# /etc/webmin/start

任意のwebブラウザから,https://[Vine Linuxのip]:10000でアクセステスト.これで,ログインダイアログが出たら成功.お疲れ様.

5. VNCによるリモートコントロール

 基本的にはこのサイトの情報に頼ったが,それでも言われたとおりでは上手くいかない.まずはパッケージの入手.今回はプレリリース版1.3dev7でのインストール方法について紹介する.1.2.9ももちろん試したが,大きな違いはない.

ダウンロードサイト:http://www.tightvnc.com/download.html.ダウンロードするのはtightvnc-1.3dev7-1.src.rpm.

source RPMからリビルド.ところが,zlibとjpegの開発ライブラリ(?)が無いと怒られる.これらのインストール方法で苦労した.やり方は,

# apt-get install zlib
# apt-get build-dep glibc
# apt-get build-dep gd

改めて,source RPMのリビルド.

# rpm --rebuild tightvnc-1.3dev7-1.src.rpm
# rpm -Uvh /root/rpm/RPMS/i386/tightvnc-server-1.3dev7-1.i386.rpm

これでインストール完了.続いて環境のコピーと動作テスト.ユーザーレベルに降りて,まずは環境のコピー.

$ mkdir .vnc
$ cp -a /etc/X11/xinit/xinitrc ~/.vnc/xstartup

起動確認

$vncserver
 You will require a password to access your desktops.
 Passwd:
 Verify:
 ※VNCログオンのパスワード.Linuxログオンとは別物なので,違うパスワードを設定した方がセキュリティー上有利.

いったん終了.

$vncserver -kill :1

続いて,VNCクライアントからリクエストがあったら自動的にサーバーが立ち上がるようにinetdを設定する.

# vi /etc/services
 vnc-800x600x8 5950/tcp
 vnc-800x600x16 5951/tcp
 vnc-1024x768x8 5952/tcp
 vnc-1024x768x16 5953/tcp

 ※末尾に追加

# vi /etc/inetd.conf
 vnc-800x600x8 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query xxx.xxx.xxx.xxx -once -geometry 800x600 -depth 8 -cc 3 -fp unix/:7100 -co /usr/lib/X11/rgb
 vnc-800x600x16 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query xxx.xxx.xxx.xxx -once -geometry 800x600 -depth 16 -fp unix/:7100 -co /usr/lib/X11/rgb
 vnc-1024x768x8 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query xxx.xxx.xxx.xxx -once -geometry 1024x768 -depth 8 -cc 3 -fp unix/:7100 -co /usr/lib/X11/rgb
 vnc-1024x768x16 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query xxx.xxx.xxx.xxx -once -geometry 1024x768 -depth 16 -fp unix/:7100 -co /usr/lib/X11/rgb
 ※末尾に追加.xxx.xxx.xxx.xxxはサーバーのipアドレスを入力.

inetdの再起動.

# /etc/rc.d/init.d/inet restart

/etc/hosts.allowを編集する.

# vi /etc/hosts.allow
 Xvnc:ALL
 ※追加

続いて,ログイン設定の変更./etc/X11/gdm/gdm.confの以下の部分を編集して有効化する.

# vi /etc/X11/gdm/gdm.conf
 Enable=1
 KillInitClients=0

接続テスト.TightVNCを起動,「ipアドレス:50」「ipアドレス:51」「ipアドレス:52」「ipアドレス:53」の4つの設定が使用可能.

キーボードの"l"が打てないバグ修正./etc/X11/xinit/Xmodmap.jpのkeycodeの22と49をコメントアウトする.

# vi /etc/X11/xinit/Xmodmap.jp
 #keycode 22 = BackSpace
 #keycode 49 = Kanji

お疲れ様でした.

6. DHCPとNATの設定

 このサーバーをDHCPサーバーとして,NATでクライアントからインターネットへアクセス出来るようにする.これはwebminを使い,ブラウザから操作.サーバーにするからには,ネットワークカードが2枚刺さっており,eth0が固定ipでインターネットにアクセスできる状態と仮定する.

 リモートクライアントでログオンしたら,まずはパッケージをアップデートしておこう.


ネットワークカードeth1の設定.
「ネットワーク設定」に入る.


ipアドレスを上記のように設定.「保存して適用」すると,eth1がアクティブになる.


「ルーティングとゲートウェイ」の画面で,「ルーターとして動作させますか?」を「はい」にする.

続いて,dhcpパッケージの導入.「ソフトウェアパッケージ」に入る.


APTからのパッケージに「dhcp」を入力,インストール.

インストール完了.

続いて,DHCPサーバーの設定.

「クライアント・オプションを編集」をクリック

デフォルトオプションの設定は二カ所.ダイナミックDNSの更新形式をアドホックに,未確認クライアントを許可にする.

新規のサブネットを追加.

サブネット作成.

クライアントオプションの設定.DNSサーバーはネットワークによって異なるので管理者に問い合わせる.

「ネットワークインターフェースを編集」に入り,

待ち受けインターフェースをeth1にセット.


「起動及びシャットダウン」画面でdhcpdを選び,

「起動時に開始しますか?」を「はい」にして「保存」する.これで,起動時に自動的にdhcpdが立ち上がる.

続いて,ファイアーウォールの設定.


「外部インターフェースでネットワークアドレス変換をする」を選び,「ファイヤーウォールを設定」をクリック.


ルーティング処理前のルールを追加.


設定が上手くいくとこうなる.続いて,ルーティング処理後のルールを変更.


「IPの範囲」に,サーバーのeth0のIPアドレスを入力.


成功するとこうなる.

 これで終了.eth1にハブを接続,下流に適当なwindowsマシンを繋いで,インターネットへアクセスできれば成功!

7. メールサーバー(Postfix)の設定

 今までのサーバーはqmailだったが,せっかくPostfixが初めから入っているので,今回はこっちを使うことにした.使ってみるとこっちの方が癖が無く設定は易しい.SPAM対策はpop before smtpと弱い.これは,研究室メンバーににOutlook Expressを使っている人が多い(私もそうだ)ためで,OEは未だにAPOPもSMTPAuthにも対応していない.裏技的な解決方法はあるらしいが,何とかしてよ,MSさん.

こんどは,こちらのサイトの情報にお世話になった.

# apt-get update
# apt-get install dracd db4 db4-devel db4-utils pam-devel gdbm-devel
 ※参照サイトはpam認証を前提とした設定だが私は使わない(使えない)ので普通のpop3認証.

portmapサービスを起動

# /etc/init.d/portmap start

サーバ起動時、portmapが起動されるようにしておく

/sbin/chkconfig portmap on

dracの設定:設定値を確認.

# cat /etc/mail/dracd.allow
  この時「255.255.255.255 127.0.0.1」の1行だけ記述があるかを確認.

rc.dracdの書き換え.

# vi /usr/sbin/rc.dracd
 /usr/sbin/rpc.dracd -e 10 &
 ※10がipアドレスを保存する時間(min).ここはお好みで.10分だと,のんびり返事を書いているウチにタイムアウトになることもあるが,安全優先で.

dracサービスを起動

# /etc/init.d/dracd start

サーバ起動時にdracを起動させる.

# /sbin/chkconfig dracd on

qpopperをdracオプション付きでインストールするため,qpopperがインストール済みならアンインストールしておく.

# rpm -e qpopper

ソース「qpopperX.X.X.tar.gz(X.X.Xはバージョン番号)」を取得.http://core.ring.gr.jp/archives/net/mail/qpopper/がおすすめ.

ダウンロードした「qpopper4.0.8.tar.gz」を解凍.

$ tar zxvf qpopper4.0.8.tar.gz
$ cd qpopper4.0.8

configure,makeする.

$ ./configure \
--prefix=/usr \
--mandir=/usr/share/man \
--enable-bulletins=/var/spool/mail/bulletins \
--with-popuid=pop \
--enable-drac
$ make

qpopperのアカウント(pop)を作る.

$ su
# /usr/sbin/groupadd -g 110 pop
# /usr/sbin/useradd -c "Pop Account" -u 110 -g 110 -s /bin/false -r -d /var/spool/mail pop

インストール.

# make install
# mkdir /var/spool/mail/bulletins

/etc/hosts.allowを編集して、以下の行を追加

# vi /etc/hosts.allow
 popper: ALL

inetd.confの編集

# vi /etc/inetd.conf
 pop-3 stream tcp nowait root /usr/sbin/tcpd popper

inetデーモンを再起動

# /etc/init.d/inet restart

Postfixの設定ファイル,/etc/postfix/main.cfを編集.

# vi /etc/postfix/main.cf
 mydomain = hogehoge.org
 myhostname = hoge.hogehoge.org
 mydestination = $myhostname, localhost.$mydomain $mydomain
 mynetworks = 127.0.0.0/8 check_client_access btree:/etc/mail/dracd
 relay_domains = $mydestination

Postfixの再起動

# /usr/sbin/postfix reload

dracdの動作確認

  1. Outlook expressでアカウント作成,POP認証してみる.
  2. サーバー側で以下のコマンドを打ち込む.
    # db_dump -p /etc/mail/dracd.db
    この時,クライアントのipが表示されれば成功.
  3. 指定した時間待って,再び
    # db_dump -p /etc/mail/dracd.db
    を実行,ipアドレスが消えていれば成功.

メール送受信テスト.中継メール(サーバー以外の宛先)を試してみて,送ることが出来れば成功.

不正中継テスト.http://www.rbl.jp/の「第三者中継チェック」をクリック.ホスト名を入力.テスト終了まで10分以上かかるので辛抱強く待つ.テストに合格すればセットアップ完了.お疲れ様でした.

8. ntp daemonのインストール

 サーバーたるもの,時間に正確でなければ.webminから「システム」→「起動及びシャットダウン」→「ntpd」と降りていって,ntpdが起動時に開始するようにセット.「保存」して,「今すぐ開始」をクリック.

/etc/ntp.confを設定.

# vi /etc/ntp.conf
 server 133.100.9.2
 server 133.41.4.2
 server 133.31.30.8
 ※server 127.127.1.0の行の下に追加

ntpdを再起動.

# /etc/rc.d/init.d/ntpd restart

時刻あわせの確認をする.

# /usr/sbin/ntpq -p 


こんな画面が出て,現在時刻の誤差を表示する.10分くらいたつとntpサーバーと同期がとれる.

9. メーリングリストサーバー fmlのインストール

 研究室サーバーの主要な役割として,MLサーバーがある.今回はfmlをPostfixと連携させる方法でインストールしよう.この方が管理がやりやすいので,fmlはいつもユーザーendoの下にインストールしている.fml8はroot権限で動くらしいが,fml4は一般ユーザー権限で動く.

まずはfmlディレクトリ,MLディレクトリを作成.endoのホームディレクトリで

$ mkdir fml
$ mkdir ml

superuser権限で,Postfixのmain.cfを編集.末尾に以下の記述を追加.

# vi /etc/postfix/main.cf
 allow_mail_to_commands = alias,forward,include

Postfixの再起動

# /usr/sbin/postfix reload

再びユーザーendoでfmlのインストール.まずはfmlをダウンロード.在処はftp://ftp.fml.org/pub/fml/.正式リリースより,stableの最新版がいいでしょう.というわけで,fml-4.0-stable-20040215.tar.gzをダウンロード.

解凍する.

$ tar zvxf fml-4.0-stable-20040215.tar.gz
$ cd fml-4.0-stable-20040215

Vineは他のディストリビューションとperlのパスが違うので,全てのスクリプトでperlのパスを変更する必要がある.

$ find . -type f | xargs perl -pi -e 's|/usr/local/bin/perl|/usr/bin/perl|g'

インストール

$ perl makefml install

途中の質問に対する回答は以下の通り.

Personal Use or ML-Admin-Group-Shared or fmlserv you use?
Personal, Group, Fmlserv(personal/group/fmlserv) [personal]
DOMAIN NAME        [hogehoge.jp]
サーバーのドメイン
FQDN            [ml.hogehoge.jp] サーバーのFQDN
EXEC FILES DIRECTORY    [/usr/local/fml]
/home/endo/fml
TOP LEVEL ML DIRECTORY   [/var/spool/ml]
/home/endo/ml
Language (Japanese or English)   [English]
Japanese
TimeZone (TZ: e.g. +0900, -0300)  [+0900]

--- Install the Fml system to /usr/local/fml. (y/n) [y]

「-- Enjoy Internetworking!」の表示が出ればインストール完了.

MLの生成をテストする.

$ /home/endo/fml/sbin/makefml newml test-ml

superuserレベルでエイリアスを変更し,それを有効にする.これでtest-ml@ml.hogehoge.jp宛てのメールを受け取れるようになる.

# cd /home/endo/ml/test-ml
# cat aliases >> /etc/aliases
# newaliases
# chmod 755 /home/endo/ml/test-ml

メーリングリストの設定.

$ /home/endo/fml/sbin/makefml config test-ml

管理者アドレスの登録.

$ /home/endo/fml/sbin/makefml addadmin test-ml endo@tokai.ac.jp

あとは,test-ml-ctrl@ml.hogehoge.jpにadminからコマンドメールを打ち,正しくコントロール出来るかどうかを確認.上手くいったらインストール完了.お疲れ様でした.

10. Vine Linux 3.1 → 3.2

 去る2005年9月18日,Vine Linux 3.2がリリースされた.早速,アップデートに挑戦.このサイトの言うとおりに操作したらあっさり終了.Windowsのサービスパックと手間はほとんど変わらない.それに加えて近年ではlinuxに関するweb上の情報の質,量の向上が著しい.サーバーの維持管理に関しては,書籍なんて買おうという気にならない.

/etc/apt/sources.listを開いて3.1と書いてある部分を3.2に変更.ここで注意.今まではアップデートはringサーバーを利用していたが,2005/10/15の時点ではringサーバー上には3.2のファイルが全て揃っておらず,アップデートに失敗したのでmasterのサーバーに変更した.

#vi /etc/apt/sources.list

#
# apt for RPM source.list sample
#

##
## Vine Linux 3.1
## 標準では extras カテゴリは除外されています。extras カテゴリ内のパッケージ
## が必要な場合はコンポーネントリストに "extras" を追加してください。
# (masters)
rpm [vine] http://updates.vinelinux.org/apt
3.2/$(ARCH) main devel plus updates extras
rpm-src [vine] http://updates.vinelinux.org/apt
3.2/$(ARCH) main devel plus updates extras
#
# (ring mirror)
# rpm [vine] http://www.ring.gr.jp/pub/linux/Vine/apt 3.1/$(ARCH) main devel plus updates
# rpm-src [vine] http://www.ring.gr.jp/pub/linux/Vine/apt 3.1/$(ARCH) main devel plus updates
#
# (jaist mirror)
# rpm [vine] ftp://ftp.jaist.ac.jp/os/linux/Vine/apt 3.1/$(ARCH) main devel plus updates
# rpm-src [vine] ftp://ftp.jaist.ac.jp/os/linux/Vine/apt 3.1/$(ARCH) main devel plus updates
#
# (kddlabs mirror)
# rpm [vine] ftp://ftp.kddlabs.co.jp/pub/Linux/distributions/Vine/apt 3.1/$(ARCH) main devel plus updates
# rpm-src [vine] ftp://ftp.kddlabs.co.jp/pub/Linux/distributions/Vine/apt 3.1/$(ARCH) main devel plus updates

データベースのアップデート

# apt-get update

パッケージのアップグレード.

# apt-get dist-upgrade

この操作ではカーネルは変わらないので,もう一度アップデート,アップグレードの操作をくり返す.

# apt-get update
# apt-get dist-upgrade

/etc/lilo.confを書き換える.

# vi /etc/lilo.conf

prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message

image=/boot/vmlinuz
label=linux
initrd=/boot/initrd-2.4.27-0vl7.img
read-only
root=/dev/hda2
append=" resume2=swap:/dev/hda3"

書き換えるのは赤い行だけ.今度のディストリビューションから,カーネルのイメージがvmlinuxzにリンクされるようになったので,あの面倒くさい記号を書き写す必要が無くなったとさ.

あとはliloを書き換えて再起動.

# /sbin/lilo
# shutdown -r now

はい,これで完了.

11. Vine Linux 3.2をWindowsドメインのPDCに仕立てる

 ドメインコントローラー(PDC)の機能についてはここで語るほどの知識はないが,私の認識では複数のWindows PCに複数のユーザーがいて,ユーザーが全てのPCで共通のデスクトップ環境を使い,かつ管理者は1台1台のアカウント管理を行わずとも,PDCの上の変更だけで済む,というものだ.
 本年度までの我が研究室では学部生,大学院生が日常業務に使う使うパソコン7台に,一つ一つ個人のアカウントを設定していた.ドメインコントローラー方式を採用してこなかった理由は,まあやり方がよく分からなかったこともあるが,それ以上にDC方式の悪い噂(遅い,デスクトップ情報の上書き時にトラブルが起こる)を聞いていたからだが,来年度から格的に導入することを決断した.これも,web上の数々のサイトから得た貴重な情報に基づく判断だ.キャンパスのネットワーク環境改善も追い風となった.
 というわけで,まずはPDCを一つ立て,それに1台のクライアントマシンを接続して色々と実験を行うことにした.我が研究室の独特な使用条件から,以下の要件が満足されることが必要.

Vine Linux 3.2は標準でSAMBA 3.0が入っている.web上の情報は主にSAMBA 2.2でPDCを立てるものが多く,さらにSAMBAのバージョンアップで仕様が大きく変わったため作業は難航した.こういう経験こそ,ここにやってくる人達のために書き残しておかなくてはならないのだろう.

まずはSAMBAをPDCとして動作させるための設定./etc/samba/smb.confを以下のように書き換えた.なお,一部に「何で?」と思われるような設定があるかもしれないが理由は聞かないで欲しい.とにかく,あちこち探して試行錯誤して上手くいった結果が下のsmb.confなのだ.

[global]
dos filetimes = Yes
smb passwd file = /etc/samba/smbpasswd
display charset = EUCJP-MS
domain master = yes
username map = /etc/samba/user.map
encrypt passwords = yes
wins support = yes
dos filetime resolution = Yes
server string = ClarkConnect
logon script = automatic.js
dos charset = CP932
local master = yes
logon path = \\%L\profiles\%U
workgroup = ENDOLAB
os level = 64
security = user
unix charset = EUCJP-MS
preferred master = yes
domain logons = yes

[homes]
comment = Home Directories
browseable = no
writeable = yes

[profiles]
path = /home/samba/profiles
profile acls = yes
writable = yes
browseable = no
guest ok = yes

[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no

[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes

SAMBAの再起動.

# /etc/rc.d/init.d/smb restart

続いて,webminでSAMBAユーザーとUnixユーザーの同期の自動化を設定する.「サーバー」→「SAMBA Windowsファイル共有」と降りて行き,下の図のアイコンをクリック.

同期化を設定して,「適用」.

こうすると,webminでユーザーを作ると同時にSAMBAアカウント,パスワードが設定される.

続いて,マシンアカウントとユーザーグループの作成.

# /usr/sbin/groupadd -g 200 admins
# /usr/sbin/groupadd -g 201 machines

ログオンスクリプトを入れるディレクトリ,プロファイルを入れるディレクトリを作成する.

# mkdir -m 0775 /home/netlogon
# chown root.admins /home/netlogon
# mkdir /home/samba /home/samba/profiles
# chmod 1757 /home/samba/profiles

続いて,マシンアカウントの作成.グループmachinesに割り当てる.ここでは,クライアント"IBM300PL"を割り当てている.アカウントの大文字/小文字は無視される(らしい)ので,ここでは全て小文字で設定.

# /usr/sbin/useradd -g machines -d /dev/null -c "Trust Account" -s /bin/false ibm300pl$
# passwd -l ibm300pl$
# smbpasswd -a -m ibm300pl

さて,続いて,これはSAMBA3.0独特の儀式なのだが,WindowsのグループとLinuxのグループをnet groupmapコマンドで対応づけてやらなくてはならない.この設定で,adminsグループのユーザーは全てクライアントPC上ではAdministrator権限を持つことになる.

# net groupmap modify NTgroup="Domain Admins" UNIXgroup=admins

確認.

# net groupmap list

クライアントPCをドメインに参加させることができるのはPDCのrootだけである.従って,rootをSAMBAユーザーにしなくてはならない

# smbpasswd -a root

パスワードを訊かれるので入力.これは,rootのログインパスワードと同一である必要はない.

さて,続いてクライアントPCをドメインに参加させてみよう.まずは,IBM300PLにPDCの在処を教えてあげなくてはならない.PDCとクライアントが同じHubにつながっているなら問題はないのだが,ルーターを越えるためには明示的にWINSサーバーを指定してやらなくてはならない.「ネットワーク」→「プロパティ」→「TCP-IP」→「詳細」→「WINS」と辿っていくと下のウィンドウに到達する.ここに,PDCのアドレスを登録.

続いて,
WindowsXP:「マイコンピューター」→「プロパティ」→「コンピュータ名」→「ネットワークID」
Windows2000:「マイコンピューター」→「プロパティ」→「ネットワークID」→「ネットワークID」
と辿って行き,ネットワークウィザードを開始する.

「ドメイン」にはsmb.confで指定した名前(ENDOLAB)を
「ユーザー名」にはrootを
「パスワード」にはsmbpasswdで指定したパスワードを入力する.

ところが,ここで「ENDOLAB上にコンピューターのアカウントが見つかりませんでした」と言われる.

再びドメイン名に「ENDOLAB」と入力し,「次へ(N)」.すると下のように,またユーザー名,パスワード,ドメイン名を訊くダイアログが出る.ここにもう一度同じ情報を入力.

ここで結構待たされる.しかし1分ほどしてPDCに認識されると,「rootをローカルユーザーに加えるか?」というダイアログが出る.ここは「追加しない」.

ウィザードを閉じると,再起動を促すダイアログが出るので,再起動を掛ける.再起動後の画面は,下のように見慣れたWindowsログオン画面とちょっとちがう.さて,ここでログオンする前に,PDCにユーザーアカウントを作らなくてはいけない.ユーザーyamadaを作ってみよう.

ここで,Webminを利用すれば,ユーザーアカウントとSAMBAアカウントがいっぺんに作れる.パスワードはtaroとしておこう.

グループを「admins」にするのを忘れないように.

「作成」で作業完了.SAMBAアカウント,パスワードの作成は自動でできているはずである.

クライアントPCのログオン画面でAlt-Ctrl-Delキーを叩くと,ログオン画面が現れる.いつもと違い,画面の入力欄が3段になっている.ログオン先を「このコンピューター」から「ENDOLAB」に変更,ユーザー名とパスワードを入力.

全てが上手くいけば,あのおなじみの「始めてのログオン画面」が現れる.

これで,yamadaさんのアカウントが無事作成されました.しかし,作業はここで終わりではない.「マイコンピューター」を開けると,ネットワークドライブZが自動的に作られていることがわかる.SAMBAの機能なのか,Windowsのドメインはみんなこうなのかは分からないが,自動的にサーバー上のディスクスペースにネットワークドライブが割り当てられるようだ.SAMBA版のばあいは,もちろん実体はPDC上,ユーザーアカウントのホームディレクトリである.

これに加え,研究室共有サーバー(Windows2000)の「共有フォルダ」と「ファイルサーバー」をそれぞれドライブX,Yに割り当てる必要がある.これにはWindows Scripting Hostを利用する.web上の情報ではnet useコマンドを利用したバッチファイルを使った方法が数多く紹介されているが,まあこれは趣味の問題.IPアドレスなどのプライバシー情報をぼかし,ダウンロードできるようにしたものがこちらにある.このファイルを,PDCのnetlogon上に置いておけば,勝手に実行してくれる.もちろん,smb.confにその旨の設定があるからだが.一度ログオフし,再度ログオンして,サーバーがX,Yドライブに割り当てられていることを確認.

これで終了.あ〜,大変だった.

12. ドメイン参加のトラブルシューティング

 本格的ドメイン運用に先立ち,研究室のPCを幾つかENDOLABドメインに参加させていった.その過程で非常にやっかいなトラブルに遭遇し,まる1日費やして解決策を探し出した.その過程を記しておきたい.

 トラブル発生は,Windowsの「ネットワーク接続の共有」,またはLinux経由DHCPでインターネット接続しているクライアントで起こった.WINSサーバーをPDC(以降,alpha1と呼ぼう)に設定しても,pingが通らないのだ.しかし,PDC兼WINSサーバー(alpha1)からの応答は返ってきていることは間違いない.具体的には下のような状態となる.

なぜか,名前解決の結果alpha1が""192.168.0.0"だと誤認識している.このまま無理矢理ドメインに参加しようとしても,以下のようなエラーが出てドメイン参加が出来ない.

ドメイン名が「無効であるか、または存在しません。」とはどういう意味だろうか.これは,WINSサーバーの名前解決が上手くいっていないことが原因である.はじめはクライアントの設定で何とかなるだろうと思い,lmhostsを設定したりしたがダメだった.ping alpha1は通るのに.これが,「見えることと繋がることは違う」という格言が生まれる所以だろう.

調べた結果,以下のことが分かった.

  1. SAMBAのWINSサーバーは,ホスト名とIPアドレスの組みのデータを"/var/cache/samba/wins.dat"に持っている.
  2. wins.datを見たところ,alpha1には二つのIPアドレスが割り当てられていた.
  3. なぜならalpha1にはネットワークカードが2枚刺さっており,うち1枚がDHCPサーバー"192.168.0.0"としてHubに繋がっているから.
  4. どういう訳か,WINSクライアントからの要求に対して,場合によっては二つ目の"192.168.0.0"を返してしまう.

はじめは,eth1を殺すことで解決していたが,これではalpha1のDHCPサーバーとしての機能が失われる.もっとスマートな解決方法はないかとあちこちを探し回った結果,非常に単純でエレガントな解決方法を発見.

まず,古いwins.datを削除する.

# /etc/rc.d/init.d/smb stop
# rm /var/cache/samba/wins.dat
# /etc/rc.d/init.d/smb start

smb.confを編集し,[global]セクションに

interfaces = eth0

を追加する.

SAMBA再起動.

# /etc/rc.d/init.d/smb start

クライアントからpingを打ち,名前解決が出来ていることを確認する.

pingが通ればしめたもの.あとは「11. Vine Linux 3.2をWindowsドメインのPDCに仕立てる」で紹介したとおりの手順でドメイン参加が可能だ.分かってしまえば何と言うことはないが,けっこうこれで嵌る人はいるのではないだろうか.ここの情報が役に立つことを願う.

管理人へのメール