「Windowsネットワークのブラウジング問題の解明」 〜見える？見えない？ ネットワークコンピュータの謎 〜

### ●２． トラブル事例と解決の仕方●

ここからは、実際のトラブル事例とそのトラブル解決方法について解説します。
トラブル事例は、すべてのマシン間でIPアドレス指定のPINGは正常に行える状態，同じワークグループ（またはWindowsドメイン）名が前提になっています。 　また、トラブル・シューティング手順や問題解決時に不可欠な、ログのチェックの仕方も解説します。

### ＜2.1 トラブル事例と解決法（1）＞

では，例を挙げてブラウジングに関するトラブルの対処法を説明します。

図4は、Samba マシン（a）をWINS サーバーとPDC に設定しているネットワークです。このとき、（d）のマシンからサーバーが1つも見えないというトラブルに遭ったとします。

図4　トラブル事例(1)

このときに考えられる原因は2つあります。

1. まず、図4の右のセグメントにマスター・ブラウザが存在しない場合
   ルーターによってセグメントが区切られている場合には、各セグメントにマスター・ブラウザが必要です。この場合には、右側のセグメントのいずれかのマシンにMicrosoftネットワーク共有サービスを導入して、マスター・ブラウザを作ります。
2. サブネット・マスクが間違っていてもブラウズできません。
   ブロードキャストが正しく処理されないからだ（UNIX 系はサブネット・マスクを厳密に処理するためです）。例えば、正しいサブネット・マスクが255.255.255.0ならば、すべてのマシンで同じサブネット・マスクになっていることを確認します。

図5の例は、Samba マシン（a）をWINSサーバーとPDCにしています。（d）のマシンで、以前は（a）〜（g）のすべてのサーバーが見えたのに、今は（a）〜（c）のサーバーが見えな場合の例です。

図5　トラブル事例(2)

このときの原因としては、3つ考えられます。

1つ目は、WINSの設定が間違っていることです。（d）〜（g）のいずれかがWINS の設定が誤っていると、DMB（Sambaマシン）にブラウズ・リストが届かず、クライアントからはマシン名が見えなくなります。

2つ目の原因は、Sambaマシン（a）がDMBになっていない場合です。（WINS サーバーはマスター・ブラウザにする必要があります）。Sambaには以下のような設定をします。

wins support=yes domain master=yes prefered master=yes local master=yes os level=65

3つ目の原因は、プロトコル不整合です。NetBEUIやIPXが設定されており、TCP/IPが優先バインドされていないと、このようなことが起こり得ます。この場合は、プロトコルをTCP/IPだけにすると解決します。

図6の例は，Sambaマシン（a）をWINS サーバーにしています。（b）や（d）のマシンから（c）は見えるのに（a）だけが見えないというトラブルに遭ったとします。

図6　トラブル事例(3)

このとき、考えられる原因は2つあります。

まずは、Sambaマシン（a）がDMBになっていないことです（図5のトラブル解決法を参照）。

もう1つの原因は、Windows NT Server（c）がPDCの場合です。このときはNT Serverを必ずWINS サーバーとし、SambaマシンをDMBやWINSサーバーにしてはいけません。

※前述のようにここでは、SambaとNT/2000 Server(PDC)が同じセグメント内で同じドメイン名でSambaをDMBやWINSサーバにしてはいけないということであり、ワークグループ名（Windowsドメイン）名が違う場合は、同じセグメントでもSambaをDMBやWINSにしても構いません。

Samba には以下のような設定をします。

wins support=no wins serve=<NT Server のIP アドレス> domain master=no prefered master=no local master=no os level=0

### ＜2.2 トラブル事例と解決法（2）＞

図7の例では、Sambaマシン（a）をWINSサーバーにしています。このとき、（b）や（d）のマシンで、（a）や（c），（f）のマシンが見えないとします。このときに考えられる原因は3つあります。

図7　トラブル事例(4)

まず、Sambaマシン（a）がDMBになっていない場合です（図5/6 のトラブル例を参照）。

2つ目に考えられる原因は、Sambaマシン（f）がLMBになっていない場合です。その場合、Sambaマシン（f）には以下のように設定します。

wins server = <Samba マシン（a）のIP アドレス> domain master=no prefered master=yes local master=yes os level=65

3つ目の原因は、（c）がマスター・ブラウザになっている場合です。Windows NT/2000 Server をマスター・ブラウザにしないときは「Computer Browser」サービスを停止させます。

図8の例は、セグメントをまたがったワークグループのブラウジングの例です。Sambaマシン（a）をWINSサーバーにしています。（b）や（d）から、（a）や（c），（f）のマシンが見えないとします。

図8　トラブル事例(5)

このとき考えられる原因は、両セグメントに存在するマスター・ブラウザ同士がブラウズ・リストを交換できないことです。従って、両セグメントのスター・ブラウザ同士が交換できるように設定します。ブラウズ・リストを交換できるのは、DMBとLMBの間だけでなので、解決方法は以下の3つの方法があります。

まず、Sambaマシン（a）に、Sambaマシン（f）へアナウンスするよう設定します。

wins support=yes domain master=yes prefered master=yes local master=yes os level=65 remote announce = 192.168.3.255/A （（f）のIPアドレスでもかまいません）

Sambaマシン（f）がLMBになっていないことが原因かも知れません。その場合には、Samba マシン（f）に以下の設定をします。

wins server = <Sambaマシン（a）のIP アドレス> domain master=yes prefered master=yes local master=yes os level=65 remote announce = 192.168.2.255/B （（a）のIP アドレスでもかまいません）

Windows NT Server（c）がマスター・ブラウザになっている場合も、このようなトラブルが生じます。この場合は、「Computer Browser」サービスを停止して、Windows NT Serverをマスター・ブラウザにしないことで対処します。

### ＜2.3 トラブル・シューティング手順とコンピュータ名を見せなくする方法＞

以上をまとめると、ブラウジングに関するトラブル時の手順は以下の通りになります。

1. 「ping IPアドレス」でネットワークに接続できているかどうかを確かめる。
2. 「ping ホスト名」で、WinSockの名前解決ができていることを確認する。
3. 「nbtstat - A IP アドレス」コマンドでSambaが動作していることを確認する。
4. 「nbtstat -a マシン名」でNBTの名前解決ができることを確認する。そして，ローカル・マスター・ブラウザとドメイン・マスター・ブラウザが存在することを確かめる。
5. WINS サーバーが動作していることを確認する。
6. WINS クライアントの設定がすべて同一で正しいことを確認する。

以上のように見えないのがトラブルの場合もあれば、見えてしまっては問題の場合もあります。Windowsのデスクトップにあるネットワーク・コンピュータにサーバー名を見せなくする（ブラウジングできなくする）ことが可能です。

Windows NT/2000 の場合には以下のコマンドを使います。

net config server /hidden:yes :ここで改行

Sambaの場合には以下のように設定します。

[global] browse list = no

Windows 9x/Meの場合はネットワーク共有サービスを組み込まなければブラウジングされません。

### ＜2.4 Sambaのログのチェック＞

システムのさまざまな問題の解決にはログを見ることは欠かせません。もちろん、Sambaの場合も例外ではありません。Sambaのログは、smb.confのlog file パラメータで指定した場所に出力されます。

サンプルとして、log file =/var/log/samba/log.%m が指定されている場合が多いですが，%m は、クライアントごとにログ・ファイルを作成することを意味し、smbdがログ・ファイル書き出しの競合で性能低下が起きるのを予防できます。

debug levelパラメータでログの量を調節できますが、この値を0にすると障害解析は難しくなります。最低でもdebug level=1とすべきです。障害調査時は、debug level=3以上が必要だと思われます。

では、実際の例を見てみましょう。Sambaのsmbdが起動すると、通常図9のようなログが出力されます。open filesやavailableはカーネル・パラメータの値を表示しており、エラーではありません。

    [2000/09/16 01:43:45,  1] smbd/server.c:main （641）
       smbd version 2.0.7-ja-1.3 started.
       Copyright Andrew Tridgell 1992-1998
    [2000/09/16 01:43:45,  1] smbd/files.c:file_init （216）
       file_init: Information only: requested 10000 open
    files,1014 are available.

図9　Sambaのsmbd起動時のログ

ユーザーが接続するとログ・ファイル（log file =/var/log/samba/log.%mと設定してある場合はlog.クライアント名）に図10 のような接続ログが出力されます。同様にnmbdが起動すると図11のようなログが出力されます。

    [2000/09/16 01:48:28 ，1] smbd/service.c:make_
    connection(550)
        eleking (10.66.120.137)connect to service odagiri
    as user odagiri (uid=500,gid=500) (pid 9695)

図10　ユーザーが接続したときのログ

    [2000/09/16 01:43:52 ，1] nmbd/nmbd.c:main (757)
      Netbios nameserver version 2.0.7-ja-1.3 started.
      Copyright Andrew Tridgell 1994-1998

図11　Sambaのnmbd起動時のログ

初心者がよく陥るエラーに図12のようなメッセージがあります。

    [2000/12/04 01:01:58,  0] lib/util_sock.c:open_socket_
    in(824)
      Get_Hostbyname: Unknown host zetton

図12　名前解決ができていないときに出力されるメッセージ

これは自分のホスト名（とそのIP アドレス）が分からないという意味です。DNSの設定が正くない場合に生じます。hostnameコマンドで自分のホスト名を確認し、「ping ホスト名」コマンドで正しく名前解決できていることを確認します。

pingコマンド実行時に、自ホストのIPアドレスが127.0.0.1となるときは、/etc/hostsファイルの設定ミスです。図13 のようにホスト名と外部と通信可能なIPアドレスをマッピングさせます。

ドメイン名（samba.gr.jp）を付けたFQDNも忘れずに指定します。

    (誤った/etc/hosts 設定例：ホスト名がzetton の場合)
    127.0.0.1       zetton localhost.localdomain localhost

    (正しい/etc/hosts設定例)
    127.0.0.1       localhost.localdomain localhost
    10.66.120.136   zetton zetton.samba.gr.jp

図13　/etc/hostsファイルの設定例

ログの内容は英語で書かれており、分かりにくいかもしれませんが、訳せばそのままの意味のものが多いです。例えば図14も英語の通りの意味です。gidが- 2という不正な値のために接続できないことを意味しています。

    [1999/11/01 19:57:18,  0] smbd/uid.c:(105)
      Couldn't set effective gid to -2 currently set to
    (real=0, eff=0)
    [1999/11/01 19:57:18 ，0] smbd/uid.c:(107)
      Looks like your OS doesn't like high gid values -
    try using a different account
    [1999/11/01 19:57:18,  0] smbd/service.c:(463)
      Can't become connected user!

図14　Sambaのログの例
英語で書かれているため、分かりにくいかもしれないが、訳せばそのままの意味のものが多い。

これは、/etc/group や/etc/passwd にある不正なuidやgidを修正することで解決します。ただし、ログの中にはSambaに精通しているユーザーが読んでもさっぱり分からないものも多数存在するのも事実です。自力でソースを読んでも不明な場合は、日本Samba ユーザー会のメーリング・リストなどで議論してみてください。

←前に戻る｜目次