|
日本 Samba ユーザ会 (Samba Users Group Japan)
Sambaが動作しないときの診断方法
日本Sambaユーザ会 代表幹事
このページは、日本Sambaユーザ会 代表幹事の小田切 耕司さんが執筆された、日経Linux 2001 年 6 月号の原稿をもとに作成しております。よって文中に Linux の文字が出てきますが、それはお使いのunix互換OS と読み替えてください。
このページでは、Samba が動かないときの対処方法を説明します。
日本 Samba ユーザ会が運営している Samba-JP メーリング・リスト(https://www.samba.gr.jp/ml/#samba-jp) に時々「Sambaがうまく動きません。なぜでしょうか?」といったような質問が寄せられることがあります。
しかし、これだけでは何がどううまく動かないのかわからず、だれも適切なアドバイスすることができません。 説明のため、ここでは次のようなネットワーク環境を仮定します。
(1) Linux 上で自マシンの IP アドレスへ pingLinux マシン bigserver の上で、自マシンの IP アドレス (10.1.0.10) へ ping コマンドを実行してください。 <実行例>※注: $ は Linux マシンのコマンド・プロンプトを表します。 もし、これに応答がないか、エラーになる場合は、 ネットワークカードが認識されていないか、TCP/IP の設定が正しくされて いません。 使用している OS のマニュアルや、ハードウェアのマニュアルなどを 参照して、TCP/IP の設定や、カードの接続および設定を確認してください。 (2) Linux 上で自マシンのホスト名へ pingLinux マシン bigserver の上で、自マシンのホスト名 (bigserver) へ ping コマンドを実行してください。 <実行例> ping コマンドを実行した時に、自ホストの IP アドレスが 127.0.0.1 となるときは、/etc/hosts の設定ミスです。以下を参考に修正してください。 <誤った /etc/hosts 設定例> <正しい /etc/hosts 設定例> 上記の正しい /etc/hosts 設定例のように、ホスト名 (bigserver) と 外部と通信可能な IP アドレス (10.1.0.10) をマッピングさせてください。 miraclelinux.com などドメイン名を付けた FQDN (Fully Qualified Domain Name) も忘れずに指定してください。 もし、マシンが DHCP でアドレスを動的に設定する場合は、上記のように /etc/hosts に指定せずに、DNS で名前解決できるように設定してください。 (3) Linux マシンから Windows マシンの IP アドレスへ pingLinux マシン (bigserver) の上で、Windows マシンの IP アドレス (10.1.0.20) へ ping コマンドを実行してください。 <実行例> もしこれに応答が無いか、エラーになる場合は、 ネットワークがダウンしているか、 Windows マシンの TCP/IP の設定が正しくないことを意味します。 Windows マシンの設定や接続を確認してください。 (4) Linux マシンから Windows マシンのホスト名へ pingLinux マシン (bigserver) の上で Windows クライアントのホスト名 (aclient) へ ping コマンドを実行してください。 <実行例> もし、host not found やエラーとなるときは、 Linux マシンの /etc/resolv.conf ファイルに DNS サーバのアドレスが正確に設定されていなかったり、 DNS や /etc/hosts の設定にミスがあります。 この、ホスト名での ping コマンドでエラーが生じていても Samba にはアクセスできることがあります。 しかし、これが原因で SWAT へのアクセスが異常に遅くなることもあります。 (5) 必要最低限の設定ファイルの作成と testparm の実行SWAT またはエディタを使用して次のような設定ファイル (smb.conf) を 作成し、保存してください。 この smb.conf ファイルは /etc ディレクトリに存在することもありますし、 /etc/samba や/usr/local/samba/lib, /usr/local/etc ディレクトリに あるかも知れません。 smb.conf ファイルを保存した後、Linux 上で testparm コマンドを 実行してください。
testparm の実行時にエラーが表示されるなら、 smb.conf の設定に何らかの問題がありますので、見直して修正してください。 (6) Linux 上で smbclient を実行 Linux にログインし、smbclient を実行してください。
Linux にログインするときは、Windows でログオンする時と同じユーザ名で
ログインしてください。 そして、次の例のように smbclient を実行してください。 <実行例> 使用できる共有サービス名の一覧が表示されるはずです。 <例> 上記の例では,ループ・バック・アドレス (127.0.0.1) に変換される いかなるセッション要求も許可されていません。 この問題を解決するためには次のように設定を変更してください。 <例> Samba のパスワード変更機能を使用する場合や、
smbclient が名前を解決してローカルなサービスを使用する場合、
あるいはローカルの資源へ接続する必要がある場合は、
「 bind interfaces only 」パラメータを使用してはいけません。 (7) nmbd の動作確認Linux マシンで以下のコマンドを実行してください。 <実行例> Linux マシンの IP アドレスを得られるはずです。 Linux マシンの IP アドレスが得られないときは、 nmbd が正しく起動されていません。 デーモンが稼働していて 137/udp ポートが「 LISTEN 」状態であることを 確認してください。 そして nmbd が inetd 経由で起動されていないことを確認してください。 (8)コンピュータ名による名前解決Linux マシンで以下のコマンドを実行してください。 <実行例> このコマンドが動作しない場合は、次のコマンドを実行してください ( 詳しくは SWAT の nmblookup の説明ページを参照 )。 nmblookup -B <ブロードキャスト・アドレス> <コンピュータ名> <実行例> Windows マシンの IP アドレスを得られるはずです。 Windows マシンの IP アドレスが得られない場合は、Windows マシンの TCP/IP 設定が正しくないか、マシンの名前を間違えているかのいずれかです。 DNS を利用して aclient の名前解決ができないなら、aclient の IP アドレスを 用いて上記のコマンドを実行してみてください。 (9)nmbd でのブロードキャストへ応答確認Linux マシンで以下のコマンドを実行してください。 <実行例> (8) と同様のテストですが、これはデフォルトのブロードキャスト・アドレス
に対しブロードキャストし、その応答を確認します。
ネットワーク上の NetBIOS と TCP/IP ホストからたくさんの応答があるはず
なので、Samba サーバが短時間ですべての応答を捕られないかも知れません。
問題なければ、ネットワーク上のホストから
「 got a positive name query response 」というメッセージが得られるはず
です。 (10) Linux マシン上での共有アクセスLinux マシンで以下のコマンドを実行してください。 <実行例> パスワード入力を要求するプロンプトが表示されるはずです。 パスワードには、smbpasswd コマンドで設定したパスワードを用いてください。 その他のアカウントでテストするなら、コマンドラインの最後に 「 -U username 」オプションを付け加えてください。 <実行例> 次のようにユーザ名 (watanabe) と一緒にパスワード (masako) を 指定することも可能です。 <実行例> パスワードを入力すると「 smb: \> 」プロンプトが表示されるはずです。 プロンプトが表示されない場合はエラーになっています。 「 invalid network name 」というエラー・メッセージなら smb.conf の [tmp] 共有が正しく設定できていません。 「 bad password 」というエラー・メッセージが表示されたなら、 次のような原因が考えられます。
上記に該当する原因が存在しない場合には、Samba のログ・ディレクトリ
(例えば、/var/log/samba/、/usr/local/samba/var/ など)に作成される
ログ・ファイルに、詳細な情報が出力されているので、
その内容を確認してください。 (11) Windows マシンから Linux マシンの IP アドレスへ pingWindows マシン aclient のコマンド・プロンプト (DOS 互換ボックス )で、Linux マシンの IP アドレスへ ping コマンドを 実行してください。 <実行例> ※注: c:> は Windows マシンのコマンド・プロンプトを表します。 もし、これに応答が無いか、エラーになる場合は、 ネットワークがダウンしているか、Windows マシンの TCP/IP の設定が 間違っていることを意味します。 (12) Windows マシンから Linux マシンのホスト名へ pingWindows マシン aclient のコマンド・プロンプトで、Linux マシンの ホスト名へ ping コマンドを実行してください。 <実行例> ping コマンドを実行したときに、「 host not found 」や エラーとなるときは、DNS や WINS サーバの設定にミスがあります。 Windows マシンでも hosts ファイルを使用して名前解決することは可能ですが、 できる限り DNS と WINS を使用することをお勧めします。 (Linux の /etc/hosts に相当するものは Windows Me/9x では %windir%\hosts 、 Windows NT/2000 では %windir%\system32\dirvers\etc\hosts です。 %windir% は Windows ディレクトリを意味します。 一般に Windows Me/9x ではC:\WINDOWS 、WindowsNT/2000 ではC:\WINNT です。) (13) Linux マシンの IP アドレスでの nbtstatWindows マシンのコマンド・プロンプトから以下のコマンドを 実行してください。 <実行例> これに応答が無ければ、Linux マシンで Samba (nmbd) が 動いていないことを意味します。 (14) Linux コンピュータ名での nbtstatWindows マシンのコマンド・プロンプトから以下のコマンドを 実行してください。 <実行例> これに応答が無い場合や「 host not found 」となる場合は、 Linux マシンで Samba が動いていないか、 NetBIOS の名前解決ができていないことを意味しています。 この原因は通常 nmbd にあり、解決するためには 以下のいずれかの方法を用いてください ( どれか 1 つを選んで )。
(15) Window マシンから net view コマンドを実行Windows マシンのコマンド・プロンプトから以下のコマンドを 実行してください。 <実行例> このコマンドを実行すると、Samba サーバで利用できる共有サービスの一覧が
表示されます。 (16) Window マシンから net use コマンドを実行Windows マシンのコマンド・プロンプトから以下のコマンドを 実行してください。 <実行例> パスワードを入力すると「 command completed successfully 」
というメッセージが表示されるはずです。 (17) Linux マシンからnmblookup コマンドを実行Linux マシン上で以下のコマンドを実行してください。 <実行例> TESTGROUP は Linux マシンと Windows マシンが ともに所属しているワークグループ名です。 このコマンドを実行すると、そのワークグループの マスター・ブラウザの IP アドレスが表示されるはずです。 IP アドレスが表示されないときは、マスター・ブラウザの選定過程で 失敗しています。 選定の過程で時間がかかることがあるので、しばらく待ってから 再度実行してみてください。 それでも失敗する場合は、smb.conf のブラウジング・オプションの設定を 確認してください。 「 preferred master = yes 」と指定すれば、 起動時に優先的にマスター・ブラウザになろうとします。 (18) ブラウジング Windows マシンで、ネットワーク・コンピュータを参照してください。
Samba サーバは、Windows マシンと同じローカル・ワークグループ
( もしくは smb.conf で指定したワークグループ ) の中に表示されるはずです。
そして Samba サーバのアイコンをダブルクリックすれば、
共有フォルダが一覧表示されます。 以上の18 項目すべてを試行した上で、それでも問題が解決しない場合は、 Samba パッケージに含まれているほかのドキュメント ( SWAT の表紙 ) も 見てください。 どうしても原因が分からない場合は、日本 Samba ユーザ会のメーリング・リスト (samba-jp) に質問するのもいいでしょう。 メーリング・リストで質問するときは,
などを添付してください。 |