browse.dat

8月 8th, 2007 by tsuyoshi Leave a reply »

手元のsamba サーバでは/var/cache/sambaにいろいろなデータが書かれている。
ブラウズリストはbrowse.datにこんなふうにかかれている。

“WORKGROUP”     c0001000   ”MASTER_WINS”   ”WORKGROUP”
“MASTER_WINS”    408d9a03    ”WINS SERVER”   ”WORKGROUP”
“MSHOME”           c0001000    ”HOGEHOGE”      ”MSHOME”
“TS-HTGL356″     40019a03    ”NAS”                ”WORKGROUP”
“PC-12345″         40011003   ”Client PC”         ”WORKGROUP”
“PRT_GOTA_01″    40000202   ”Printer”             ”WORKGROUP”
“NAS-MEGURO”    40809a03   ”Sat-Office NAS”  ”WORKGROUP”

NetBios名、種別、コメント、グループ/ドメイン名となっているらしい。
ドメインそのものであるWORKGROUPとかMSHOMEでは、コメント欄にドメインマスタブラウザのNetBios名が書いてある。

種別はsambaのメーリングリストに情報があった。
各文字列が何を意味するのかは、マイクロソフトのヘルプでも一覧表がある

/* these are used in NetServerEnum to choose what to receive */
#define SV_TYPE_WORKSTATION    0×00000001
#define SV_TYPE_SERVER             0×00000002
#define SV_TYPE_SQLSERVER        0×00000004
#define SV_TYPE_DOMAIN_CTRL     0×00000008

一番下の一桁はネットワーク上での役割を示す。
1ならワークステーション、2ならサーバだ。4ならSQLサーバで、8ならドメインコントローラだ。
上の例ならばPRT_GOTANDA_01の下一桁は2なので、サーバであることがわかる。PC-12345の該当桁は3なので、ワークステーションであり、サーバーでもある、と読み取る。このように役割の数字を足し算していくのだ。
全部やっているホストなら、8+4+2+1=15だが一桁に納めるために16進で示す。15なら、fだ。

#define SV_TYPE_DOMAIN_BAKCTRL   0×00000010
#define SV_TYPE_TIME_SOURCE         0×00000020
#define SV_TYPE_AFP                      0×00000040
#define SV_TYPE_NOVELL                 0×00000080

次の桁は…なんじゃこりゃ? ごたまぜだねぇ。
ドメインバックアップコントローラは、BDCのことだ。タイムソース…マイクロソフト版NTPサービスをやるサーバがあるんだろうね。AFPはApple File Protocolのこと。ノベルはNetWareサーバだろう。

なんとなく、時代を感じる桁である。

#define SV_TYPE_DOMAIN_MEMBER    0×00000100
#define SV_TYPE_PRINTQ_SERVER     0×00000200
#define SV_TYPE_DIALIN_SERVER      0×00000400
#define SV_TYPE_SERVER_UNIX         0×00000800

ドメインメンバーってなんだよ、と思うがLan Managerのメンバーであるかどうかだそうだ。うわぁ。ここにも時代の波が。
プリントキューを持っているサーバであるかどうか、ダイアルインサービスをやっているかどうか - VPN/PPTPはここに含むのかね? - 、Unixサーバであるかどうか。

上記の例ではNASであるTS-HTGL356の該当桁は、”a”だ。8+2なのでUnixサーバであり、プリントキューを持ってる/プリンタ共有サービスが動いているよ、ってことだ。

#define SV_TYPE_NT 0×00001000
#define SV_TYPE_WFW 0×00002000
#define SV_TYPE_SERVER_MFPN 0×00004000
#define SV_TYPE_SERVER_NT 0×00008000

動いているネットワークサービスの種類。
NT、Windows For Workgroup(うはぁ!!)、Microsoft File and Print for NetWare(うわわわわ!!!!!!!!!!)、NT Serverと。
もはや涙なしでは読み解けないよ。「係長!! NetWareにつながらないんですけど!!」とか言われてたなぁ。あのころ。

#define SV_TYPE_POTENTIAL_BROWSER 0×00010000
#define SV_TYPE_BACKUP_BROWSER 0×00020000
#define SV_TYPE_MASTER_BROWSER 0×00040000
#define SV_TYPE_DOMAIN_MASTER 0×00080000

ブラウザがらみの桁。
ブラウザになる可能性があるかどうか、つまりwindowsであればComputer Browserサービスが動いているかどうか。Unixであればnmbdがうごいているかどうか、だ。
バックアップブラウザとして動いているか、ローカルマスターか、ドメインマスターか、とブラウザ関連フラグが続く。
上述の例でいくと、ドメインマスターブラウザであるMASTER_WINSの該当桁は”d”=13なので8+4+1。ドメインマスターで、ローカルマスターで、nmbd動いてますよ、と。

#define SV_TYPE_SERVER_OSF         0×00100000
#define SV_TYPE_SERVER_VMS         0×00200000
#define SV_TYPE_WIN95_PLUS          0×00400000
#define SV_TYPE_DFS                    0×00800000

OSFってのはぐぐってもあんまり説明が見当たらないが…まさか、Open Software Foundationか? 次のVMSはそうすると…VAXでうごくあれか? その次がWIN95の…PLUS? おまけパッケージの? とおもったら95以降かどうかを識別するんだそうだ。

DFSは”分散ファイル共有”だそうで、比較的新しい機能らしい。Samba3.xを入れたサーバでは”8”がついていて、買ってきてそのまま使っているNASでは”0”だというのは、そういうことなんだろう。

#define SV_TYPE_CLUSTER_NT         0×01000000
#define SV_TYPE_TERMINALSERVER  0×02000000
#define SV_TYPE_CLUSTER_VS_NT    0×04000000

この桁の情報は他の部分とは違うところから持ってきてます。つまり、Sambaのソースには入ってないかもしれないってことです。
中身としては「どんなNTサーバ?」ってことですね。

#define SV_TYPE_ALTERNATE_XPORT   0×20000000  
#define SV_TYPE_LOCAL_LIST_ONLY     0×40000000  
#define SV_TYPE_DOMAIN_ENUM          0×80000000

で、先頭の桁。
オルタネートエクスポートはよくわかんない。違うプロトコル間でリストを融通できるか、とかそんなことだと思う。
ローカル/ネットワークセグメント内のホストかどうか、ドメインそのものかどうか、と。

c0001000だとローカルにあるドメインで(物理的実体はないんだけど)NTワークステーションだってことですね。
408d9a03だとローカルにあって分散ファイルサービスができて、ドメインマスターで、ローカルマスターで、nmbd動いてて、NTサーバーかつNTワークステーションで、Unixでプリンタ共有サービスが動いてて、クライアントかつサーバーだってことだ。

なるへそ。
あらためて、WIndowsファイル共有というやつがあちこちの概念 – NetWareだの、OSFだの、サーバーだのNTサーバーだの – が重複して、ごたまぜなのがよくわかる。

Advertisement

コメントをどうぞ