[ Samba ]
!==
!== DIAGNOSIS.txt for Samba release 2.0.7 26 Apr 2000
!==
寄稿者:    Andrew Tridgell
更新日:    1999/11/01

翻訳者: 鎌形昌美
翻訳者: 太田俊哉 
補訳者,校正者: 土居恵介
更新日:2000/06/18

主題       Sambaサーバの診断
===========================================================================

この文書は、Sambaサーバを検証するのに行えるテストの一覧を含んでいます。
それぞれのステップごとに、うまく動かない原因について解説します。この文書
に書かれているテストにすべて合格するなら、おそらく Sambaサーバは問題なく
動作するでしょう。

すべてのテスト項目は、順番に行ってください。後で行うテストが、前に行われ
たテストで検証された内容にしたがうようにテストの方法を注意深く選びました。

この文書に示されるテストの手順に従わないで "動かないぞ(it doesn't
work)" と言って私にメールを送っても、電子メールを無視するでしょうが、あ
しからず 。


テストの前提条件
----------------

これから行うテストでは "BIGSERVER"という名前の Sambaサーバと、
"ACLIENT"という名前のPC(訳者注:Windowsマシンの一般的な呼称、Macと対比さ
れる) が存在していて、ともに"TESTGROUP"という名前のワークグループに所属
していると仮定します。PCのOSは、"Windows for workgroup"であって、最新の
Microsoft TCP/IPスタックを用いると仮定します。PCのOSは、Windows 95、
Windows NT(WorkstationまたはServer)でも構いません。

(訳者注:Windows for workgroupの日本語版は発売されていません。
日本ではあまり使用されていないでしょう。)

テストの手順は、その他の種類のクライアントに対してもほぼ同様です。

さらに smb.confに設定した利用可能な共有サービス名を、あなた自身が知って
いると仮定して、"tmp"という名前の共有サービス名であると仮定します。
smb.conf に以下の記述をつけ加えれば"tmp"共有を追加できます。

[tmp]
 comment = temporary files
 path = /tmp
 read only = yes

"重要"

これから行うテストでは、Sambaシステムは 2.0.6以降であると仮定します。
いくつかのコマンドは、2.0.6以前のバージョンでは存在しません。

エラーメッセージに注意して下さい。サーバがそっけのない(訳者注:
unfriendly)なエラーメッセージを返すときは、まず最初にIPレベルの名前解決
が正しく設定されているか確認してください。たとえば /etc/resolv.conf ファ
イルでDNSサーバのアドレスを正確に設定しているかどうか確認してください。

名前解決に DNSサーバを使用していないなら、smb.conf に"dns proxy = no"と
設定されているか確認して下さい。確認のためのお奨めの方法は "testparm
smb.conf"を実行することです。


テスト 1:
---------

使用中のsmb.conf設定が保存されているディレクトリに移動して "testparm
smb.conf"コマンドを実行してください。エラーが表示されるなら smb.conf設定
に何かの問題があるので見直して修正してください。

(訳者注: smb.conf設定は /etcディレクトリに存在することもありますし、
/usr/local/samba/libディレクトリに存在するかも知れません。)

テスト2:
--------

PCから"ping BIGSERVER"とコマンドをUNIXからは"ping ACLIENT"とコマンドを入
力し実行してください。有効な反応がないならば、TCP/IP ソフトウェアが正し
くインストールされていません。

Windows が動作している PCで "ping"コマンドを、実行するためには、"DOSプロ
ンプト"のウインドウが開いている必要があります。

"host not found"や似たような種類のメッセージか表示されるなら DNSソフトウェ
アもしくは /etc/hostsが正しく設定されていません。

(訳者注:UNIXの/etc/hostsに相当するものは Windows95では
%winbootdir%\hosts、WindowsNTでは%windir%\system32\dirvers\etc\hostsです
)

サーバおよびクライアントのDNS設定なしで Sambaを実行することは可能ですが、
あとに続くテストのために正確に設定がされていると仮定します。

ping コマンドが失敗する時、ほかに考えられる理由はホスト(訳者注:Sambaサー
バまたは、ACLIENTとBIGSERVERのあいだに存在するホストで)でfirewall が動い
ている場合です。

この場合には、firewallを動かしているマシンで他のサブネットからのアクセス
を許可するようにアクセス制限をゆるめる必要があります(Linuxでは、
ipfwadm プログラムを経由して行われます)。


テスト 3:
---------

UNIXで "smbclient -L BIGSERVER" コマンドを実行してください。BIGSERVERで
使用できる共有サービス名の一覧が表示されるはずです。

"Bad password" などのエラーメッセージが表示されたなら、おそらく 
smb.confで適切でない "hosts allow","hosts deny","valid users" 設定のため
であるか、またはゲストアカウントが有効になっていないかのいずれかです。

"testparm"コマンドを使用してゲストアカウントがあることを確認してください。
一時的に、"hosts allow","hosts deny" ,"valid users" あるいは"invalid
users" の記述行を削除(コメントアウト)してテストを行ってください。

"connection refused" エラーメッセージが返ってくるようなら、smbdが動いて
かもしれません。inetd.conf経由で動作するよう設定しているなら、おそらく
inetd.confでの記述に誤りがあるでしょう。デーモンとして動作するように設定
したなら、smbdがデーモンとして動作していることを確認してください。

"netstat -a"を実行して、netbios-ssn ポートが"LISTEN"状態になっている
確認してください。

"session request failed" とエラーメッセージ返された場合には、サーバは接
続を拒否しています。"Your server software is being unfriendly" というエ
ラーメッセージが返されたなら、smbdを実行する時に無効なパラメータを付与し
ているか、smbd 起動時に同様な致命的な問題がある場合のいずれかでしょう。

このような場合、"testparm"コマンドを実行し smb.confの文法に誤りがないか
確認し、Sambaのログディレクトリ、ロックファイルを格納するディレクトリが
キチンと存在するか確認してください。

ほかにも smbdが、セッション要求を拒否する理由はたくさんあります。代表的
なものとしてsmb.confで以下の項目をどれかひとつ以上定義している場合があり
ます。

        hosts deny = ALL
        hosts allow = xxx.xxx.xxx.xxx/yy
        bind interfaces only = Yes

上記の例では、ループバックアドレス 127.0.0.1に変換されるいかなるセッショ
ン要求も許可されていません。解決するために次のように設定を変更してくださ
い。
        
        hosts deny = ALL
        hosts allow = xxx.xxx.xxx.xxx/yy 127.

Sambaのパスワード変更機能を使用する場合、smbclientが名前解決を行ってロー
カルなサービスを使用する場合、ローカルの資源へ接続する必要がある場合には 
"bind interfaces only"パラメータを使用してはいけません。

(注:"bind interfaces only"パラメータでループバックアドレスに接続でない問
題はまもなく解決されます。)

そのほかに共通であろうもう一つの原因は、ポート139を使うSamba (例えば 
smbdが inetdからすでに起動されている場合)や、Digital's Pathworksのような
"他の何か"がすでに動いている場合です。デーモンとしてsmbdを起動する前に、
inetd.confファイルを確認することで多くのフラストレーションを感じるのを避
けることができます!!

テスト 3で発生する失敗のその他の原因は、サブネットマスク、
ブロードキャストアドレス、その両方の設定が間違っている場合です。
ネットワークインタフェースの設定(IP アドレス/ブロードキャストアドレス/
サブネットマスク)が正しく設定されていることを確認し、Sambaが正しい値を
ログファイル log.nmbに出力していることを確認してください。


テスト 4:
---------

Sambaサーバで"nmblookup -B BIGSERVER __SAMBA__"コマンドを実行してください。
SambaサーバのIPアドレスを得られるはずです。

SambaサーバのIPアドレスが得られないなら、nmbdは正しくインストールされて
いません。inetd経由で起動しているなら、inetd.confを確認して デーモンが稼
働していて 137/udpポートが"LISTEN"状態であることを確認してください。

一般的には、inetdの実装の多くは(inetd.confの各行の中で)コマンドラインに
多くのパラメータを記述できません。このような場合は、正しいパラメータを設
定した一行のみのスクリプトファイルを作成してinetdからそれを実行してくだ
さい。


テスト 5:
---------

Sambaサーバで"nmblookup -B ACLIENT '*'"を実行してください。(訳者注:この
コマンドが動作しない場合は、次のようにコマンドを実行してください。
"nmblookup -B <ブロードキャストアドレス> "
詳しくは nmblookupのmanページを参照してください。)

PCのIPアドレスを得られるはずです。そうならないなら PCのクライアントソフ
トウェアが正しくインストールされていないか動いていないか、PCの名前を間違
えているかです。

DNS を利用してACLIENTの名前解決ができないなら、ACLIENTのIPアドレスを用い
て上記のコマンドを実行してみてください。

テスト 6:
---------

Sambaサーバで"nmblookup -d 2 '*'"を実行してください。

前と同様のテストです。今度はデフォルトのブロードキャストアドレスに対して
ブロードキャストの確認を行います。ネットワーク上からたくさんの
NetBIOS/TCPIPホストから応答があるはずなので、Sambaサーバが短時間で全ての
応答を捕られないかもしれません。問題なければ、ネットワーク上のホストから
"got a positive name query response"というメッセージが得られるはずです。

前に行ったテストと同様な結果を得られないなら、nmblookupは自動的に正しい
ブロードキャストアドレスを得ていないことになります。この場合には、
smb.confの"interfaces"オプションを設定し、IPアドレスとブロードキャストア
ドレスおよびネットマスクを設定してみてください。

PCとSambaサーバが同じサブネットの上に存在しないときは、PCの存在するサブ
ネットのブロードキャストアドレスを設定するために"-B"オプションを使う必要
があります。

サブネットマスクとブロードキャストアドレスが正しく設定されていないと、多
分このテストは失敗するでしょう。

(上記のテスト 3の(注)を参照して下さい)

テスト 7:
---------

Sambaサーバ上で"smbclient //BIGSERVER/TMP"コマンドを実行してください。

パスワード入力を要求するプロンプトが表示されるはずです。パスワードには、
現在UNIXへのログインに用いているアカウントのパスワードを用います。その他
のアカウントでテストするなら、コマンドラインの最後に"-U username" オプショ
ンを付け加えてください。

例: "smbclient //bigserver/tmp -Ujohndoe"

(注: 次のようにユーザ名と一緒にパスワードを指定することも可能です。
smbclient //bigserver/tmp -Ujohndoe%secret)

パスワードを入力すると"smb>" プロンプトが表示されるはずです。プロンプト
が表示されないなら、エラーメッセージを確認して下さい。"invalid network
name"というエラーメッセージなら smb.confの[tmp]共有が正しく設定できてい
ません。

"bad password"というエラーメッセージが表示されたなら、次のような原因が考
えられます。

- Sambaサーバでシャドウパスワード(または他のパスワードシステム)を
 使用しているが smbdをコンパイルするときサポートするようにしなかった

- (smb.conf で)"valid users"の設定が正しくない。- 大文字小文字を混在したパ
 スワードを設定している場合に "password level"オプションを十分高いレベル
 で設定していない。 (訳者注: password levelは通常8にしておいたほうがいい
 かもしれません。)

 - smb.confの"path =" 行が、正しく設定されていない。 
("testparm"を用いて設定を確認て下さい) - パスワード暗号化を利用するよう
に(smb.confのオプション"encrypt passwords = yes") 設定したが、SMB用の暗
号化されたパスワードファイルを(デフォルトでは smbpasswdファイル)作成して
いない。- smbpasswdと/etc/passwdでユーザのUIDが異なっている。

上記に該当する原因が存在しない場合には、詳細な情報がSambaのログディレク
トリ(例えば、/usr/local/samba/var(または/var/log/samba))に作成されるログ
ファイルに出力されているのでその内容を確認して下さい。

問題なく接続されたのなら、"dir","get","put"などのコマンドをを使うことが
できるはずです。"help <コマンド名>"と入力すれば、コマンドの用例が表示さ
れます。

"dir"コマンドを実行した際、ディスクの空き容量が正しく表示されるか確認し
てください。

テスト 8:
---------

PC クライアントで、"net view \\BIGSERVER" コマンドを実行して下さい。
"DOSプロンプト"ウインドウを開いてから、このコマンドを実行する必要があり
ます。Sambaサーバで利用できる共有サービスの一覧が得られるはずです。

"network name not found"やそれに類似したエラーメッセージが表示された場合
NetBIOSの名前解決が出来ていません。通常、原因は nmbdの側にあります解決す
るためには、以下のいずれの方法を用いてください。(どれかひとつを選んでく
ださい)。

- nmbdの設定をやりおなす。

- PC側でのネットワーク設定のTCP/IP設定で
"wins server"の欄に BIGSERVERのIPアドレスを加える。
(訳者注:TCP/IP設定は Windows95ではデスクトップにあるアイコンの
 ネットワークコンピュータのプロパティ-[ネットワークの設定]―[TCP/IP]の
 設定になります) - ネットワーク設定のTCP/IP設定のDNSセクションで、
  DNSを利用してNetBIOS名前解決を可能にする。

- Sambaサーバ BIGSERVERのアドレスををPCのlmhostsファイルに加える。

"invalid network name","bad password error"というエラーメッセージが返っ
てきたなら、前述の"smbclient -L" のテストと同じ解決策が適用できます。

特に "hosts allow"の行を正しく設定(詳細はman ページを参照して下さい)して
いるかを確認してください。

ワークステーションがSambaサーバへ接続を要求するときに、Widows へログオン
したユーザ名を使用して接続しようと試みることを見落とさないように。

使用しているアカウントがSambaサーバで有効であること、アカウントとパスワー
ドに間違いがないか確認してください。

"specified computer is not receiving requests" または類似のエラーメッセー
ジが返ってきたなら、おそらく ホストがTCPサービス経由の接続可能でないでしょ
う。ホストで"tcp wrappers"を使用していないか確認して、必要であればクライ
アント用の(またはサブネットなどの)エントリをhosts.allowファイルに追加し
てください。

テスト 9:
---------

PC クライアント上で"net use x: \\BIGSERVER\TMP"コマンドを実行して下さい。
パスワード入力を求めるプロンプトでパスワードを入力したさいに"command
completed successfully"というメッセージが得られるはずです。

そうでなければ、PCのソフトウェアを正しくインストール/設定出来ていないか、
smb.confの設定に誤りがあります。"hosts allow"やsmb.confの各行の設定が正
しいか確認してください。

あなたが使用しているユーザ名でサーバに接続できないことがありえます。この
場合には、smb.confの [tmp]セクションに "user = USERNAME"行を追加て下さい。
"USERNAME"は入力したパスワードに対応しているユーザ名です。(PCで使用して
いるユーザ名とSambaサーバ(UNIX)で使用しているユーザ名が異なるなら ユーザ
名のマッピングオプション(smb.confのusername mapオプション)を用いる必要が
あります。

テスト 10:
----------

Sambaサーバ上で"nmblookup -M TESTGROUP"を実行してください。"TESTGROUP"は
SambaサーバとPCがともに所属しているワークグループ名です。そのワークグルー
プのマスタブラウザのIPアドレスが得られるはずです。

IPアドレスが得られないなら、マスタブラウザの選定過程が失敗しています。
選定の過程で時間がかかることがあるので、しばらく待ってから再度実行して下さ
い。それでも失敗するなら smb.confのブラウジングオプションの設定を確認し
てください。

"preferred master = yes"を指定すれば、起動時に優先的にマスタブラウザにな
るように試みます。

テスト 11:
----------

クライアントのPCで、ファイルマネージャ(エクスプローラ)を起動して、
Sambaサーバ(ネットワークコンピュータ)を参照して下さい。

Sambaサーバは、PCと同じローカルワークグループ(もしくは smb.confで指定し
たワークグループ)の中に表示されるはずです。

そして Sambaサーバのアイコンをダブルクリックすれば、共有の一覧を得られま
す。"invalid password"というエラーメッセージが返ってくるなら、おそらく 
WinNTを使用して ユーザレベルのセキュリティ・モードを使用し、なおかつ暗号
化されたパスワードを受け付けないサーバのブラウズを拒否しているのだと思わ
れます。

この場合には smb.confで"security = server"を指定して "password server
= Windows_NT_Machine"を指定するか、暗号化されたパスワードを使用できるよ
う(Makefileを参照して下さい)にSambaををコンパイルした後、暗号化された
パスワードを使用可能に設定するして下さい

(訳者注: 現在配布されているパッケージでは、暗号化パスワードが使用できる
ようコンパイルされています。パスワードを暗号化するためには smb.confで
"encrypt passwords = yes"と設定してください)

それでも問題が解決しないときには?
----------------------------------

メーリング・リストまたはニュースグループに問い合わせてみるか、もしくは
tcpdump-smbユーティリティを用いて原因を調査してください。公式のsambaメー
リングリストは、samba@samba.orgです。メーリングリストへの参加方法や
sambaについての詳細はsambaのホームページhttp://samba.org/samba から探せ
ます。

(訳注:日本語のメーリングリストへの参加方法などは日本sambaユーザ会のホー
ムページ http://www.samba.gr.jp/ から探せます。)

また、Sambaパッケージに含まれている他のドキュメントも見てください。!!