週刊これは夢?!

それとも…。
すぐ忘れちゃうので備忘録用ブログ。一応、週1ペースで書くことを、ゆるい目標にしています。

サーバ起動後、sambaにアクセスできない:4:対処法

2015-06-10 | 電脳
サーバ起動後にsambaにアクセスできない件について、対処ができた(と思う)ので報告。
経緯:サーバ起動後、sambaにアクセスできない追記解決(できてなかった)

□症状まとめ
FreeBSD で samba3.6 (現在は、portsの samba36-3.6.25)を利用。
sambaのインストール、起動、接続は問題なく行える。
FreeBSDマシンを再起動した際、/etc/rc.confの samba_enable=YES の設定により、
自動でsambaも起動する。
smbd, nmbdのプロセスは動いているが、windowsから接続しようとすると、
「ローカルデバイス名は既に使用されています」というエラーメッセージが出て接続できない。
# service samba restart
によって、sambaを再起動すると問題なく接続できるようになる。

□問題点と対処法
FreeBSDマシンが起動直後のプロセス中に起動するsambaには接続できない。
その後でsambaを再起動すれば接続できる。

今迄は、根本的な解決策を探していたが、みつけることができなかった。
じゃぁ、マシンを起動した後で再起動すれば良いじゃない。(← ここ)

(1) 普通に samba の設定をする。
(2) /etc/crontab に次の設定をする。

@reboot root /bin/sleep 20; /usr/sbin/service samba restart

"@reboot" はマシンを起動した時。
"root" は権限。
"sleep 20 .... restart" は、20秒待機した後、sambaサービスを再起動。
20秒は適当。マシンによって変更できると思う。

ちなみに、標準出力の処理はしていないので、再起動する度にメールが届く。
知らない間に再起動した時に通知が欲しかったので、このままにしておく。



□以下、試行錯誤の備忘録

マシン再起動後、sambaに接続できないので困る。
(鳥頭なのでsambaを再起動しないといけないことをすぐ忘れる)

日本sambaユーザー会のSambaが動作しないときの診断方法を参考に検証作業を行う。

結論:windowsマシンから名前の解決ができない。
(昔もやったことをすっかり忘れていた。前やった時と同じ結論。)

nmbd のログを確認する。

libsmb/nmblib.c:856(send_udp)
Packet send failed to 192.168.xxx.255(137) ERRNO=No route to host
nmbd/nmbd_packets.c:179(send_netbios_packet)
send_netbios_packet: send_packet() to IP 192.168.xxx.255 port 137 failed
nmbd/nmbd_nameregister.c:522(register_name)
register_name: Failed to send packet trying to register name HOGEHOGE

こんな感じのエラーがでてる。

これまでは根本的な解決策を探していたのだが、長いこと解決できていない。
(1) 以前、inetdを利用すると問題が生じなかった。
(2) service samba restart で接続できるようになる。
(3) nmbd にエラーがでている。

以上から、マシンの起動時にsambaが開始されると、nmbdあたりで不具合が生じている可能性が高いと判断した。
nmbdの問題を解決できれば一番良いが、これの解決法はわからない。
またマシン起動時でなければ、問題は生じない可能性が高い。

そこで、対処法として、(a)マシン起動後のsamba起動を遅らせることを考えた。
自動で開始されるサービスの順番を変更したり遅延させる方法で、簡単にできる方法がよくわからない。

システムが想定しているのは、/etc/rc.confに sambad_enable=yesをする設定。
(a)の場合、このあたりを含めてsambaの起動プロセスに手を加える必要が生じる。
問題は、うまくいってると特別な設定をしたことを忘れること(経験則)。
sambaのバージョンアップなどの際に、思わぬ問題が生じる可能性もある。

そこで、これまで通り(b)マシン起動直後にsambaを起動し、しばらくしてからsambaを再起動する、ということを考えた。
これなら、sambaのインストール・起動・設定についてはこれまでのままで良い。
sambaを再起動する設定を加えるだけでいい。
これなら再起動する、ということ以外の影響はなくなる。

今回はcronに起動時の実行する設定があるため、それを利用することにした。
今のところ、これで上手く動いている。
ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« 2016年のgoogleカレンダー用... | トップ | android の天気アプリ »
最近の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

関連するみんなの記事

トラックバック

この記事のトラックバック  Ping-URL
ブログ作成者から承認されるまでトラックバックは反映されません。
  • 30日以上前の記事に対するトラックバックは受け取らないよう設定されております。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。