SambaによるWINS及びマスタブラウザ設定
20160112

動作環境
 WindowsXP/7/8.1/10
 CentOS6.x
 CentOS7.x

※誤字脱字の修正などなど
LAN(L2VPN含む)にてWindowsネットワークによるファイル共有を行っている場合に、以下の事象が見られた為に改善する。
尚、Sambaによるファイル共有は行いません。

怪しい挙動について
 1.マイネットワークにてネットワーク上のコンピュータが見えなくなる時がある。
 2.NetBIOS名(「\\PC1\共有資料\支出.txt」等)でアクセス出来なくなる時がある。
  IPアドレス指定(\\192.168.0.2\共有資料\支出.txt」等)での場合は問題なくアクセス可能

これらの問題を解決する為にSambaの機能にてWindowsネットワークを以下のように管理させていきます。
 1.WINSサーバーとして動作させる。
 →WINSサーバーとは「NetBIOS⇔IPアドレス」の名前解決を行う。(DNSのようなもの)
 2.マスタブラウザとして固定する。
 →マスタブラウザとは、マイネットワークに表示されるコンピュータ情報(ブラウズリスト)を管理する代表。
◆まずはSambaのインストール
 [root@Server ~]# yum -y install samba

◆所属しているワークグループとネットワークアドレスの設定
 [root@Server ~]# vi /etc/samba/smb.conf

# ----------------------- Netwrok Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
#
# Interfaces lets you configure Samba to use multiple interfaces
# If you have multiple network interfaces then you can list the ones
# you want to listen on (never omit localhost)
#
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per share option as well
#
; workgroup = MYGROUP
workgroup = WORKGROUP
→環境によってワークグループ名を変更する事。
server string = Samba
→Versionの隠蔽

netbios name = LINUXSERVER
→NetBIOS名(Windowsで設定する場合「コンピュータ名」に該当)を任意に指定。
 指定がなければhostnameで表示されるが、重複してしまう場合等に変更すると良い。(任意)

; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
hosts allow = 127.0.0.1 192.168.0.
→接続を許可するIPアドレス及びネットワークの指定。
問題1を解決する為、Sambaの機能によってWINSサーバーとして動作させましょう。

◆WINSサーバーになるよう設定
 [root@Server ~]# vi /etc/samba/smb.conf
#----------------------------- Name Resolution -------------------------------
# Windows Internet Name Serving Support Section:
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
#
# - WINS Support: Tells the NMBD component of Samba to enable it's WINS Server
#
# - WINS Server: Tells the NMBD components of Samba to be a WINS Client
#
# - WINS Proxy: Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one WINS Server on the network. The default is NO.
#
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups.

; wins support = yes
wins support = yes
→コメントアウト(;)を削除する。

以上でWINSサーバーとして動作する事となりました。
続いてマスタブラウザを固定する為に設定を行います。

◆ドメインマスタブラウザ及びローカルマスタブラウザになるよう設定
 [root@Server ~]# vi /etc/samba/smb.conf

# ----------------------- Domain Controller Options ------------------------
#
# Security must be set to user for domain controllers
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.
#
# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don't use this
# if you already have a Windows NT domain controller doing this job
#
# Domain Logons let Samba be a domain logon server for Windows workstations.
#
# Logon Scrpit let yuou specify a script to be run at login time on the client
# You need to provide it in a share called NETLOGON
#
# Logon Path let you specify where user profiles are stored (UNC path)
#
# Various scripts can be used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
#
; security = user
; passdb backend = tdbsam

; domain master = yes
domain master = yes
→コメントアウト(;)を削除
→ドメインマスタブラウザになるかどうか。

# ----------------------- Browser Control Options ----------------------------
#
# set local master to no if you don't want Samba to become a master
# browser on your network. Otherwise the normal election rules apply
#
# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
#
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
; local master = no
; os level = 33
; preferred master = yes
local master = yes
→コメントアウト(;)を削除し、「yes」に変更
os level = 33
→コメントアウト(;)を削除
→最も値の高いシステムがマスタブラウザに選出されます。
→Windows9x=「1」 WindowsNT/2000/XP/Vista/7=「16」 ドメインコントローラ=「32」
preferred master = yes
→コメントアウト(;)を削除

以上で設定完了
◆Linuxシステムの名前解決にWINSを用いる場合の設定(任意)
 [root@Server ~]# vi /etc/nsswitch.conf
hosts: files dns wins
→winsを追加

 [root@Server ~]# ping コンピュータ名
応答出来るようになります。
◆「/var/log/messages」にログを出力しないようにする。
 [root@Server ~]# vi /etc/rsyslog.conf

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;nmbd.none;smbd.none /var/log/messages

文字部分を追加。
→「/var/log/samba/」以下のファイルに出力されるので、二重に出力しないように変更しています。
→syslogの場合は「rsyslog.conf」から「syslog.conf」に変更して同様に変更可能
◆それでは起動してみましょう。
 [root@Server ~]# systemctl start nmb
NMB サービスを起動中: [ OK ]

 [root@Server ~]# systemctl start smb
SMB サービスを起動中: [ OK ]

 [root@Server ~]# /etc/rc.d/init.d/nmb start ←CentOS7未満の場合
NMB サービスを起動中: [ OK ]

 [root@Server ~]# /etc/rc.d/init.d/smb start ←CentOS7未満の場合
SMB サービスを起動中: [ OK ]
◆マスタブラウザを調査
 [root@Server ~]# nmblookup -M WORKGROUP
querying WORKGROUP on 192.168.0.255
192.168.0.3 WORKGROUP<1d>

「WORKGROUP」は環境によって変更する事。
自身のIPアドレスである事を確認
「name_query failed to find name WORKGROUP#1d」と出た場合は選出中の可能性があるので数分待ちましょう。
◆マスタブラウザを調査2
 [root@Server ~]# nmblookup -S WORKGROUP
Looking up status of 192.168.0.3
..__MSBROWSE__. <01> - H

「MSBROWSE」表記があるシステムがマスタブラウザです。
◆マスタブラウザを調査3(Windowsコマンドプロンプトにて実行)
 C:\Users\ad>nbtstat -a 192.168.0.3
 ..__MSBROWSE__.<01> グループ 登録済

これも同じように「MSBROWSE」となっているシステムがマスタブラウザになります。
◆最後に自動起動するように設定
 [root@Server ~]# systemctl enable nmb
 [root@Server ~]# systemctl enable smb

 [root@Server ~]# chkconfig nmb on ←CentOS7未満の場合
 [root@Server ~]# chkconfig smb on ←CentOS7未満の場合
後はDHCPサーバ(dhcpdやルータ等)にでもWINSのアドレスを配布させましょう。
 OpenVPNにてVPNを構築している場合にも設定が必要となります。詳しくはOpenVPN(ブリッジ)にて

また、Sambaに付いている不要な?機能(プリントサーバー機能等)を切ってしまいましょう。
 例

[global]
printing = bsd
→CUPSに関係するエラー対処の意味も兼ねて追記します。
→エラー「printing/print_cups.c:109(cups_connect)」以下省略

load printers = no
→「yes」から変更

  disable spoolss = yes
→追加

#[printers]
# comment = All Printers
# path = /var/spool/samba
# browseable = no
# guest ok = no
# writable = no
# printable = yes

◇設定例
 [root@Server ~]# testparm -s

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[root]"
Processing section "[Logs]"
Loaded services file OK.
Server role: ROLE_STANDALONE

[global]
netbios name = LINUXSERVER
server string = Samba
log file = /var/log/samba/log.%m
max log size = 50
load printers = No
disable spoolss = Yes
os level = 33
preferred master = Yes
domain master = Yes
wins support = Yes
hosts allow = 127.0.0.1 192.168.0.
printing = bsd
cups options = raw

以上