Smabaのnmbd serviceが動かない

投稿者: | 2016年11月17日

1.問題

Sambaサーバへのアクセスは問題ないですが、なぜかWindowsのネットワークの一覧に表示されなくなった。Linux側でsmbtreeコマンドを使っても結果に出てこない。

2.原因

Sambaサーバのnmbd, smbdサービスのステータスを調べました。原因はnmbdサービスが動いていないからみたいです。

pi@s03:samba $ sudo systemctl status nmbd.service
● nmbd.service - LSB: start Samba NetBIOS nameserver (nmbd)
   Loaded: loaded (/etc/init.d/nmbd)
   Active: active (exited) since Mon 2016-11-14 12:31:07 JST; 4s ago
  Process: 8441 ExecStop=/etc/init.d/nmbd stop (code=exited, status=0/SUCCESS)
  Process: 8451 ExecStart=/etc/init.d/nmbd start (code=exited, status=0/SUCCESS)

Nov 14 12:31:07 s03 nmbd[8451]: Starting NetBIOS name server: nmbd.
Nov 14 12:31:07 s03 systemd[1]: Started LSB: start Samba NetBIOS nameserver (nmbd).

3.解決手順

とりあえずサービス再起動を試したが、サービスを再起動してもActiveのところのexitedがrunningにはならなかった。ステータスから見て何のエラーもなく正常にexitしたように見えますが、やはり動かないのはどこかに問題があるはず。
それでnmbdのmanページから -F -S オプションをつけてコマンドラインから手動で起動すれば詳細が見れるとのこと。

pi@s03:samba $ sudo nmbd -F -S
nmbd version 4.2.10-Debian started.
Copyright Andrew Tridgell and the Samba Team 1992-2014
started asyncdns process 9266
bind failed on port 137 socket_addr = 192.168.10.1
Error = Cannot assign requested address
nmbd_subnetdb:make_subnet()
  Failed to open nmb socket on interface 192.168.10.1 for port 137.  Error was Cannot assign requested address
STATUS=daemon failed to start: NMBD failed when creating subnet lists, error code 13

あれ、192.168.10.1の137ポートを開けようとしている。でもそれはルータのアドレスでSambaサーバに割り当てたアドレスじゃない。
なぜSambaが自分のIPアドレスを間違えたか、何となく心当たりがあった。前にSamba設定ファイルsmb.confに

interfaces = 192.168.10.1/24

どうやらここの192.168.10.1/24は間違いで、正しい書き方は192.168.10.0/24。IPの終わりが0じゃないとnmbdがそれを自身のIPと思ってbindしようとしているようです。192.168.10.0にしたらちゃんと動きました。

4.追記

そもそもinterfaces = 192.168.10.1/24を書いたのはSambaサーバにアクセスできるマシンをLANに制限しておくつもりだった。でもこれが間違いだったと後で気付いた。アクセス制限は

hosts allow = 192.168.10.

とこのように書く。 interfacesはSambaサービスがLISTENするインターフェースを指定するときに使う。NIC一つしかないマシンは指定する意味はあまりない、書かなくても良いと思う。そして、設定ファイルに書いてある説明から、interfaceの指定にIPアドレスではなくNICの名前を書いたほうが良い。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です