手元の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サーバーだの – が重複して、ごたまぜなのがよくわかる。