(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

(10) クライアントからのNBTの動作確認

Windowsクライアントで以下のコマンドを実行する。

nbtstat -a bigserver

(4)や(6)のping,(9)のnmblookupが問題なく動作するのに,このコマンドが動作しない場合は,Linuxマシン上のファイアウオールでSambaのポートが閉じられている可能性がある。SWATのところでも説明したように,lokkitでファイアウオールを「なし」とするか,Sambaのポート(137/udp,138/tcp,139/tcp)が通過するように設定する。

 別の理由として,NetBIOSの名前解決ができていない可能性もある。その場合は以下のいずれの方法を用いる(どれか1つを選ぶ)。

● BIGSERVERをWINSサーバーとして設定し,Windowsマシン側でのネットワーク設定のTCP/IP設定で"wins server"の欄にBIGSERVERのIPアドレスを加える(Windows95では,デスクトップにあるアイコンのネットワークコンピュータのプロパティ-[ネットワークの設定]-[TCP/IP]の設定)

● BIGSERVERとWindowsクライアントで同一のWINSサーバーを使用するように設定する

● ネットワーク設定のTCP/IP設定のDNSセクションで,DNSを利用してNetBIOS名前解決を可能にする。

● SambaサーバーのBIGSERVERのアドレスをWindowsクライアントのlmhostsファイルに加える (WindowsMe/9xでは%windir%\lmhosts,WindowsNT/2000/XPは%windir%\system32\dirvers\etc\lmhosts)。

(11) Linuxマシン上での共有アクセス

Linuxマシンで以下のコマンドを実行する。

smbclient //BIGSERVER/TMP

 パスワード入力を要求するプロンプトが表示されるはずだ。パスワードには,smbpasswdコマンドで設定したパスワードを用いる。その他のアカウントでテストしたければ,コマンドラインの最後に"-U username" オプションを付け加えればよい。

(例 ユーザー名を指定してテスト)
smbclient //bigserver/tmp -U watanabe
(例 ユーザー名と一緒にパスワードを指定してテスト)
smbclient //bigserver/tmp -Uwatanabe%masako

 パスワードを入力すると,"smb>" プロンプトが表示されるはずだ。プロンプトが表示されない場合は,エラー・メッセージを確認する。

 "invalid network name"というエラー・メッセージなら,smb.confの[tmp]共有が正しく設定されていないことが原因である。

 "bad password"というエラー・メッセージが表示された場合は,次のような原因が考えられる。

● smbpasswdコマンドでパスワードを設定していない(ユーザー管理方法によって,パスワードの設定コマンドが異なるので注意)

● smb.confでencrypt password = yes としていない

● smb.conf で "valid users"の設定が正しくない

● encrypt password = noのときに大文字小文字を混在したパスワードを設定している。encrypt password = yesの場合はパスワードに英大文字を使用できるが,noの場合は使用できない

● smb.confの"path =" 行が,正しく設定されていない("testparm"を用いて設定を確認すること)

● smbpasswdと/etc/passwdでユーザーのUIDが異なっている
 上記に該当する原因が見つからない場合は,詳細な情報がSambaのログ・ディレクトリ(例えば,/vart/log/samba)に作成されるログ・ファイルに出力されているので,その内容をよく確認しよう。

 これら対策により問題なく接続された場合は,"dir","get","put"などのコマンドを使えるようになったはずだ。"help <コマンド名>"と入力すれば,コマンドの用例が表示される。"dir"コマンドを実行した際に,ディスクの空き容量が正しく表示されるか確認しておこう。

(12) Windowマシンからのnet view

 Windowsクライアントのコマンド・プロンプトから,以下のコマンドを実行する。

net view \\BIGSERVER

 Sambaサーバーで利用できる共有サービスの一覧が得られるはずだ。「ネットワークパスが見つかりません」や,それに類似したエラー・メッセージが表示された場合には,NetBIOSの名前解決ができていないか,Sambaが起動していない。エラー・メッセージが返ってきたなら,(8)の"smbclient -L" のテストと同じ解決策が適用できる。

 特に,"hosts allow"の行が正しく設定われているか(詳細はSWATのドキュメント・ページを参照)を確認しよう。また,使用しているアカウントがSambaサーバーで有効であることや,アカウント/パスワードに間違いがないかなども確認する。

(13) Windowマシンからのnet use

 Windowsクライアントのコマンド・プロンプトから以下のコマンドを実行する。

net use x: \\BIGSERVER\TMP

 パスワード入力を求めるプロンプトで,パスワードを入力するとXドライブに共有が割り付けられるはずだ。そうでなければ,Windowsネットワークが正しく設定されていないか,smb.confの設定に誤りがある。smb.confの設定では,特に"hosts allow"やsmb.confの各行の設定が正しいかを念入りに確認しよう。

 smb.confでsecurity=shareの場合には,使用しているユーザー名でサーバーに接続できない(smb.confのusernameで指定したユーザーとして接続される)ことがある。この場合には,smb.confの [tmp]セクションに "user = USERNAME"行を追加する("USERNAME"は入力したパスワードに対応しているユーザー名)*2

(14) ブラウジング

 Windowsクライアントで,「ネットワークコンピュータ」や「マイネットワーク」を参照する。Sambaサーバーは,smb.confで指定したワークグループの中に表示されるはずだ。そして,Sambaサーバーのアイコンをダブル・クリックすれば,共有の一覧が得られる。

 「ネットワークコンピュータ一覧」にSambaが現れない場合は,「ブラウジング」に問題が発生している。その仕組みを詳細に解説すると,相当数のページを消費してしまうので,省略させていただく。詳しくは,http://www.samba.gr.jp/doc/browsing/を参照してほしい。

 なお,Windowsの「スタート」メニューの「ファイル名を指定して実行」において「名前」へ「\\Sambaサーバー名」を入力して実行すればSambaサーバーの共有が現れる場合には,Sambaの設定はほぼ間違いないのだが,セグメント越えなどに課題があると考えられる。以下を調査してほしい。

● セグメントをまたがったブラウジングにはWINSサーバーが必須(LMHOSTSやDNSでは解決できない)なので,WINSサーバーを設置すること

● smb.confで"encrypt passwords = yes"と設定する

● Linuxマシンから,「nmblookup -M ワークグループ名」を実行し,そのワークグループのマスター・ブラウザのIPアドレスが得られることを確認

 ブラウジングには,各セグメントにマスター・ブラウザが必要であり,セグメントをまたがったブラウジングにはドメイン・マスター・ブラウザとWINSサーバーが必須である。

smb.confのパラメータ補足

 Sambaのアクセス制御を行うパラメータとして利用者が使い方を間違えやすいパラメータについて,補足説明しておこう。

●interfaces = IPアドレス/サブネット
マスク
Sambaが使用するインタフェースを指定する
●socket address = IPアドレス
Sambaが接続するソケット・アドレス
●bind interfaces only = yes またはno

Sambaがinterfacesに指定したインタフェースを使用しないようにするならYESとする

 上記の3つのパラメータは,以下のようなときに指定する。

●複数のLANカードやモデムを利用する場合,Sambaがすべてのインタフェースを認識しないときやサブネットマスクを正しく認識しないとき,またはSambaに接続させるインタフェースを制限したいとき

●1つのLANカードに複数のIPアドレスを割り付ける場合で特定のIPアドレスでのみSambaに接続させたいとき

●1台のマシン上で複数のSambaを同時に起動させたい場合(1台のマシンに複数のIPアドレスを割り付け,それぞれのアドレスに対応したSambaを起動させることができる)

 ネットワーク・インタフェースによるアクセス制御を行うには,本来はsocket addressパラメータを使用し,interfacesパラメータは複数のネットワークや正しいサブネットマスクを検知できないOSのために存在するものであった。しかし最近ではアクセス制御の場合を含めてinterfaceパラメータが使われることが多いようだ。

 例えば,LANカードが2枚装備されているマシンにおいて,片方だけのLANカード(IPアドレスが192.168.0.1)のみでSambaの接続をしたい場合は

[global]

interfaces = 192.168.0.1/255.255.255.0
bind interfaces only = yes
とすればいいように見えるが,これは誤りである。正しくは,
[global]
interfaces = 192.168.0.1/255.255.255.0 127.0.0.1
bind interfaces only = yes

というように,必ずlocalhostのアドレスを指定する必要がある。この設定を忘れると,Windowsクライアントからパスワードを変更できなくなる。なお,hosts allowパラメータを使って,接続できるクライアントを制限することもできる。

[global]
interfaces = 10.0.12.1/255.255.0.0 127.0.0.1
bind interfaces only = yes
hosts allow = 10.0.13.0/255.255.255.0
 上記の設定では,10.0.13.0から10.0.13.255のアドレスのクライアントが接続できる*3

それでも解決しないときは

 以上のすべての項目を確認,テストした上で,それでも問題が解決しない場合は,Sambaパッケージに含まれている他のドキュメント(SWATの表紙)も見てほしい。どうしても原因が分からない場合は,日本Sambaユーザ会のメーリング・リスト(samba-jp)で聞くのもいいだろう。もし,メーリング・リストで質問するときは,

・ 問題が起こるときの操作方法

・ エラーの場合は詳細メッセージ

・必要に応じてエラー・ログ(/var/log /samba/ *)

・ 設定ファイル(smb.conf)

などを添付して質問してほしい。

 メーリング・リストへの参加方法やsambaについての詳細は,日本Sambaユーザ会のホームページhttp://www.samba.gr.jp/に掲載していあるので,参照していただきたい。

(ミラクル・リナックス 小田切 耕司)


(次回に続く)