システム奮闘記:その102

Samba4入門 インストールと設定



Tweet

(2014年1月13日に掲載)

はじめに  今回はSamba4の導入経緯とインストール方法と そして簡単にAD(ActiveDirecoty)の説明を書く事にしました。  最初、Samba4をインストールした時は、2013年7月のため Samba-4.0.7のインストールの話になっています。  その後、この編集のために再現実験や検証のため Samba-4.1.3を触っています事から、両方のバージョンでの インストールの話を載せています。

クライアントはHome版からProfessional版へ

 ActiveDirectoryという言葉。 2000年、Microsoftカンファレンスのセミナーで知った。  NTドメインからActiveDirctoryに乗り換えの話が盛んに なりはじめた頃だった。  だが、2000年のマイクロソフトカンファレンスで セミナーを聞いてもチンプンカンプンだったため すっかり寝てしまっていたのだ。(今だから書ける話)  Windowsサーバーを導入する予定はないし、当時は  断固としてWindows導入阻止!  の立場だったので、ActiveDirectoryを勉強する気が起こらなかった。  それに勉強したくてもWindowsサーバーが触れる環境でもなかった。  2003年辺りになって、次の事を言われ始めた。  WindowsXPのPro版だとADが使える  ADは組まないのですか?  ActiveDirectoryと言われても、何なのかわからない。  それにHome版でなくPro版を使う利点が見えていなかったので 勤務先ではHome版しか購入していなかった。  WindowsXPで、Pro版を使う利点が見えない状態が続いたのだが 2009年、転機が訪れた。  シンクライアントの試験導入  だった。  仮想OSに使うWindowsXPがリモートデスクトップで 操作を行う必要性からPro版の必要性を感じた。
Home版とPro版の違い
ActiveDirectoryが使えるかどうか以外に
リモートデスクトップが使えるかどうかもある。

だが、RealVNCを導入していたので遠隔操作には問題なかった。
だいぶ後になり、シンクライアントの試験導入の際
リモートデスクトップの重要性を知った。
詳しくは「システム奮闘記:その78」
(シンクライアントの試験導入)をご覧ください。

 将来、シンクライアントを推進していく場合
Home版が邪魔になる。

 そこで社内でパソコン購入規定を作成する際

 Professional版は絶対条件

 という文言をいれた。

VistaによるHome版撲滅の追い風
WindowsVistaは重くて動きが悪い最悪のOSだ。
だが、Pro版に切り替えるのには追い風になった。

営業所のパソコンの遠隔操作にはRealVNCを使っていたのだが
Vistaに入れてみた所、セキュリティー機能が働くため
よく切断するため、使いものにならなくなった。
リモートデスクトップにならざるえなくなったので
ある意味、Home版撲滅の理由には使えた。


NTドメイン構築

 2006年、ニュースが飛び込んできた。  Samba4の開発開始  だった。  ITmedia (2006年01月27日)の記事。  「Active Directoryに対応した「Samba 4.0」プレビュー版公開」  ActiveDirectoryが無料で構築できる日は近いと思った。  だが、2006年にSamba4.0.0TP1が出たものの開発は 困難を極めていた。  Samba4を出るのを待ってNTドメイン構築を行わない方が良いか 一体、いつ出るのかわからないだけに、NTドメインを構築した方が良いのか 非常に迷う時期が続いた。  ついに痺れを切らした2011年、Samba4の完成を待たずに NTドメインを構築する事に踏み切った。
SambaでPDC構築の話について
その91 SambaでNTドメイン構築
その92 SambaとOpenLDAPの連携でPDC構築

 ところでActiveDirectoryだけでなく、NTドメインに参加させる場合も
クライアントはPro版でなければならない。


 さて、2011年OSC東京・秋のSambaのセミナーで衝撃の話を聞いた。

 Samba4はファイルサーバー機能がない

 だった。
 sambaなのにファイルサーバー機能がない。

 日本Sambaユーザ会公開の資料
オープンソースカンファレンス2011 Tokyo/Springセミナー Samba最新動向&座談会 

 一体、どんな形になるのか不安と興味を覚えたのだが
見守るしかない私。

Samba4のファイルサーバー機能について
Samba4が正式リリースの際は無事、ファイルサーバー機能も
付いていた。大急ぎでSamba3のソースを流用したと思われる。

 Samba4がいつ正式リリースされるのか、どんな形になるのか
首を長くして待っていると、2012年12月、正式リリースの
ニュースが飛び込んできた。

 Active Directoryサーバー機能搭載のOSS Samba 4.0リリース、Microsoftもテストに協力

 なんと

 マイクロソフトが協力していた!

 だった。


 オープンソースとマイクロソフト。
 2000年頃は対立関係にあった。

 特にザビエル頭のバルマーとやらは

 Linuxは癌

 とホザいていた。

ザビエル頭のバルマー
ザビエル頭のマイクロソフトCEOのバルマー

 だが、JWNTUGのOpenTalkで、マイクロソフト日本法人の人との話では
本音はオープンソースの人達との対立を避けたがっていた上
オープンソースに興味のある人もいたりした。(2002年頃の話)


 その後、アメリカのマイクロソフト本社はオープンソースと
敵対しても得しない事から、歩み寄りをみせだした。
 その動きになのか、日本ではマイクロソフトが
オープンソースカンファレンスに参加するようになった。

 そしてオープンソースカンファレンス2012 Cloudでは

 なんとマイクロソフト社で開催された!!

 画期的というのか時代が変わったというのか。


 マイクロソフトのクラウドガールとしてクラウディア姉さんが登場する。
2013年東京・春のオープンソースカンファレンスの懇親会。

 クラウディア姉さん事、戸倉彩さんとツーショット。


クラウディア姉さん(戸倉彩さん)とツーショット
クラウディアさん(戸倉彩さん)とツーショット
ルンルン気分の私。
そして日本人でSamba開発の中心メンバーの
高橋基信さんも右側に写っていた。

 かつては反マイクロソフトを丸出しにしていた私なのだが
今ではすっかり

 マイクロソフトと融和

 している感じだった。


ActiveDirectory

 さて、Samba4が正式にリリースされるし、クラウディア姉さんこと 戸倉彩さんとのツーショットでご機嫌の私。  Samba4の準備のため、ActiveDirectoryの勉強をする事にした。  そこで以下のサイトを参考にする事にした。  にわか管理者のためのActive Directory入門  管理者のためのActive Directory入門:第5回 Active Directoryの導入準備(前編) (1/2)  読みはじめると、CALの略の意味が書いてある。  CALの意味なんて考えた事あらへん!!  だった。  今まで、CALといえばクライアント接続許可で、 何台まで接続可能台数を表すのにCAL5台などは見ていたが  Client Access Licenseの略  だというのは知らなかった。  サーバーからユーザー認証を受けた上でサーバー機能を利用できる クライアントの数がCAL数となる。  Windowsサーバーを使うと、CAL数が増えれば ライセンス費用も上昇するが、Sambaで構築すると 接続クライアント数に関わらず、無料で接続可能なのだ。

ActiveDirectoeryの単位

 NTドメインの場合、ドメインという領域が単位になっている。  ActiveDirectoryの場合、ドメインに加えてフォレストという単位がある。  ここで思った。  カタカナを使うな!!  フォレストは「forest」なので「森」や「森林」の意味だ。  ドメインを木に見立てて、ドメインの集合体が「森」と表現しているようだ。  NTドメインの単位のドメインと、Activedirectoryの単位の ドメインとフォレストの比較を見てみた。
NTドメインの最小単位は「ドメイン」
NTドメインの最小単位は「ドメイン」
PDC(プライマリードメインコントローラー)があり
それが同じドメイン内のパソコンの情報を管理している。

(ドメインの意味)
ドメイン(Domain)は「領域」という意味がある。
そのため管理している範囲という意味で
「ドメイン」という言葉を当てているのだ。

 ActiveDirectoryの場合は、ドメイン以外の単位を持っている

ActiveDirectoryの単位
ActiveDirectoryの単位
Activedirectoryの場合、親ドメインの下に子ドメインが
ぶら下がる階層構造になっている。

ドメインという単位を見る場合もあれば
階層構造の全体を、フォレスト(森)という単位で見る場合もある。

NTドメインとActiveDirectoryの違い

 まずは1人分の個人情報を格納できる量が異なる。
登録できる人数と格納できる1人あたりの情報量の比較
NTドメイン 1人辺り1Kb分の情報量が割り当てられる。
NTドメインが格納できる個人情報量は
上限が40Mbなので、約4万人分の情報が格納できる。
AD 1人あたり4Kbバイトなので、より多くの情報が格納できる。
そして仕様上、全体の上限が16Tbなので
日本人全員を軽く上回る人数分の情報が格納できる。

 人数面で考えた場合、従業員数万人の大企業だとNTドメインでは
ユーザー管理やパソコン管理ができないが、中小企業だと
十分すぎる程ある。


 だが、1人当たりの情報量が4倍違うため
ADの方がより多くの個人情報を格納できるので
企業規模に関らず、ADの方が便利というのだ。


 マスターの複製もある。
 SAMというデータベースの複製なのだが・・・

 SAMって何やねん!

 という事で調べてみると

 Security Account Manager

 なのだ。

SAM(Security Account Manager)とは
WindowsNT/2000サーバーで各ユーザーの情報
すなわち、ファイルやフォルダーへのアクセス権限などの
セキュリティー情報を管理するシステムの事だ。
そのデータベースの事を「SAM」と呼んでいる。

 さて、NTドメインの場合、複製といったら下図の事を意味する

NTドメインの場合の複製
NTドメインの場合の複製
主となるPDC(優先ドメインコントローラー)のデータベースを
予備のBDC(バックアップドメインコントローラー)に複製する事だ。

BDCからPDCへの複製はないのだ。

 ActiveDirectoryの場合、以下のようになった。

Active Directoryの場合の複製
Active Directoryの場合の複製
片方のドメインコントローラーのデータベースが更新されると
整合性を保つため、複製される。

 中小企業には、バックアップ用のドメインコントローラーは
必要はないが、頭に入れて置くのも良いと思う。


 次にOUについて見てみた。
 OUの意味はネットに書いてあった。

 Organization Unit(組織単位)

 の略だ。

 同じドメイン内で組織別に区分けしているというのだ。

OU(組織単位)の概略
Active Directory OU(組織単位)の概略
組織別の括りを作って管理する方法だ。
10人くらいの会社なら組織別の括りは不要でも
ある程度、大きな組織になると、組織別に括った方が
ユーザー管理が行ないやすくなるのだ。

 だが、もっと大きな組織になると、別の形で組織を分けた方が効率的だ。
 そこで親ドメインの下に子ドメインをつける木構造が使われる。

ドメインの木構造の活用
Active Directory ドメインの木構造の活用
親ドメインを本社にして、子ドメインを営業所にする。
上図のように本社を親ドメインにして、神戸支店・大阪支店のように
区分けする事が可能なのだ。

親子ドメインの間には「信頼関係」というものがある。

 ところで・・・

 信頼関係とは何やねん?

 という事で「信頼関係」が何なのか見てみる事にした。

Activedirectoryの信頼関係とは
Activedirectoryの信頼関係とは
KobeドメインがOsakaドメインを信頼する場合を考える。
この時、Kobeドメインから、Osakaドメインへ接続し
Osakaドメインの利用者のアクセス権などが設定できる。

だが、反対にOsakaドメインからはKobeドメインの利用者の
アクセス権などは触れない。

 そこで相互にアクセス権の変更ができるようにするには
相互に信頼関係を構築すれば良いのだ。

相互に信頼関係とは
Activedirectoryで相互に信頼関係を構築
KobeドメインからOsakaドメインの利用者だけでなく
OsakaドメインからKobeドメインの利用者のアクセス権の
設定が可能になる。

 信頼関係がわかった所で、次に進む。

 さて、もっと大きな組織になると、別々のドメインツリー(木構造)同士を
結びつける事ができる。

ドメインツリー同士を結びつける
ドメインツリー同士を結びつける
系列子会社などをつなげる時などに使われるかもしれないし
大企業なら、事業部事にドメインを構築している場合が考えられるため
事業部ドメインの連携にも使われているかもしれない。

 ここまで概略を見ていったが、いまいちピンと来ない。
 自分で触ってみないと、実感として

 Active Directoryが何かわからへん!

 なのだ。
 坐学だけでは理解は難しい。
 だが、ActiveDirectoryを触りたくても、Samba4が公開されたばかりなので
Samba4の書籍は出ていない上、ネット上にインストール方法などがなかった。


 そこで思いついた。
 Windowsの事は、Windowsから学ぶべし。
 なので・・・

 Windows2008R2の評価版をダウンロード

 なのだ。

 そしてCDに焼いた後、Windows2008の評価版をインストールしたのだが

 重たくて動かへん (TT)

 だった。
 そのためActiveDictoryの勉強を諦めることにした。


Samba4のインストール

 2013年7月、Samba4の事を思い出し、ネットで検索すると インストール方法などがネットで書かれていた。  そこでSamba4のインストールに挑戦してみる事にした。 以下の2つのサイトを参考にした。  Samba4でのActive Directory構築  RaspberryPi (Debian) にSAMBA4をインストールする(ActiveDirectoryのDCを構築する)  Samba4 で Active Directory / インストール編 - わたしもやってみた  Samba4のインストールに必要なライブラリまで書いているのが 非常に助かる。  そこでCentOS6.4上で、Samba4をソースコンパイルで インストールしてみる事にした。  まずは展開する。
展開を行なう
[root@samba4]# tar xvfz samba-4.0.7.tar.gz 
samba-4.0.7/.testr.conf
samba-4.0.7/BUILD_SYSTEMS.txt
samba-4.0.7/COPYING

(途中、省略)

samba-4.0.7/source3/include/autoconf/README
samba-4.0.7/examples/VFS/configure
samba-4.0.7/examples/VFS/module_config.h.in
[root@samba4]# 
[root@samba4]# cd samba-4.0.7
[root@samba4]# 
この時のSambaの最新版は4.0.7でした。

 だが、CentOS6.4のインストールの際、Samba4に必要な
各種パッケージソフトを、きちんとインストールしていないとエラーが出る。

 そのためconfigureを行なう際に、こんなエラーが出たりする。

gccの開発環境が入っていない
[root@samba4]# ./configure --enable-debug --enable-selftest
./buildtools/wafsamba/samba_utils.py:397: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5
Checking for program gcc or cc           : not found 
Checking for program icc                 : not found 
Checking for program ICL                 : not found 
Checking for program cc                  : not found 
/usr/local/src/samba-4.0.7/lib/replace/../../buildtools/wafsamba/wscript:210: error: could not configure a c compiler!
[root@samba4]# 
「そんなアホな! gccは初期状態でインストールされて当然やろ」
と思いたくなるエラーなのだが、CentOS6.4のインストールの際
開発環境をインストールしなければ、こんな事になる。

 そのためRPMを使って、gccやglibのインストールが必要になる。

glibc周辺の開発環境のインストール
[root@samba4]# rpm -ihv glibc-devel-2.12-1.107.el6.i686.rpm
警告: glibc-devel-2.12-1.107.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
エラー: 依存性の欠如:
	glibc-headers は glibc-devel-2.12-1.107.el6.i686 に必要とされています
	glibc-headers = 2.12-1.107.el6 は glibc-devel-2.12-1.107.el6.i686 に必要とされています
[root@samba4]# rpm -ihv glibc-headers-2.12-1.107.el6.i686.rpm
警告: glibc-headers-2.12-1.107.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:glibc-headers          ########################################### [100%]
[root@samba4]# rpm -ihv glibc-devel-2.12-1.107.el6.i686.rpm
警告: glibc-devel-2.12-1.107.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:glibc-devel            ########################################### [100%]
[root@samba4]# 
RPMの場合、ライブラリ依存性を確認するため
インストールの際に必要な物がなければ検出してくれる。(赤い部分)

そこで青い部分のヘッダーをインストールしてから
再度、インストールのやりなおしを行なっている(桃色の部分)

 次にgccをインストールする。

gccのインストール
[root@samba4]# rpm -ihv gcc-4.4.7-3.el6.i686.rpm 
警告: gcc-4.4.7-3.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
エラー: 依存性の欠如:
	cloog-ppl >= 0.15 は gcc-4.4.7-3.el6.i686 に必要とされています
[root@samba4]# rpm -ihv cloog-ppl-0.15.7-1.2.el6.i686.rpm 
警告: cloog-ppl-0.15.7-1.2.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
エラー: 依存性の欠如:
	libppl.so.7 は cloog-ppl-0.15.7-1.2.el6.i686 に必要とされています
	libppl_c.so.2 は cloog-ppl-0.15.7-1.2.el6.i686 に必要とされています
[root@samba4]#

 ここでも素直にインストールはさせてもらえそうにない。
 そのため必要なライブラリをインストールしてから
gccをインストールする。

gccのインストール
[root@samba4]# rpm -ihv ppl-0.10.2-11.el6.i686.rpm 
警告: ppl-0.10.2-11.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:ppl                    ########################################### [100%]
[root@samba4]# rpm -ihv cloog-ppl-0.15.7-1.2.el6.i686.rpm 
警告: cloog-ppl-0.15.7-1.2.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:cloog-ppl              ########################################### [100%]
[root@samba4]# rpm -ihv gcc-4.4.7-3.el6.i686.rpm 
警告: gcc-4.4.7-3.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:gcc                    ########################################### [100%]
[root@samba4]# 

 結構、手間だ。


 そしてSamba4のインストールで、configureを行なった際
必要なライブラリがないため、警告が出る事がある。
 だが、configureの処理は進むため、見落としがちになる。


Samba4のコンパイルで、configureの処理過程
[root@samba4]# ./configure --enable-debug --enable-selftest

(途中、省略)


Checking whether ldap_set_rebind_proc takes 3 arguments                                         : ok 
Active Directory support not available: LDAP support ist not available.
Building without Active Directory support.
Checking for pututline                                                                          : ok 

 処理過程の様子を見ると

 ActiveDirectoryが構築できへん

 というのだ。

 OpenLDAP関係のライブラリがない事が原因だ。
 そこで、OpenLDAP関係のライブラリのインストールを行なう。

OpenLdapのライブラリをインストール
[root@samba4]# rpm -ihv openldap-devel-2.4.23-31.el6.i686.rpm 
警告: openldap-devel-2.4.23-31.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
エラー: 依存性の欠如:
	cyrus-sasl-devel >= 2.1 は openldap-devel-2.4.23-31.el6.i686 に必要とされています
[root@samba4]#

 ここでもエラーが出た。
 でも、この程度では何とも思わない私。
 ここでも必要なソフトのインストールを行なう。

OpenLDAPのライブラリのインストール (2)
[root@samba4]# rpm -ihv cyrus-sasl-devel-2.1.23-13.el6_3.1.i686.rpm 
警告: cyrus-sasl-devel-2.1.23-13.el6_3.1.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:cyrus-sasl-devel       ########################################### [100%]
[root@samba4]# rpm -ihv openldap-devel-2.4.23-31.el6.i686.rpm 
警告: openldap-devel-2.4.23-31.el6.i686.rpm: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
準備中...                ########################################### [100%]
   1:openldap-devel         ########################################### [100%]
[root@samba4]# 

 そして、Samba4のconfigureを行なう。

Samba4のconfigureの処理過程
[root@samba4]# ./configure --enable-debug --enable-selftest

(途中、省略)


Checking for ldap_add_result_entry                                                              : ok 
Checking whether ldap_set_rebind_proc takes 3 arguments                                         : ok 
Building with Active Directory support.
Checking for pututline                                                                          : ok 

 OpenLDAPの依存性の部分で問題なく進んでいった。

 configureが終わったので、次にmakeコマンドで
コンパイルを行なう。

makeを行なう
[root@samba4]# make
WAF_MAKE=1 python ./buildtools/bin/waf build
Waf: Entering directory `/usr/local/src/samba-4.0.7/bin'
symlink: tevent.py -> python/tevent.py


(途中、省略)


[3796/3797] Parse::Pidl::NDR.3pm: pidl/lib/Parse/Pidl/NDR.pm -> bin/default/pidl/Parse::Pidl::NDR.3pm
[3797/3797] Parse::Pidl::Wireshark::NDR.3pm: pidl/lib/Parse/Pidl/Wireshark/NDR.pm -> bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm
Waf: Leaving directory `/usr/local/src/samba-4.0.7/bin'
'build' finished successfully (11m40.799s)
[root@samba4]# 

 コンパイルも問題なく終了したので、インストールを行なう。

インストール
[root@samba4]# make install
WAF_MAKE=1 python ./buildtools/bin/waf install
Waf: Entering directory `/usr/local/src/samba-4.0.7/bin'
* creating /usr/local/samba/etc
* creating /usr/local/samba/private

(途中、省略)

* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm
Waf: Leaving directory `/usr/local/src/samba-4.0.7/bin'
'install' finished successfully (3m30.522s)
[root@samba4]# 

 これでインストールは完了だ。

Samba4の内部の概略

 Samba4は、どんな仕組みなのか、概略図を発見する。  CentOS6 Samba4の概要  これを見ても、ActiveDirectoryやWindowsサーバーの知識が 乏しいため、あまりピンと来なかったが、図を見て、多少は理解できた。  Samba4の仕組みだが、Samba3と変更点がある。 LDAPについて  Samba3でNTドメインを組んだ時、ユーザー情報や NTドメインに参加するパソコンの情報を一括管理するため 外部のLDAPを活用していた。  以下のように、OpenLDAPを使って構築していたのだ。
samba3では外部のLDAPを活用
samba3では外部のLDAPを活用
OpenLDAPを活用して、ユーザー情報をSamba外部で保管する事ができる。

 外部のLDAPサーバーを使う利点は、以下の点にあった。

Samba3とOpenLDAPによるユーザー情報の一元管理
Samba3とOpenLDAPによるユーザー情報の一元管理
Windows関係はSamba3を経由してユーザー認証を行ない
Linuxは直接、OpenLDAPに接続して、ユーザー認証を行なう。

 Samba3とOpenLDAPについては「システム奮闘記:その92」をご覧ください。
 PDC構築 Samba3 + OpenLDAP


 だが、Samba4では、ユーザー情報は、内部のLDAPを使う。

Samba4では内蔵のLDAPを使う
Samba4では内蔵のLDAPを使う
Samba4では内蔵のLDAPを使っている。
OpenLDAPといった外部のLDAPも使えるみたいだが
その話は、今回は省略します。


DNSについて


 そしてDNSだが、Samba3の時はDNSとは独立していた。
 だが、Samba4ではDNSと連携している。

 2通りの方法があるというのだ。

Samba4で内蔵DNSを使う場合
Samba4で内蔵DNSを使う場合
Samba4で外部DNSを使う場合
Samba4で外部DNSを使う場合

 だが、概略を見ても、必ずしも内容を理解しているとは限らない。
そのため、Samba4のDNS設定時に七転八倒した話を後述しています。

WINSについて

 マイクロソフトのネットワークではDNS以外にも NetBIOS名の名前解決手段として、WINSがあった。  だが、ActiveDirectoryでの名前解決は全てDNSが行なうため  WINSは不要  になった。  「システム奮闘記:その28」でWINSの話を書いたのだが それが廃止になるので、過去の遺物になってしまう・・・。  (SambaでWINSとマスターブラウザ,PDC構築)  だが、Samba4はWINSもサポートしているので、完全に無駄ではないが・・・

Kerberos認証

 Samba4では認証方法がKerberos認証が使われる。  Kerberosは「ケロベロス」と読む。  ケロベロスとは  ギリシャ神話に出てくる冥界の番犬  なのだ。  そこから派生して認証方法の名前になった。  ちなみに知ったかぶりではありません。  ギリシャ神話の話なら・・・  かじった程度は知っているのらー (^^)
冥府の神・ハデス話は面白い
ギリシャ神話では、天の神のゼウス。海の神のポセイドン。
そして冥府の神のハデスがいる。ハデスは略奪婚が有名だ。

農耕の神・デメテルの娘を略奪して結婚したため、デメテルは
自暴自棄になり職務放棄。そのため下界では農作物が育たなくなった。
そこで協議の結果、デメテルの娘は、1年のうち、一時期だけ
ハデスの所に住む事になった。この時期、デメテルは職務放棄するため
作物が育たなくなる。これが冬になったという話だ。

ちなみに、デメテルを慰めようと、人間の女性がストリップをした。
古事記の天の岩戸伝説で、塞ぎ込んだ天照大神の関心を惹くため
女神によるストリップが行なわれたのだが、それと同じだ。

大昔は、女が女に裸を見せる娯楽があった!

と思ってしまうのだ。

 という感じで、どんどん脱線するので閑話休題。


 ギリシャ神話のケロベロスは、聞きかじった程度は知っているのだが
実際に、Kerberos認証の話となれば・・・

 触った事がないのでチンプンカンプン

 なのだ。

 この時は、Kerberos認証の事を調べずに先に進んだ。
 詳しい事は後述しています。

Samba4の設定

 Samba4のインストールが無事終わった所で設定を行なう。  まずはsamba-toolコマンドを使って初期設定を行なう事にした。  DNSサーバーは、現在、稼働している物を使う事にした。
samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 192.168.X.Y
ここではDNS情報を外部から取得するのか
Samba4の内蔵DNSを使うのか、一切、DNSを使わないのかの選択だ。

だが、この時、DNSとSamba4の関連性を理解していなかったため
どういうわけか、DNSサーバーのIPアドレスを入力してしまった。

Samba4とDNSの関連については後述しています。

 だが、DNSの設定で、誤ってIPアドレスを入力しても、エラーがでなかった。

 そして、パスワードの設定を行なった後、処理が進むのだが・・・

 エラーが出るのら (TT)

 だった。

samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 192.168.X.Y
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
ERROR(exception): uncaught exception - Invalid dns backend: '192.168.X.Y'
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/domain.py", line 398, in run
    use_rfc2307=use_rfc2307, skip_sysvolacl=False)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 2145, in provision
    skip_sysvolacl=skip_sysvolacl)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 1788, in provision_fill
    targetdir=targetdir, site=DEFAULTSITE)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/sambadns.py", line 1006, in setup_ad_dns
    raise Exception("Invalid dns backend: %r" % dns_backend)

[root@samba4]# 

 なんでやね・・・

 と思った。


 そこでネットで書いている設定方法を見てみると
DNSサーバーのIPアドレスを入力するのではなく
名前解決の手法をどうするかの設定である事に気づいた。


 そこでやりなおしをしてみた。
 それでも・・・

 エラーが出る

 だった。

samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.X.Y]: 192.168.X.Y
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
ERROR(ldb): uncaught exception - 0000052D: Constraint violation - check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/domain.py", line 398, in run
    use_rfc2307=use_rfc2307, skip_sysvolacl=False)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 2145, in provision
    skip_sysvolacl=skip_sysvolacl)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 1747, in provision_fill
    next_rid=next_rid, dc_rid=dc_rid)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 1435, in fill_samdb
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/common.py", line 50, in setup_add_ldif
    ldb.add_ldif(data, controls)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/__init__.py", line 224, in add_ldif
    self.add(msg, controls)

[root@samba4]# 
エラー内容で青い部分を見るとパスワードが短すぎる事が指摘された。
 
 要するに

 7文字未満のパスワードは作れない

 のだ。
 そのため、いくら私が「眞鍋かをり」を愛していても

 kaori

 というパスワードにしたくても、7文字に達しないため
エラーが出る。

 そこで別のパスワードを考えてみた。

 眞鍋かをりも好きだが、本命の南沢奈央ちゃんの関する
パスワードにしてみた。

samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.X.Y]: 192.168.X.Y
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
ERROR(ldb): uncaught exception - 0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criteria!
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/domain.py", line 398, in run
    use_rfc2307=use_rfc2307, skip_sysvolacl=False)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 2145, in provision
    skip_sysvolacl=skip_sysvolacl)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 1747, in provision_fill
    next_rid=next_rid, dc_rid=dc_rid)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/__init__.py", line 1435, in fill_samdb
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
  File "/usr/local/samba/lib/python2.6/site-packages/samba/provision/common.py", line 50, in setup_add_ldif
    ldb.add_ldif(data, controls)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/__init__.py", line 224, in add_ldif
    self.add(msg, controls)

[root@samba4]# 
エラー内容で赤い部分を見るとパスワードが簡単すぎると指摘された。

 7文字以上のパスワードでも

 簡単すぎると受け付けてくれへん!!

 のだ。
 そのため、いくら本命の南沢奈央ちゃんの

 minamizawa

 naochan-love

 だと完全にはねられる。
 いくら好きな人の名前をパスワードにしても

 私の愛情表現は却下されるのらー (TT)

 というわけで、複雑なパスワードを考える事にした。

 そういえば、Windows2008R2の評価版をインストールした後、
administratorのパスワード設定の際、パスワードが簡単だと怒られる。

 そこで複雑なパスワードを設定してみる事にした。

samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example    
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.X.Y]: 192.168.X.Y
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=example,DC=co,DC=jp
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        EXAMPLE
DNS Domain:            example.co.jp
DOMAIN SID:            S-1-5-21-1369468931-2664940459-980754913

[root@samba4]# 

 パスワードを複雑にしたおかげで

 無事、設定が終わった!

 のだ。

 まずはSamba4を起動させる。

Samba4の起動
[root@samba4]# /usr/local/samba/sbin/samba
[root@samba4]#
ソースコンパイルで、特にSambaの中核の実行ファイを格納する
ディレクトリ設定をしなければ「/usr/local/samba/sbin」に格納される。

 バージョンを見る。

Sambaコマンドでバージョンを見る
[root@samba4 sbin]# /usr/local/samba/sbin/samba -V
Version 4.0.7
[root@samba4 sbin]#
バージョンが「4.0.7」だとわかる。

 

 そしてネットに書いている通り、意味もわからずに
以下のコマンドを打ってみた。

サーバー上で使用可能な共有リストの確認
[root@samba4]# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.0.7]

	Sharename       Type      Comment
	---------       ----      -------
	netlogon        Disk      
	sysvol          Disk      
	IPC$            IPC       IPC Service (Samba 4.0.7)
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.0.7]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
[root@samba4]# 
インストールを説明しているサイトでは
「サーバー上で使用可能な共有リストの確認」の作業と
書いてあったが、この時点では、チンプンカンプンだった。


 次にKerberos認証が正常に動いているかどうかの確認だ。
 その前に、Samba4で生成されたKerberosのファイルを
所定の位置へコピーする必要がある。

Kerberosのファイルを所定の位置へコピー
root@samba4]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf 
cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? yes
[root@samba4]
初期設定時に/etc/krb5.confが存在する事があるが
上書きして全く問題はない。

 さて、Kerberosが動くかどうか確認する。
 もちろん、本の丸写し。

Kerberosの動作確認
[root@samba4]# kinit administrator@example.co.jp
Password for administrator@example.co.jp: 
kinit: KDC reply did not match expectations while getting initial credentials
[root@samba4]# 

 なんでエラーが出るねん (TT)

 散々、悩んだ挙句、ある事に気がついた。

 ドメイン名を大文字で打たなければならない

 というわけで大文字で打ってみた。

Kerberosの動作確認
[root@samba4]# kinit administrator@EXAMPLE.CO.JP
Password for administrator@EXAMPLE.CO.JP: 
Warning: Your password will expire in 41 days on Thu Jan 23 15:10:57 2014
[root@samba4]# 

 見事、成功!!

 Kerberosの動作確認が取れた。
 だが、この処理が・・・

 何の処理か知らへんかった!

 のだ。
 一体、どういう処理なのかは後述しています。

 ちなみにファイルの中身は以下のようになっている。

krb5.confの中身
[root@samba4]# more krb5.conf 
[libdefaults]
	default_realm = EXAMPLE.CO.JP
	dns_lookup_realm = false
	dns_lookup_kdc = true
[root@samba4]#

 これでSamba4の設定が終わった。


 次にクライアントをSamba4で構築したActiveDirectoryに
参加させてみる。

クライアントをActiveDirectoryに参加させる
クライアントをActiveDirectoryに参加
Samba4の内蔵DNSを使うため、優先DNSサーバーを
Samba4のIPアドレスを割り当てる。

CentOS6系の潜む罠

 CentOS6系でSambaサーバー構築する場合、注意が必要だ。  初期状態で、そのままSamba4を起動させても  Windowsがドメインに参加できへん  という事になる。  実際、WindowsXPをActiveDirectoryに参加させてみると 以下のようになった。
WindowsXPでActivedirectoryに参加
WindowsXPでActivedirectoryに参加


 ドメイン名を入力する。

ドメイン名を入力
WindowsXPでActivedirectoryに参加
ドメイン名は「example」なので、それを入力。

 すると・・・

 こんなエラーが出た!


エラー内容
エラー内容

 エラーの詳細を見てみる。

エラーの詳細
エラーの詳細
DNS検索ができていない感じがした。

 そこでDNS検索をしてみる事にした。

Samba4上でDNS検索をする
[root@samba4]# nslookup
> www.example.co.jp.
Server:		127.0.0.1
Address:	127.0.0.1#53

** server can't find www.example.co.jp.: NXDOMAIN
> exit

[root@samba4]# 
DNSサーバーが機能していないのがわかる。

 だが、なぜDNSサーバーが機能しないのか。
 その原因が何なのか、さっぱりわからない。

 さんざん、悩んだ上、ふと気づいた。

 ファイヤウォールの設定ではないか?

 CentOS6.4の場合、インストール時に初期設定で
ファイヤウォール機能とSELinuxの機能が働く。


 そこでファイヤウォールの状態を見てみる事にした。

ファイヤウォールの状態を見てみる
[root@samba4]# /etc/rc.d/init.d/iptables status
テーブル: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

[root@samba4]# 
青い部分は、他のサーバーに接続した際の応答を受け入れる設定。
赤い部分は、1から4以外のパケットを全て拒否する設定。

  そこでファイヤウォール機能を停止させるため
iptablesコマンドで、ファイヤウォール機能を無効にした。

 iptablesの設定については「システム奮闘記:その21」をご覧ください。
 (ファイヤウォール iptablesの使い方)


 そしてSELinuxを無効化する。
 その時、以下のサイトの内容を丸写しした。
 SELinux、ファイアウォールの状態確認と無効方法

SELinuxの有無の確認
[root@samba4]# getenforce
Enforcing
[root@samba4]# 
SELinuxが有効になっている。

 そこでSELiuxを無効にする事にした。

SELinuxの無効化
[root@samba4]# setenforce 0
[root@samba4]# getenforce
Permissive
[root@samba4]# 
赤い部分は、SELinuxを無効化するコマンド。
青い部分は、状況の確認コマンド。

 あとは起動時にSELinuxを無効化する設定を行なため
/etc/sysconfig/selinuxファイルの記述を以下のように変更する。

初期状態でSELinuxの無効化する設定
設定前の/etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
設定後の/etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disable
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

 CentOS6系の場合、初期状態ではiptablesによるファイヤウォール機能と
SELinuxが有効になっているので、それを解除しないと
折角、Samba4でActiveDirectoryを構築できても、
クライアントであるWindowsがAcivedirectoryに参加できない状態になるのだ。

WindowsXPをSamba4のActiveDirectoryに参加

 iptables(ファイヤウォール)の無効化とSELinuxの無効化を行ない 気を取り直して、再度、WindowsXPをADドメインに参加をしてみる。
WindowsXPでActivedirectoryに参加
WindowsXPでActivedirectoryに参加
「変更(C)」を選ぶ。

 そしてドメイン名を入力する。

ドメイン名を入力
WindowsXPでActivedirectoryに参加
ドメイン名は「example」なので、それを入力。

 ドメイン参加のための認証画面が出てくる。

Activedirectoryへ参加のための認証
WindowsXPでActivedirectoryに参加のための認証
ユーザー名は管理者の「administrator」を入力。
そしてパスワードを入力する。

 Activedirectoryに参加が成功したら以下の画面が出てくる。

成功した時の表示
WindowsXPでActivedirectoryに参加に成功

 そして再起動を促す画面が出てくる。

再起動を促す画面
WindowsXPを再起動を促す画面
ここでWindowsXPを再起動させる。

 ここではWindowsXPでActivedirectoryに参加させてみたが
Windows7でも同じ手順で行なう。


Samba4の遠隔管理ツール

 Samba4をActiveDirectoryサーバーとして運用する時 クライアントのWindowsパソコンからリモート管理できるソフトがある。  それはWindows2003サーバー用の管理ツールだ。  以下のサイトからダウンロードできる。  
WindowsXP用管理ツール  Windows7用管理ツール  Windows2003サーバーを遠隔管理するソフトを使って Samba4の管理を行なうのだから、何とも不思議な感じがする。
RSATについて
Windows2008用の管理ツールのRSATを使う事もできます。
それについては後述しています。


Samba4でのDNS設定について

 ActiveDirectoryでは名前解決のためDNSを使っている。  そのため、Samba4ではDNSと連携しているのだ。  Samba4をインストールした後、設定の際、DNSをどうするかを 尋ねてくる。
samba-toolコマンドを使って初期設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:

 この時、DNSをどうするのか決める必要がある。
 選択肢は4つある。

4つの選択肢
SAMBA_INTERNAL Samba4の内蔵DNSを使う
BIND9_FLATFILE 外部のDNSサーバーを使う
BIND9_DLZ 外部のDNSサーバーを使う
上のBIND9_FLATFILEとの違いは後述しています。
NONE DNSサーバーを使わない

 それぞれの場合を見ていく事にした。

SAMBA_INTERNALの場合

 Samba4の内蔵DNSを活用するのだが、基本的な物しか
ホスト情報が入っていない。
 そのため以下のように他のDNSサーバーに問い合わせる。

DNS検索の問い合わせを転送
DNS検索の問い合わせを転送
Samba内部のDNSに登録がない場合は
問い合わせの転送先として登録している
DNSサーバーへの問い合わせを行なう。

 実際、Samba4の設定の時、以下の設定を行なうのは、そのためだ。

「SAMBA_INTERNAL」の場合、転送先のDNSサーバーを指定する
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: example.co.jp
 Domain [example]: example    
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.X.Y]: 192.168.X.Y
この時の「192.168.X.Y」は/etc/resolv.confに登録している
DNSサーバーで良いのかを尋ねてくる。
転送先のDNSサーバーを指定する。

 そしてActiveDirectoryに参加したクライアントは
DNSサーバーの設定をSambaにするのだが、名前解決の手順は
以下のようになると考えた。

名前解決の手順
名前解決の手順
クライアントの問い合わせで、Samba4に内蔵されている DNSサーバーで対応できない場合は、Samba4で設定した
転送先のDNSサーバーに問い合わせする手順になると考えた。

 実際、高エネルギー加速器研究機構のサイトのDNS検索を行なってみる。

高エネルギー加速器研究機構のサイトのDNS検索は
[root@samba4]# nslookup
> www.kek.jp.
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
www.kek.jp	canonical name = wlb50www.kek.jp.
Name:	wlb50www.kek.jp
Address: 130.87.104.83
>
Samba4の内蔵DNSには登録されていないが
転送先の問い合わせがあるため、該当のIPアドレスが検索できた。

 これで問題なしと思った。
 だが、DNS検索をしてある事に気づいた。

 同じドメイン内のホストの検索ができへん

 だった。

同一ドメイン内のホストのDNS検索の結果
[root@samba4]# nslookup 
> www.example.co.jp.
Server:		127.0.0.1
Address:	127.0.0.1#53

** server can't find www.example.co.jp.: NXDOMAIN
>
「そんなホストは、あらへん!」という回答だ。

 一体、どういう事なのか。
 考えた末、ある事に気づいた。

 Samba4内蔵のDNSは同一ドメイン内を全て管理

 なのだ。
 図式化すると以下のようになる。

Samba4内蔵のDNSは同一ドメイン内を全て管理
Samba4内蔵のDNSは同一ドメイン内を全て管理
同一ドメイン内では、Samba4の内蔵DNSが名前解決しようとする。

 そのため、同一ドメインで、Samba4のDNSに登録されていない
ホスト名の名前解決した場合、以下のようになる。

こんな風になる
同一ドメインで、Samba4のDNSに登録されていないホスト名の名前解決した場合
Samba4内蔵のDNSサーバーに登録されていない場合
問い合わせが転送されずに回答してしまう。

 そのためSamba4の内部DNSは、同一ドメインのホスト情報を
全て登録しておく必要がある。


 Samba4の内蔵DNSの設定だが、Windows2003サーバーの
遠隔管理ソフトを使えば、簡単に設定ができる。

管理ツールでDNSの設定
管理ツールでDNSの設定
接続先として、DNSサーバーである、Samba4のIPアドレスを入力。

 そしてDNSの設定画面が出てくる。

DNSの設定画面
DNSの設定画面

 DNSの正引きの設定画面を開く。

DNSの正引きの設定画面
DNSの正引きの設定画面
ここを触れば、正引きの設定ができる。
BINDの設定ファイルを触らなくても、遠隔地からでも
GUI上で設定できるので、便利だと思う。

 Samba4の設定で、Samba4の内蔵DNSを使う場合は
小規模のシステムが向いていると思った。


BIND9_FLATFILEの場合  これは外部のDNSを活用する場合の設定なのだが 次に説明するBIND9_DLZも、外部のDNSを活用する。  BIND9_DLZとの違いは何やねん?  なのだ。  色々、調べてみたのだが・・・  違いが書いているサイトが見つからへん!  だった。  色々、調べても見つからないので、そんな事ばかりしても 時間の無駄なので、わからんままだが、とりあえず設定してみる事にした。
Samba4の設定におけるDNSの指定
[root@samba4]# /usr/local/samba/bin/samba-tool domain provision
Realm [EXAMPLE.CO.JP]: EXAMPLE.CO.JP
 Domain [EXAMPLE]: EXAMPLE
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_FLATFILE


 samba-toolを使った設定が終わると、privateディレクトリに
Samba4用のDNSの設定ファイルが生成される。

samba-toolで設定した時の様子
[root@samba4]# /usr/local/samba/bin/samba-tool domain provision
Realm [EXAMPLE.CO.JP]: EXAMPLE.CO.JP
 Domain [EXAMPLE]: EXAMPLE
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_FLATFILE


(途中、省略)


The zone reload and thaw was successful.
See /usr/local/samba/private/named.conf for an example configuration include file for BIND
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        EXAMPLE
DNS Domain:            example.co.jp
DOMAIN SID:            S-1-5-21-3914795830-3071257242-1407501996

[root@samba4]# 

 実際にどんなファイルが生成されたのか見てみる。

/usr/local/samba/privateを見てみる
[root@samba4]# ls
dns              idmap.ldb          named.txt      secrets.keytab  spn_update_list
dns.keytab       krb5.conf          privilege.ldb  secrets.ldb     tls
dns_update_list  named.conf         sam.ldb        secrets.tdb
hklm.ldb         named.conf.update  sam.ldb.d      share.ldb
[root@samba4]# 
生成されたBIND関連のファイルがあった。

 BINDとの連携方法を記述しているnamed.txtの中身を見てみる。

named.txtの中身を見てみる
#
# Steps for BIND 9.8.x and 9.9.x -----------------------------------------
#

# 1. Insert following lines into the options {} section of your named.conf 
#    file:
tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";

#
# Common Steps for BIND 9.x.x --------------------------------------------
#

# 2. Set appropriate ownership and permissions on the dns.keytab file.  
#    Note that the most distributions have BIND configured to run under a 
#    non-root user account.  For example, Fedora 9 runs BIND as the user 
#    "named" once the daemon relinquishes its rights.  Therefore, the file 
#    dns.keytab must be readable by the user that BIND run as.  If BIND 
#    is running as a non-root user, the "dns.keytab" file must have its 
#    permissions altered to allow the daemon to read it.  Under Fedora 9, 
#    execute the following commands:
chgrp named /usr/local/samba/private/dns.keytab
chmod g+r /usr/local/samba/private/dns.keytab

# 3. Ensure the BIND zone file(s) that will be dynamically updated are in 
#    a directory where the BIND daemon can write.  When BIND performs 
#    dynamic updates, it not only needs to update the zone file itself but 
#    it must also create a journal (.jnl) file to track the dynamic updates 
#    as they occur.  Under Fedora 9, the /var/named directory can not be 
#    written to by the "named" user.  However, the directory /var/named/dynamic 
#    directory does provide write access.  Therefore the zone files were 
#    placed under the /var/named/dynamic directory.  The file directives in 
#    both example zone statements at the beginning of this file were changed 
#    by prepending the directory "dynamic/".

# 4. If SELinux is enabled, ensure that all files have the appropriate 
#    SELinux file contexts.  The dns.keytab file must be accessible by the 
#    BIND daemon and should have a SELinux type of named_conf_t.  This can be 
#    set with the following command:
chcon -t named_conf_t /usr/local/samba/private/dns.keytab
1番目、2番目の色を塗った部分だけを行なう。

3番目はダイナミックDNSなので、うちの会社では行なっていないし
4番目はSELinuxを導入している場合なので、うちの会社は行なっていないので
3と4の設定は行なわなかった。

 という事で、実際に、BINDの設定ファイルである
named.confファイルに追加を行なう。

named.confのoption部分に以下の行を追加する
options {
	listen-on port 53 { 192.168.X.Y; 127.0.0.1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

        tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
};
赤い部分が追加した所。

 そして正引き部分の設定に以下の追加を行なう。

named.confの正引き部分に以下を追加する
        zone "example.co.jp" IN {
        type master;
        file "example.co.jp.db";

	allow-transfer { none; };
	notify no;

        include "/usr/local/samba/private/named.conf.update";
        };

赤い部分が追加した物。
本来なら、もう1つ別の記述も必要なのだが
それは後述しています。


named.confに以下の行を追加する
        #allow-update { none; };
	update-policy {
		grant *.CO.JP wildcard *.168.192.in-addr.arpa. PTR;
	};

 実際に稼働するかどうか確かめてみるのだが・・・

 SRVレコード検索ができへん!

SRVレコード検索ができなかった様子
[root@samba4]# host -t SRV _ldap._tcp.example.co.jp.
Host _ldap._tcp.example.co.jp. not found: 3(NXDOMAIN)
[root@samba4]# 

 なぜダメなのかが、わからない。
 だが、色々、触っているうちに、あるファイルを発見した。

 /usr/local/samba/private/dns ディレクトリのファイルだ。

/usr/local/samba/private/dnsディレクトリ
[root@samba4]# ls
example.co.jp.zone
[root@samba4]#
正引き用のファイルとして、Samba4の設定時に生成されるファイルだ。

 そこでexample.co.jp.zoneファイルの中身を見てみる。

example.co.jp.zoneファイルの中身
; -*- zone -*-
; generated by provision.pl
$ORIGIN example.co.jp.
$TTL 1W
@               IN SOA  samba4   hostmaster (
                                2013082816   ; serial
                                2D              ; refresh
                                4H              ; retry
                                6W              ; expiry
                                1W )            ; minimum
			IN NS	samba4

            IN A    192.168.X.Y
;

samba4        IN A    192.168.X.Y
gc._msdcs               IN A    192.168.X.Y
gc._msdcs               IN CNAME    samba4

309f549a-f604-4bb3-959a-7c9000f53a35._msdcs	IN CNAME	samba4
;
; global catalog servers
_gc._tcp		IN SRV 0 100 3268	samba4
_gc._tcp.Default-First-Site-Name._sites	IN SRV 0 100 3268	samba4
_ldap._tcp.gc._msdcs	IN SRV 0 100 3268	samba4
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs	IN SRV 0 100 3268 samba4
;
; ldap servers
_ldap._tcp		IN SRV 0 100 389	samba4
_ldap._tcp.dc._msdcs	IN SRV 0 100 389	samba4
_ldap._tcp.pdc._msdcs	IN SRV 0 100 389	samba4
_ldap._tcp.f5f45a21-9a12-47ed-877b-5d6c92080d7e.domains._msdcs		IN SRV 0 100 389 samba4
_ldap._tcp.Default-First-Site-Name._sites		IN SRV 0 100 389 samba4
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs	IN SRV 0 100 389 samba4
;
; krb5 servers
_kerberos._tcp		IN SRV 0 100 88		samba4
_kerberos._tcp.dc._msdcs	IN SRV 0 100 88	samba4
_kerberos._tcp.Default-First-Site-Name._sites	IN SRV 0 100 88	samba4
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs	IN SRV 0 100 88 samba4
_kerberos._udp		IN SRV 0 100 88		samba4
; MIT kpasswd likes to lookup this name on password change
_kerberos-master._tcp		IN SRV 0 100 88		samba4
_kerberos-master._udp		IN SRV 0 100 88		samba4
;
; kpasswd
_kpasswd._tcp		IN SRV 0 100 464	samba4
_kpasswd._udp		IN SRV 0 100 464 	samba4
;
; heimdal 'find realm for host' hack
_kerberos		IN TXT	EXAMPLE.CO.JP

 このファイルを正引き用のファイルとして使う必要がある。
 そこでnamed.confファイルに反映させるため、
以下の記述をする。

named.confの正引き部分に以下を追加する
        zone "example.co.jp" IN {
        type master;
#        file "example.co.jp.db";
        file "/usr/local/samba/private/dns/example.co.jp.zone";

	allow-transfer { none; };
	notify no;

        include "/usr/local/samba/private/named.conf.update";
        };

青い部分は、Samba4が生成した正引き用ファイルを反映させる所だ。
今まであった正引きファイルを無効にしておいた。

 そしてBINDを起動させてみるのだが、今度は・・・

 起動せぇへん (TT)

 そこで原因を調べるため、ログを見る事にした。

/var/log/messagesの中身(抜粋)
Dec 26 18:33:55 cent5 named[28167]: /usr/local/samba/private/dns/example.co.jp.zone:17: gc._msdcs.example.co.jp: bad owner name (check-names)
エラーの内容は、Samba4で生成したファイルの17行目が問題だという。

 そこで該当のファイルの17行目を見てみる。

example.co.jp.zoneファイルの中身
; -*- zone -*-
; generated by provision.pl
$ORIGIN example.co.jp.
$TTL 1W
@               IN SOA  samba4   hostmaster (
                                2013082816   ; serial
                                2D              ; refresh
                                4H              ; retry
                                6W              ; expiry
                                1W )            ; minimum
			IN NS	samba4

            IN A    192.168.X.Y
;

samba4        IN A    192.168.X.Y
gc._msdcs               IN A    192.168.X.Y
gc._msdcs               IN CNAME    samba4

309f549a-f604-4bb3-959a-7c9000f53a35._msdcs	IN CNAME	samba4
;
; global catalog servers
_gc._tcp		IN SRV 0 100 3268	samba4
_gc._tcp.Default-First-Site-Name._sites	IN SRV 0 100 3268	samba4
_ldap._tcp.gc._msdcs	IN SRV 0 100 3268	samba4
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs	IN SRV 0 100 3268 samba4
;
; ldap servers
_ldap._tcp		IN SRV 0 100 389	samba4
_ldap._tcp.dc._msdcs	IN SRV 0 100 389	samba4
_ldap._tcp.pdc._msdcs	IN SRV 0 100 389	samba4
_ldap._tcp.f5f45a21-9a12-47ed-877b-5d6c92080d7e.domains._msdcs		IN SRV 0 100 389 samba4
_ldap._tcp.Default-First-Site-Name._sites		IN SRV 0 100 389 samba4
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs	IN SRV 0 100 389 samba4
;
; krb5 servers
_kerberos._tcp		IN SRV 0 100 88		samba4
_kerberos._tcp.dc._msdcs	IN SRV 0 100 88	samba4
_kerberos._tcp.Default-First-Site-Name._sites	IN SRV 0 100 88	samba4
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs	IN SRV 0 100 88 samba4
_kerberos._udp		IN SRV 0 100 88		samba4
; MIT kpasswd likes to lookup this name on password change
_kerberos-master._tcp		IN SRV 0 100 88		samba4
_kerberos-master._udp		IN SRV 0 100 88		samba4
;
; kpasswd
_kpasswd._tcp		IN SRV 0 100 464	samba4
_kpasswd._udp		IN SRV 0 100 464 	samba4
;
; heimdal 'find realm for host' hack
_kerberos		IN TXT	EXAMPLE.CO.JP
青い部分がエラーになった所だ。

 なぜエラーが出るのか、わからない。
 こんな時は、とりあえず青い部分を無効にした。

ファイルの書き換え作業
書き換え間
samba4        IN A    192.168.X.Y
gc._msdcs               IN A    192.168.X.Y
gc._msdcs               IN CNAME    samba4
書き換え後
samba4        IN A    192.168.X.Y
#gc._msdcs               IN A    192.168.X.Y
gc._msdcs               IN CNAME    samba4


 再度、BINDを起動させてみる。すると・・・

 BINDが起動した!

 そこでSRVレコードを検索してみた。

SRVレコードを検索
[root@samba4]# host -t SRV _ldap._tcp.example.co.jp
_ldap._tcp.example.co.jp has SRV record 0 100 389 samba4.example.co.jp.
[root@samba4]# 

 問題なくできた!


 さて、DNSサーバーの設定もできた。
 Activedirectoryに参加したWindowsXPのマシンから
管理ツールを使ってDNSの設定ができないかと試してみた。

 だが・・・

 接続できへん!!

 だった。

Windows2003の管理ツールでDNS設定ができない
Windows2003の管理ツールでDNS設定ができない
DNSサーバーに接続できないと表示される。

 一体、原因はどこにあるのか。
 色々、調べてみるうちに、あの事を知る。

 rndcデーモンが原因では?

 だが、rndcデーモン周辺を触ったりしたのだが

 それでも・・・

 管理ツールでDNSの設定ができへん

 あとでわかった話。
 「BIND9_FLATFILE」の設定では、管理ツールが使えないのだ。
 直接、BINDのファイルを書き換える必要があるのだ。


 ところで、まだ、この時点では、BIND9_DLZとの違いは、わからなかった。


BIND9_DLZの場合  こちらも、わからないが、悩んでいても仕方がないので  とりあえず、設定してしまえ!  で設定してみる事にした。  Samba4の設定を行なう。
samba-toolで設定
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: EXAMPLE.CO.JP
 Domain [EXAMPLE]: EXAMPLE
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=example,DC=co,DC=jp
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /usr/local/samba/private/named.conf for an example configuration include file for BIND
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        EXAMPLE
DNS Domain:            example.co.jp
DOMAIN SID:            S-1-5-21-4268047112-2932975829-3954046480

[root@samba4]#

 エラーもなく設定が完了した。
 さて、どんなファイルが生成されたのか見てみる事にした。

/usr/local/samba/privateを見てみる
[root@samba4]# ls
dns              idmap.ldb   privilege.ldb   secrets.ldb      tls
dns.keytab       krb5.conf   sam.ldb         secrets.tdb
dns_update_list  named.conf  sam.ldb.d       share.ldb
hklm.ldb         named.txt   secrets.keytab  spn_update_list
[root@samba4]#
BINDの設定方法を説明している「named.txt」を見てみる

 named.txtのファイルの中身を見てみる。

named.txtの中身
# Additional informations for DNS setup using BIND

# If you are running a capable version of BIND and you wish to support
# secure GSS-TSIG updates, you must make the following configuration
# changes:

#
# Steps for BIND 9.8.x and 9.9.x -----------------------------------------
#

# 1. Insert following lines into the options {} section of your named.conf 
#    file:
tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";

#
# Common Steps for BIND 9.x.x --------------------------------------------
#

# 2. Set appropriate ownership and permissions on the dns.keytab file.  
#    Note that the most distributions have BIND configured to run under a 
#    non-root user account.  For example, Fedora 9 runs BIND as the user 
#    "named" once the daemon relinquishes its rights.  Therefore, the file 
#    dns.keytab must be readable by the user that BIND run as.  If BIND 
#    is running as a non-root user, the "dns.keytab" file must have its 
#    permissions altered to allow the daemon to read it.  Under Fedora 9, 
#    execute the following commands:
chgrp named /usr/local/samba/private/dns.keytab
chmod g+r /usr/local/samba/private/dns.keytab

# 3. Ensure the BIND zone file(s) that will be dynamically updated are in 
#    a directory where the BIND daemon can write.  When BIND performs 
#    dynamic updates, it not only needs to update the zone file itself but 
#    it must also create a journal (.jnl) file to track the dynamic updates 
#    as they occur.  Under Fedora 9, the /var/named directory can not be 
#    written to by the "named" user.  However, the directory /var/named/dynamic 
#    directory does provide write access.  Therefore the zone files were 
#    placed under the /var/named/dynamic directory.  The file directives in 
#    both example zone statements at the beginning of this file were changed 
#    by prepending the directory "dynamic/".

# 4. If SELinux is enabled, ensure that all files have the appropriate 
#    SELinux file contexts.  The dns.keytab file must be accessible by the 
#    BIND daemon and should have a SELinux type of named_conf_t.  This can be 
#    set with the following command:
chcon -t named_conf_t /usr/local/samba/private/dns.keytab
赤い部分は、BINDのnamed.confファイルへの記述部分。
青い部分は、Samba4の設定時に生成されたファイルの
所有者やグループ名、権限の変更。
ピンクの部分はSELinuxに関連するが、私は使っていないので省略

 そして次に生成されたnamed.confの中身を見てみる事にした。

/usr/local/samba/privateを見てみる
[root@samba4]# ls
dns              idmap.ldb   privilege.ldb   secrets.ldb      tls
dns.keytab       krb5.conf   sam.ldb         secrets.tdb
dns_update_list  named.conf  sam.ldb.d       share.ldb
hklm.ldb         named.txt   secrets.keytab  spn_update_list
[root@samba4]#
named.confを見てみる

 named.confの中身が、BIND9_FLATFILEの時の
生成内容との違いがあるのか見てみる事にした。

生成されたnamed.confの中身
# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include "/usr/local/samba/private/named.conf"

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz "AD DNS Zone" {
    # For BIND 9.8.0
    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";

    # For BIND 9.9.0
    # database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
};
BIND9_FLATFILEの時に生成された内容とは大きく異なる。
これを、BINDで使っている、named.confファイルに書き込めば良いのだ。

 そしてnamed.confを以下のように記述する。

named.confの記述
options {
	listen-on port 53 { 192.168.X.Y; 127.0.0.1; };
	#listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	allow-query     { any; };
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

        tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";

};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
	type hint;
	file "named.ca";
};

dlz "AD DNS Zone" {
    # For BIND 9.8.0
#    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";

    # For BIND 9.9.0
    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
};


include "/etc/rndc.key";
BIND9.9を使った。
実験として即席DNSで作っているため
セキュリティーを考慮した設定をしていませんので
決して、ツッコミをしないでください (^^)

 そしてBINDを起動させる。
 無事、起動しているかどうか確認してみる。

DNS検索をしてみる
[root@samba4]# host -t SRV _ldap._tcp.example.co.jp
_ldap._tcp.example.co.jp has SRV record 0 100 389 samba4dns.example.co.jp.
[root@samba4]# 
DNS検索ができているのが確認できた。

 この状態だとSambaに関するDNS情報は含まれているが
各種ホスト名は登録しなければならない。


 そこでWindowsサーバー管理ツールでDNS設定を行なってみる。

 問題なく設定できるやん!

DNSの設定画面
DNSの設定画面

 さて、BIND9_DLZを採用する際の注意点だが、Berkeley DBが
インストールされているのが前提だ。

BerkeleyDBの確認(CentOS5.10)
[root@samba4]# rpm -iq db4
Name        : db4                          Relocations: (not relocatable)
Version     : 4.3.29                            Vendor: CentOS
Release     : 10.el5_5.2                    Build Date: 2010年07月13日 01時11分25秒
Install Date: 2013年12月19日 15時13分20秒      Build Host: builder17.centos.org
Group       : System Environment/Libraries   Source RPM: db4-4.3.29-10.el5_5.2.src.rpm
Size        : 2125602                          License: GPL
Signature   : DSA/SHA1, 2010年07月15日 07時26分01秒, Key ID a8a447dce8562897
URL         : http://www.sleepycat.com/
Summary     : C 用の Berkeley DB データベースライブラリ (バージョン 4)
Description :
Berkeley Database (Berkeley DB) は、プログラム可能なツールキットで、
従来のアプリケーションとクライアント/サーバーアプリケーションの両方に対し、
組込みデータベースを提供します。  Berkeley DB には、B+tree、
拡張線形ハッシュ、固定長、および可変長レコードのアクセスメソッドと
トランザクションが収録されており、ロック、ログ作成、共有メモリのキャッシング、
データベースの復旧を行います。 Berkeley DB は、C、C++、Java、Perl API を
サポートしています。  このデータベースは、Python や Perl などの多数の
アプリケーションで使用されているため、すべてのシステムにインストールする
必要があります。
[root@samba4]# 

 そして、BINDをソースコンパイルする際は
Berkeley DBが使えるよう、configureの際の
以下のオプションをつける必要がある。

BINDコンパイルの際、configureに必要なオプション
configure --sysconfdir=/etc --localstatedir=/var --with-dlz-bdb 
赤い部分が必須のオプションになる。


DNSの指定は何がお薦めか?  Samba4とDNSとの連携で3つの方法がある事を紹介した。  では、3つのうち、どれが良いのか。  用途によって、どれが良いかが決まるのが結論だ。
3つの選択肢
SAMBA_INTERNAL Windowsの管理ツールから
手軽にDNS登録ができる。
小規模向け。
BIND9_FLATFILE 中規模・大規模向けだが
DNS設定はDNSサーバーの設定ファイルを触るため
BINDの設定を知らない人には不向き。
BIND9_DLZ 中規模・大規模向けだ。
Windows管理ツールでもDNSの設定が可能だ。
でも、大量に登録する際は、コピペが使えないので
結構、手間かもしれない。

 実は、この区分けは日本Sambaユーザ会公開の資料に載っていたのだ。
 オープンソースカンファレンス2011 Tokyo/Springセミナー Samba最新動向&座談会 

 資料を見ただけでは、わからない。
 やっぱり自分で確かめないと気がすまないのだ。

 ちなみに、うちの会社は

 「BIND9_FLATFILE」を採用

 したのだ。

 BINDをテキストファイルの方が見やすいし
emacsやviで変更できるので、妙な安心感がある。

DNS SRVレコード

 Samba4を使う際、DNSの設定箇所でSRVレコードの設定があった。  SRVって何やねん?  そこで調べてみる事にした。  日経ITPro SRVレコード  SRVの略は  Service Resource Record  だった。  そして  MXレコードを任意のサービス向けに一般化した物  と説明が書いているのだが、それだけだと・・・  だから何やねん!  なのだ。  そこで調べてみる事にした。  DNS SRV レコードの作成と確認(TechNet)  DNSの設定で、サービスとポート番号の指定ができるようだ。  Linux(UNIX)の /etc/services ファイルと同じ役目をしている感じだ。  DNSでポート番号の指定ができるとは知らなかった。  他のサイトも見つけた。  実用 BIND 9で作るDNSサーバ(14):DNSの拡張仕様、SRVレコードとENUM    DNSの拡張仕様だ。  これで意味がわかってきた。  図式化すると以下にようになる。
メール配信する際の問題点
メール配信する際の問題点
メールアドレスの場合、ホスト名を抜いたドメイン部分のみの場合が多い。
もし、複数台のマシンがある場合、「maori」(眞鍋かをり)に送るべきなのか
「mao」(南沢奈央)に送るべきなのか、「mayumi」(小野真弓)に送るべきなのか
判断が付かない。

 そこでMXレコードが役に立つ。

MXレコードの役目
DNSにおけるMXレコードの役目
DNSのMXレコードを記述していれば、kaoriに配信すれば良い事がわかる。

 MXレコードを使ったDNS検索の結果、以下のように
無事、メールが配信できるのだ。

メールは無事、配信できる
メールは無事、配信できる
MXレコードのお蔭でメールは配信できる。

 MXレコードを応用した形で、サービス名で問い合わせた場合
該当のサーバーのIPアドレスと、ポート番号が返答するための設定が
SRVレコードになる。

SRVレコード
SRVレコードは、MXレコードを応用した物
サービス名を問い合わせると、サービスを提供するサーバーの
IPアドレスと、ポート番号が返ってくるのだ。

 BINDの正引きファイルにおける、SRVレコードの記述方法は
以下のようになる。

BINDの正引きファイルにおける、SRVレコードの記述方法
; ldap servers
_ldap._tcp		IN SRV 0 100 389	samba4
サービス名(LDAP)、プロトコル名(TCP)、IN、SRVの後に
優先度、ウエイト(正直、よくわからないが)、ポート番号の順だ。

 ウエイトとは何やねん!

 なのだが、別の機会で取り上げたいと思います。

Kerberos認証

 Kerberos認証が何なのか、わからずに使うと 認証時の不具合が生じても対応できない。  そこで概略だけでも知ろうと、Kerberos認証の仕組みを調べてみたら 以下のサイトを発見した。  情報セキュリティ入門 ケルベロス認証 (日経ITPro)  Active Directoryの認証の仕組み(CodeZine)  Kerberos認証の仕組みは以下の通りになる。
Kerberos認証を導入しない場合
Kerberos認証を導入していない場合、複数のサーバーに接続するには個々に認証を行なう必要がある
クライアントは個々のサーバーに対して認証を行なう。
そして、一度、接続を切った場合、再度、接続を行なう場合は
再度、認証が必要になる。

 結構、これは手間になる。
 それを解消するのに、Kerberos認証が使われる。

 まずはKerberos認証を導入した際のサーバー、クライアントの
構成を知る必要がある。

Kerberosを導入した時の構成図
Kerberosを導入した時の構成図
水色の領域はレルム(realm)と呼ばれ、Kerberos認証を行なう
サーバー、クライアント全体だ。

黄色の領域には、認証サーバーとチケット発行サーバーがある。
この2つのサーバーをKDCと呼ぶ。
認証サーバーは(AS:Authentication Server)と呼ぶ。
チケット発行サーバーは(TGS:Ticket Granting Server)と呼ぶ

KDCが認証するサーバー、クライアントをプリンシパル(principal)と呼ぶ

 ところで・・・

 レルム(realm)って何やねん?

 英単語を調べたら

 領域、範囲、分野、部門

 の意味だった。


 そして・・・

 プリンシパル(principal)とは何やねん?

 だ。
 「主な」や「重要な」という意味があるのだが、英単語の意味を調べてみた。

 主役、部門長の意味がある

 だった。形容詞だけと思っていたら、名詞の意味もあった。

 だが、KDCが認証するサーバーとクライアントをプリンシパルと呼ぶが

 どういう関連づけなのか、わからへん!!

 なのだ。


 わからんと悩んでも前に進まないので、実際に、どういう仕組みで
認証が行なわれるのか。以下のようになる。

Kerberos認証の仕組み
Kerberos認証の仕組み。サーバーAに接続したい場合
クライアントがサーバーAに接続したい場合を考える。
Kerberos認証の仕組み。認証サーバーに認証要求を行なう
まずはクライアントは認証サーバー(AS)に認証要求を行なう
認証サーバーは、認証に問題なければ、TGTと呼ばれる物を発行する
(TGT:Ticket Granting Ticket)とは、チケット発行のためのチケットの意味だ
チケット発行サーバーにチケットを発行してもらうための
大もとのチケットになる。
TGTは一定時間内は何度でも使える
Kerberos認証の仕組み。チケット発行サーバーからチケットを発行してもらう
認証サーバーに発行してもらったTGTをチケット発行サーバー(GTS)に渡す。
そしてチケット発行サーバー(GTS)から、接続したいサーバーAの
接続チケットを発行してもらう。
Kerberos認証の仕組み。チケットを接続したいサーバーAに渡して、接続を許可してもらう。
チケット発行サーバーに発行してもらったチケットを使い
サーバーAへの接続を行なう。そして接続を許可してもらう。
その後、サーバーBに接続したい場合
Kerberos認証の仕組み。チケットを接続したいチケット発行サーバーに渡して、サーバーBへの接続チケットをもらう。
次にサーバーBへの接続が必要になった場合を考える。
認証サーバーに発行してもらったTGT(チケット発行のチケット)は
一定時間内なら何度でも使える。


そこで、クライアントは所持しているTGTを、チケット発行サーバーに渡す。
サーバーBへ接続チケットをもらう。
Kerberos認証の仕組み。接続チケットをサーバーBに渡して、接続を許可してもらう。
そしてサーバーBへの接続チケットを、サーバーBに渡す。
そしてサーバーBへの接続を許可してもらう。

 一見すると手間のかかる手順のようだが・・・

 一度、認証してしまえば、後は接続が容易

 というわけだ。


 Kerberos認証で大事な事がある。

 時間同期は必要

 なのだ。
 クライアント、サーバーの時間設定を正確にする必要がある。

クライアントとサーバーの時間がずれている場合
クライアントとサーバーの時間がずれている場合
上図のように時間にズレがあるとする。

 すると以下の事が起こってしまう。

接続拒否される
クライアントとサーバーの時間がずれている場合、接続拒否される
上図のように時間にズレがあると、接続が拒否される。

 だが、これは偽チケットなどを防ぐための物だ。

 時間のズレは、どこまで許されるのか。
 マイクロソフトのTechNetでは

 最大5分

 のようだ。
 アカウント ポリシー ‐ Kerberos ポリシーの設定 - TechNet


 ところでLinux上でKerberosの動作を見る事はできる。
 kinitコマンドとklistコマンドだ。

kinitコマンド
[root@samba4]# kinit administrator@EXAMPLE.CO.JP
Password for administrator@EXAMPLE.CO.JP: 
Warning: Your password will expire in 41 days on Wed Sep  4 11:34:01 2013
[root@samba4]# 
kinitはTGT(チケット発行サーバーに接続するためのチケット)を
発行するコマンドだ。41日間有効になっている。

 そしてklistは有効期限内のTGTの一覧を見るコマンドだ。

klistコマンド
[root@samba4]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@EXAMPLE.CO.JP

Valid starting     Expires            Service principal
07/24/13 13:36:15  07/24/13 23:36:15  krbtgt/EXAMPLE.CO.JP@EXAMPLE.CO.JP
	renew until 07/25/13 13:36:07
[root@samba4]# 
先ほど、発行したTGTが一覧に出ている。

 無事、Kerberos認証が行なわれているのが確認できる。


Samba4のインストール

 Samba4.0系を触っていたのは、2013年7月と8月。  だが、Sambaの話が書けない間に・・・  Samba4.1系が出ている!!  だった。  しかも、Samba4.1からは・・・  管理ツールのSWATが廃止  になってる。  まぁ、私はSWATを使った事がないので、不便にはならないが。  そこで今回の話の、まとめとしてSamba4.1.3のインストールを 紹介する事にした。  といっても、Samba4.0系と全く同じなのだが。 まずはソースファイルを展開する事から始まる。  /usr/local/srcディレクトリ上に samba-4.1.3.tar.gz ファイルを置く。そして展開を行なう。
tar.gzファイルの展開
[root@samba4]# tar xvfz samba-4.1.3.tar.gz 
samba-4.1.3/.clang_complete
samba-4.1.3/.testr.conf
samba-4.1.3/BUILD_SYSTEMS.txt
samba-4.1.3/COPYING
samba-4.1.3/MAINTAINERS.txt
samba-4.1.3/Makefile

(途中、省略)

samba-4.1.3/docs/manpages/idmap_tdb2.8
samba-4.1.3/docs/manpages/vfs_shadow_copy2.8
samba-4.1.3/docs/manpages/vfs_recycle.8
samba-4.1.3/docs/manpages/idmap_tdb.8
[root@samba4]# 

 ディレクトリを移動した後、configureを行なう。 

configureを行なう
[root@samba4]# ./configure --enable-debug --enable-selftest
./buildtools/wafsamba/samba_utils.py:397: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5
Checking for program gcc or cc           : /usr/bin/gcc 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for gcc                         : ok  

(途中、省略)

Checking for -lc not needed                                                                     : ok  
Checking configure summary                                                                      : ok 
Checking compiler accepts -g                                                                    : yes 
Checking compiler for PIE support                                                               : yes 
'configure' finished successfully (1m10.940s)
[root@samba4]# 

 そしてソースコンパイルを行なうため、makeを行なう。

makeを行なう
[root@samba4]# make
WAF_MAKE=1 python ./buildtools/bin/waf build
./buildtools/wafsamba/samba_utils.py:397: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5
Waf: Entering directory `/usr/local/src/samba-4.1.3/bin'
symlink: tevent.py -> python/tevent.py
symlink: samba/__init__.py -> python/samba/__init__.py
symlink: samba/common.py -> python/samba/common.py

(途中、省略)

[3984/3985] Generating manpages/pam_winbind.conf.5
Note: Writing pam_winbind.conf.5
[3985/3985] Generating manpages/winbind_krb5_locator.7
Note: Writing winbind_krb5_locator.7
Waf: Leaving directory `/usr/local/src/samba-4.1.3/bin'
'build' finished successfully (14m2.748s)
[root@samba4]# 

 コンパイルが成功した。
 そしてインストールを行なう。

インストールを行なう
[root@samba4]# make install
WAF_MAKE=1 python ./buildtools/bin/waf install
./buildtools/wafsamba/samba_utils.py:397: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5
Waf: Entering directory `/usr/local/src/samba-4.1.3/bin'
* creating /usr/local/samba/etc

(途中、省略)

* installing bin/default/pidl/Parse::Pidl::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::NDR.3pm
* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm
Waf: Leaving directory `/usr/local/src/samba-4.1.3/bin'
'install' finished successfully (3m34.774s)
[root@samba4]# 

 そしてSamba4の設定を行なう。

Samba4の設定
[root@samba4]# pwd
/usr/local/samba/bin
[root@samba4]# ./samba-tool domain provision
Realm [EXAMPLE.CO.JP]: EXAMPLE.CO.JP
 Domain [EXAMPLE]: EXAMPLE
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 
 DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: 192.168.X.Y
Administrator password: 
Retype password: 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=co,DC=jp
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=example,DC=co,DC=jp
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        EXAMPLE
DNS Domain:            example.co.jp
DOMAIN SID:            S-1-5-21-4073675939-1853264219-3860708613

[root@samba4]# 

 次にBINDと連携なのだが、設定は前述しているため

 ここでは省略します!


 さて、コンパイルと設定が終わったSamba4なのだが
動作確認を行なってみる。

Sambaを確認
[root@samba4]# /usr/local/samba/sbin/samba -V
Version 4.1.3
[root@samba4]#


 そしてSambaを稼働させる。

Sambaを稼働させる
[root@samba4]# /usr/local/samba/sbin/samba
[root@samba4]#

 Sambaに内蔵されているDNSが問題なく稼働するか確認を行なう。

DNSが問題なく稼働するか確認
[root@samba4]# host -t SRV _ldap._tcp.example.co.jp.
_ldap._tcp.example.co.jp has SRV record 0 100 389 samba4.example.co.jp.
[root@samba4]# 
SRVレコードが問題なく検索できた。

 Samba4に内蔵されているKerberosの動作確認を行なう。

Kerberosの動作確認
[root@samba4]# kinit administrator@EXAMPLE.CO.JP
Password for administrator@EXAMPLE.CO.JP: 
Warning: Your password will expire in 41 days on Thu Jan 23 15:10:57 2014
[root@samba4]# 

 無事、確認できた。


管理ツール RSATの紹介

 FacebookでSamba4の事をつぶやくと  Sambaユーザ会の小田切さんから  管理ツールRSATがあるよ  と教えていただいた。  RSATとは何か。  Remote Server Administration Toolsの略  以下のサイトからダウンロードする。  マイクロソフト公式ダウンロードセンター  だが、RSATをインストールしても、アイコンに出てくるわけではない。  スタートボタンのプログラムメニューにも出てこない。  一体、どないすればエエねん  と思った。  だが、以下のサイトを発見。  RSATツールでWindows Server 2008をリモート管理する(@IT)  真似してみる事にした。  まずはスタートボタンを押してコントロールパネルを選ぶ。
スタートボタンからコントロールパネルを選ぶ
スタートボタンからコントロールパネルを選ぶ

 コントロールパネルの画面が開く。

コントロールパネルの画面
コントロールパネルの画面でプログラムを選ぶ
ここで赤く囲んだ「プログラム」を選ぶ。

 プログラムの画面を開く。

プログラムの画面
プログラムの画面でWindowsの機能の有効化または無効化を選ぶ
赤く囲んだ「Windowsの機能の有効化または無効化」を選ぶ

 Windows機能の画面を開く。

Windows機能の画面
Windows機能の画面

 そこでリモートサーバー管理ツールの階層にある物を
全て印をつける。

Windows機能の画面
Windows機能の画面でリモートサーバー管理ツールの階層にある物を全て印をつける。
リモートサーバー管理ツールの階層にある物を全て印をつける

 そして画面を閉じる。
 その後、スタートボタンの所で、マウスを右クリックする

スタートボタンの所で、マウスを右クリック
スタートボタンの所で、マウスを右クリックして、プロパティーの選択画面を呼び出す。
そしてプロパティーを選ぶ。

 プロパティー画面を開く。

「スタート」メニューのプロパティー画面
「スタート」メニューのプロパティー画面でカスタマイズを選ぶ
赤く囲んだ「カスタマイズ(C)」を選ぶ。

 カスタマイズ画面を開く。

カスタマイズ画面
カスタマイズ画面で、「[全てのプログラム]メニューと[スタート]メニューに表示する」に印をつける
赤く囲んだ「[全てのプログラム]メニューと[スタート]メニューに表示する」に印をつける。

 最初に戻ってスタートボタンを押す

管理ツールが追加されている
管理ツールが追加されている

 管理ツールを選ぶと、沢山の選択肢が出てくる。

管理ツールを選んだ画面
管理ツールを選ぶと、沢山の選択肢が出てくる

RSATのインストールの際の注意点

 RSATをインストールする前に、RSATを使うクライアントの DNS設定に注意が必要だ。
DNSサーバーをSamba4ではなく別のサーバーにしている場合
DNSサーバーをSamba4とは別のサーバーにしている場合
クライアントの設定
クライアントのDNSサーバーの設定
ActiveDirectoryに参加させる時、DNSサーバーの設定変更を
忘れた場合を考えてみる。

 もし、DNSサーバーを別のサーバーにしたままでRSATを使おうとしても
以下のエラーが出る。

エラーの内容
DNSサーバーをSamba4とは別のサーバーにしている場合に出るRSATのエラー画面
最初、このエラーが出た時、なぜ問題なのかがわからず
結構、時間を費した。ひょんな事でDNSサーバーの設定に気づき
DNSサーバーをSamba4のマシンにしたら、このエラーがでなくなった。

RSATを使ってユーザー登録

 沢山あるRSATの機能の中で、今回はユーザー登録を行なってみた。
ActiveDirectoryユーザーとコンピューター画面
ActiveDirectoryユーザーとコンピューター画面
「example.co.jp」の部分をクリックしてみる。

 すると、いくつかの分類が出てくる。
 ユーザー登録を行なうので、「Users」部分をクリックしてみる

「Users」部分をクリックしてみる
ActiveDirectoryユーザーとコンピューター画面 各分類が出てくる

 ユーザー登録を行なってみる。

ユーザー登録画面の呼び出し
RSAT ユーザー登録画面の呼び出し作業中

 すると以下の画面が出てくる

ユーザー登録画面
RSAT 新しいオブジェクト・ユーザーの画面
姓、名、ユーザーログオン名を登録する。

 誰にするのか。やっぱりここは

 愛する南沢奈央ちゃん (o)

 なのだ 

ユーザー登録の入力
RSAT 新しいオブジェクト・ユーザーの画面でユーザー登録
愛する南沢奈央ちゃんの名前で登録する

 そしてパスワードの設定を行なう

パスワード設定画面
パスワード設定画面

 7文字になっている。
 南沢奈央ちゃんに愛を示すため、パスワードを

 naochan

 にしたのだ。
 そして先に進める。

ユーザーを作成時の最終画面
ユーザーを作成時の最終画面
いよいよ登録だ。

 だが・・・

 パスワード設定が拒否された

パスワード設定が拒否
パスワード設定を拒否される様子
パスワードが短い上、単純なので、パスワードを作り直せの意味だ。

 南沢奈央ちゃんへの愛が通じなかった (TT)

 そこで複雑なパスワードを考えて登録してみる。

複雑なパスワードで登録
複雑にしたパスワードで登録してみる
同じパスワード登録といっても種類がある。
ここで暫定的に決めて、あとでユーザーに変更してもらう方法や
ユーザーには変更不可のパスワードにするか等の設定ができる。

 パスワードが認められた結果

 無事、ユーザ登録が完了

 したのだった。

ユーザー登録されている様子
ユーザー登録されている様子
赤く囲んだ部分が、今回、登録したユーザー「南沢奈央」だ。


RSATによるDNSの設定

 うちはSamba4のDNS機能で「BIND9_FLATFILE」を採用したため BINDの設定ファイルを、直接、触る必要があるため、この機能は使えない。  だが「SAMBA_INTERNAL」や「BIND9_DLZ」を選択した場合は RSATを使って、DNSの設定が可能になる。  そこで少しだけ紹介する事にした。
DNSサーバーへの接続
RSATでDNS設定を行なう
DNSサーバー(Samba4サーバー)のIPアドレスを入力する

 DNSサーバーへの接続すると、以下の画面になる。

DNSサーバー設定画面
RSATでDNS設定画面

 該当のDNSサーバーのIPアドレスをクリックすると
正引き、逆引きなど各種設定画面が出てくる。

DNSの各種設定が出てくる
RSATでDNS設定 正引き、逆引きなどの設定ができる
正引きゾーンの事を「前方参照ゾーン」というようだ。
知らなかった。

 そして正引き(前方参照ゾーン)をクリックする

正引き(前方参照ゾーン)の設定画面
RSATでDNS設定 正引き(前方参照ゾーン)の設定画面
ここでDNSサーバーに各ホストやレコード登録ができるのだ。

 他にもRSATの機能があるのだが、私が理解している範囲は
ユーザー登録とDNS設定だけなのだ。


最後に  今回、Samba4の話を書きました。  まだ1台もActiveDirectoryに参加させていませんが これから進めていきたいと思います。  以下の写真のように力強くオープンソース活用を 推進していきたいと思います!
2010年の神戸祭
神戸祭のサンバ


次章:「メモリの基礎 パソコンメモリ入門 DRAM SRAM」を読む
前章:「法学入門 IT技術者のための法律入門」を読む
目次:システム奮闘記に戻る