samba4 で active directoryしよう。

samba4 で active directory を構築し、
windows 端末をドメイン参加させる方法について説明します。

A1.まて考え直せ

たしかに windows server や CAL は高い。
しかし、おとなしく ライセンスを買ったほうがいいんじゃなイカ
たかが数十万円〜数百万円ぐらいぢゃなイカ
ADを導入するぐらいの規模の企業の支払い額からすればちっぽけなもんだ。

samba4 はまだ alphaリリースだ。
これからも仕様がどんどん変わる可能性がある。


それでも、
それでも、samba4 を使って、
ActiveDirecotryをやって修羅の道を行こうというのでゲソか。
いいじゃなイカ。いい度胸でゲソ。長い旅をやろうじゃなイカ


ながい たびが はじまる。

B1.OSをインストール


最小構成で centos5.6 をインストール.
http://mirror.centos.org/centos/5/isos/

今回は、以下の条件でセットアップした。

マシン名 samba4ad
ドメイン rti7743.local
ADとしての名前 samba4ad.rti7743.local

B2.まずは yum updare .

yum update

B3.必要なパッケージをひたすら入れる

無心になってインストール。

yum install libaio-devel gcc make libidn-devel libxml2-devel openldap-devel krb5-devel libtool autoconf openssl-devel libcap-devel python python-devel readline yum pam-devel sqlite-devel libtalloc  libacl  gnutls gdb  rpm-build  gnutls-devel readline-devel xmlto python-dns ntp libtalloc-devel

別途これも追加.

rpm -Uvh ftp://ftp.icm.edu.pl/vol/rzm1/linux-fedora/linux/epel/5/x86_64/python-dns-1.9.4-1.el5.noarch.rpm
rpm -Uvh ftp://ftp.icm.edu.pl/vol/rzm1/linux-fedora/linux/epel/5/x86_64/dnssec-conf-1.21-8.el5.noarch.rpm

B4.ノーガード化

SELINUX とか IPTABLE とか、とりあえず無効にする。
賛否両論あるだろうけど、内部向けマシンなので、私は気にしないぜ。

SELinux を Off にする。

vi /etc/selinux/config
-内容---------------------------------------------
SELINUX=disabled                                       #←変更
--------------------------------------------------


iptablesを Off にする

chkconfig iptables off                                #とりあえずやる文句あるか。
/etc/init.d/iptables stop

C1.依存パッケージのインストールその1 bind9.5以上

動作に bind9.5 「以上」で TKEY 、GSSAPI、動的書き変え等 をサポートしているbindが必要らしい。


なんか、親切な人?がrpm作ってくれいるらしい。(たぶんこれでOK?)
http://www.taylortelephone.com/bind9/RPMS/

まず依存関係を解決するために yum で 現在の bind を入れます。

yum install bind


次に親切な人がつくっていれた bind を rpm で継ぎ足す形で当てていきます。

・64bitの奴

wget http://www.taylortelephone.com/bind9/RPMS/bind-9.7.3-1.el5.x86_64.rpm
wget http://www.taylortelephone.com/bind9/RPMS/bind-libs-9.7.3-1.el5.x86_64.rpm
wget http://www.taylortelephone.com/bind9/RPMS/bind-utils-9.7.3-1.el5.x86_64.rpm
rpm -Uvh bind-*.rpm

・32bitの奴

wget http://www.taylortelephone.com/bind9/RPMS/bind-9.7.3-1.el5.i386.rpm
wget http://www.taylortelephone.com/bind9/RPMS/bind-libs-9.7.3-1.i386.rpm
wget http://www.taylortelephone.com/bind9/RPMS/bind-utils-9.7.3-1.i386.rpm
rpm -Uvh bind-*.rpm

C2. ntpdの導入

次に ntpd を設定する。

krb5 って時刻が大切なんでちゃんと正確に合わせる。

ntpdate ntp1.jst.mfeed.ad.jp


せっかくだから、ntpdで常に合わせるようにする。
/etc/ntp.conf ってファイルの途中に server って書いてあるところを修正してあげる

vi /etc/ntp.conf
--内容----------------------------------------------------
server ntp1.jst.mfeed.ad.jp           #修正
server ntp2.jst.mfeed.ad.jp           #修正
server ntp3.jst.mfeed.ad.jp           #修正
----------------------------------------------------------

ntpdの起動と以後勝手に実行するようにする。

/etc/init.d/ntpd start
chkconfig ntpd on

C3.自分自身の名前解決をしてあげる

今回は、ホスト名を samba4ad とする。
ドメインを rti7743.local にし、このマシンは samba4ad.rti7743.local という名前とする。

vi /etc/hosts
---内容-------------------------------------------
127.0.0.1       localhost.localdomain localhost        #←ここから samba4adを消す
192.168.56.101  samba4ad.rti7743.local samba4ad        #←追加。
--------------------------------------------------

一応念のためホスト名をちゃんと確認する。
ここと /etc/hosts に書いた名前が違うとだめだよ。
名前を合わせてあげて。

vi /etc/sysconfig/network
---内容--------------------------------------------
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=samba4ad            #←これがホスト名
--------------------------------------------------

D1.とりあえずリブートしとくか・・・

とりあえず、いろいろいじった場合もあるだろうから、
一度ここらへんでマシンをリブートしておくと幸せになれるとおもうよ。

reboot

D2. 確認。 名前が引けて通信できるか?

まずはこの時点までで間違っていないか確認してみよう。
hosts に書いた設定がちゃんと効いているかな?

ping samba4ad.rti7743.local
---内容---------------------------------------------------------------
PING samba4ad.rti7743.local (192.168.56.101) 56(84) bytes of data.
64 bytes from samba4ad.rti7743.local (192.168.56.101): icmp_seq=1 ttl=64 time=0.069 ms
64 bytes from samba4ad.rti7743.local (192.168.56.101): icmp_seq=2 ttl=64 time=0.039 ms
----------------------------------------------------------------------

D3. 確認 iptables が無効になっているか?

iptables が無効になっているか確認します。

以下のように、すべてのチェーンが ACCEPT ならOK。
#心配な人は勝手に色々追加すればいいよ。

 iptables -L
---内容---------------------------------------------------------------
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

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

D4. 確認 SELinuxが無効になっているか確認します。

SELinuxが無効になっているか?
Disabledと表示されればOK.

getenforce
---内容---------------------------------------
Disabled
----------------------------------------------

D5. ntpdがちゃんと動作しているか?

ntpd がちゃんと設定されているか?
ntp1.jst.mfeed.jp とかが表示されればOK

ntpq  -p
---内容-------------------------------------------------------------------------
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. 133.243.236.19   2 u   12   64    7   83.390  -899.13  29.189
 ntp2.jst.mfeed. 210.173.176.4    2 u   10   64    7   84.081  -899.68   2.159
 ntp3.jst.mfeed. 210.173.176.4    2 u   11   64    7   83.339  -898.60   0.886
 LOCAL(0)        .LOCL.          10 l   10   64    7    0.000    0.000   0.001
-------------------------------------------------------------------------------


ちなみに今の時刻を確認しておこう。

date

E1. samba4 の最新版を持ってきてコンパイルだ!

samba4の最新版を持ってきてインストール

gitでもいいけど、今回は 2010年12月にリリースされたalpha14を利用した。

wget http://ftp.samba.org/pub/samba/samba4/samba-4.0.0alpha14.tar.gz
tar zxvf samba-4.0.0alpha14.tar.gz
cd samba-4.0.0alpha14/source4/

./autogen.sh
./configure
make
make instal

samba aplha15がリリースされたみたいです。
コンパイル方法がちょっとかわったぽい?

wget http://ftp.samba.org/pub/samba/samba4/samba-4.0.0alpha15.tar.gz
tar zxvf samba-4.0.0alpha15.tar.gz
cd samba-4.0.0alpha15

./configure
make
make instal

E2.provisioningコマンド

いよいよ、設定の始まりです。
/usr/local/samba/sbin/provision コマンドを起動し、設定ファイルのひな形を作ってもらいます。


Realm、Domain 、Server Role はそのままエンターで進みます。
Administrator パスワードだけはちょっと注意が必要です。(後述)

/usr/local/samba/sbin/provision --interactive
---内容-------------------------------------------------------------------------
Realm [RTI7743.LOCAL]:                         #エンター
 Domain [RTI7743]:                             #エンター
 Server Role (dc, member, standalone) [dc]:    #エンター
Administrator password:                        #今回は password!1 と入力
                                               #英数記号で7文字以上?

-------------------------------------------------------------------------------

そしたら処理が始まって、

---内容-------------------------------------------------------------------------
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
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Please install the phpLDAPadmin configuration located at /usr/local/samba/private/phpldapadmin-config.php into /etc/phpldapadmin/config.php
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           domain controller
Hostname:              samba4ad
NetBIOS Domain:        RTI7743
DNS Domain:            rti7743.local
DOMAIN SID:            S-1-5-21-2894509911-3094166375-991599299 
Admin password:        password!1
-------------------------------------------------------------------------------

ってなって終わりましたとさ。

パスワードに関する注意

短いパスワード、記号とかが混じっていないパスワードなどを利用すると、こんなエラーで落ちます。
英数記号で7文字以上?

---内容-------------------------------------------------------------------------
_ldb.LdbError: (19, '0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criterias!')
_ldb.LdbError: (19, '0000052D: Constraint violation - check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!')
-------------------------------------------------------------------------------

E2. まずは samba を動かして確認してみよう。

sambaを動かす。
バックグラウンドで実行してくれる。

/usr/local/samba/sbin/samba

プロセスが動いていることを確認する。

ps aux | grep samba
---内容-----------------------------------------------------------------------------------------
root     31950  9.3  8.0 421384 41284 ?        Ss   17:13   0:00 /usr/local/samba/sbin/samba
root     31951  0.0  5.5 421384 28336 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31952  0.0  5.6 421384 28708 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31953  0.0  5.8 421384 29632 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31954  0.0  5.5 421384 28080 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31955 18.0  5.8 421384 29704 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31956  0.0  5.6 421384 28904 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31957  0.5  6.1 423444 31304 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31958  0.0  5.7 421384 29224 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31959  0.0  5.6 421616 28884 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31960  0.0  5.6 421384 28724 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31961  0.0  5.7 421384 29116 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
root     31962  0.0  5.6 421384 29056 ?        S    17:13   0:00 /usr/local/samba/sbin/samba
-----------------------------------------------------------------------------------------------


メモ:終了させる方法はいまいちよくわかんないから killall で殺した。(知っている人教えて!)

killall samba


メモ:プロセスが死んだことを確認しよう。
さっきどっさりでたプロセスsambaの表示がなくなれば死んでいる。

ps aux | grep samba


メモ:デバッグ用にフォワグラウンドで動かしたい人は オプションをつけて実行する。

/usr/local/samba/sbin/samba -i -M single

F1. netlogon sysvol が表示されることの確認

/usr/local/samba/bin/smbclient -L localhost -U%
---内容--------------------------------------------------------------------------------
        Sharename       Type       Comment
        ---------       ----       -------
        netlogon        Disk                               #これらが表示されること
        sysvol          Disk                               #これらが表示されること
        IPC$            IPC        IPC Service
---------------------------------------------------------------------------------------

表示されたらとりあえずOK。
次はパスワードを確認してみよう。

F2. パスワードの確認

provisionコマンドで設定した Administrator のパスワードがあっているか確認する。

/usr/local/samba/bin/smbclient //localhost/netlogon  -Uadministrator
---内容--------------------------------------------------------------------------------
Password for [RTI7743\administrator]:                   #パスワード入力
smb: \>                                                 #認証出来れば対話シェルが起動
smb: \>
smb: \> quit                                            #quitで抜ける。
---------------------------------------------------------------------------------------

G1. 設定ファイルのコピー

provisionコマンドで設定ファイルが /usr/local/samba/private/ に作成された。
こいつをコピーしたり有効にして回る。

krb5 の設定を上書きする。

cp /usr/local/samba/private/krb5.conf /etc/krb5.conf


krb5の動作を確認するには、「named の設定が必要」なので、確認はちょい待ちです。

G2. namedの設定 そのA 指示書

こんな風にしろという指示書が入っているよ、

cat /usr/local/samba/private/named.txt

軽く確認してね!!

G3. namedの設定 そのB /etc/named.conf をいじる

もし、/etc/named.conf というファイルが空っぽの人は bind を入れるところからやり直してね!!
今回変更するのは「6行」だよ。

vi /etc/named.conf
---内容------------------------------------------------------------------------
options {
        listen-on port 53 { any; };                                # any に変更 1
        listen-on-v6 port 53 { ::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; };                                  # any に変更 2
        recursion yes;

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

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

        forwarders { 8.8.8.8; };                                   #追加3 知らないのは google dnsに聞く
        tkey-gssapi-credential "DNS/rti7743.local";                #追加4
        tkey-domain "RTI7743.LOCAL";                               #追加5 ↓に6があるよ!
};


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

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

include "/usr/local/samba/private/named.conf";                     #追加6 これで終わり
include "/etc/named.rfc1912.zones";
--------------------------------------------------------------------------------

G4. namedの設定 そのC /etc/sysconfig/named をいじる

次に、KEYTAB_FILE と KRB5_KTNAMEの設定を末尾に追加する。

vi /etc/sysconfig/named
---内容-------------------------------------------------------------------------
export KEYTAB_FILE="/usr/local/samba/private/dns.keytab"
export KRB5_KTNAME="/usr/local/samba/private/dns.keytab"
--------------------------------------------------------------------------------

G5. namedの設定 そのD 以下の4つのコマンドを実行する

export KEYTAB_FILE="/usr/local/samba/private/dns.keytab"
export KRB5_KTNAME="/usr/local/samba/private/dns.keytab"
chgrp named /usr/local/samba/private/dns.keytab
chmod g+r /usr/local/samba/private/dns.keytab

G6. namedの起動。問題なく起動されることを確認。

/etc/init.d/named start
---内容--------------------------------------------------
Starting named:               [  OK  ]   #OKとなること。
---------------------------------------------------------


エラーになった場合、/var/log/messages を見て考えよう。

less /var/log/messages         #Ctrl + G で終端に飛ぶよ!
named(bind9)が次のようなエラーを出す その1
---内容---------------------------------------------------------------------
>Apr 24 10:06:16 samba4ad named[10135]: configuring TKEY: not implemented
>Apr 24 10:06:16 samba4ad named[10135]: loading configuration: not implemented
>Apr 24 10:06:16 samba4ad named[10135]: exiting (due to fatal error)
---------------------------------------------------------------------------

bind9 ソースの bin/named/tkeyconf.c の ns_tkeyctx_fromconfig 関数の作りの問題で、tkeyの設定に僅かな問題があっただけで configuring TKEY: not implemented と表示されます。
named -d9 -g などと、デバッグモード named を起動すると見つけることができます。


named デバッグ方法

/etc/init.d/named stop   #一度止める
named -d9 -g             #コンソールで直接起動
named(bind9)が次のようなエラーを出す その2
---内容--------------------------------------------------------------------
failed to acquire accept credentials for DNS/rti7743.local: GSSAPI error: Major = Unspecified GSS failure.  Minor code may provide more information, Minor = No such file or directory.
--------------------------------------------------------------------------

以下のコマンドを実行してみて!
また、 /etc/sysconfig/named にも記述があるか確認してみて。
bindを yum remove したり yum install したりしまくっていると、クリアされることがあります。
一度設定したからと言って、確認を怠ってはいけません。

export KEYTAB_FILE="/usr/local/samba/private/dns.keytab"
export KRB5_KTNAME="/usr/local/samba/private/dns.keytab"

G8. namedの設定 そのD 動作確認

ドメインが引けることを確認する。
今回は、 rti7743.local というドメインなので以下のようになる。

host -t SRV _ldap._tcp.rti7743.local.    127.0.0.1
----内容----------------------------------------------------------------------
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

_ldap._tcp.rti7743.local has SRV record 0 100 389 samba4ad.rti7743.local.
-----------------------------------------------------------------------------
うまくいかない場合

引けない場合は、こんなエラーになる。
これでは正しく引けていない。

----内容---------------------------------------------------------------------
Host _ldap._tcp.rti7743.local. not found: 3(NXDOMAIN)
-----------------------------------------------------------------------------
1.ドメインは間違えていないか、 moemoe.local だったら 以下のようになるんだよ。
host -t SRV _ldap._tcp.moemoe.local.    127.0.0.1

2. /etc/named.conf の設定も直し
/etc/named.conf に include "/usr/local/samba/private/named.conf"; を書いたか?


3. named を再起動したか?
とりあえず named再起動してみる。

/etc/init.d/named restart

G9. namedの設定 そのD /etc/resolv.conf を変更してローカルに立てた named を見に行くようにする。

vi /etc/resolv.conf
----内容------------------------------------------------------------------------
search rti7743.local   # sakura と言われたら、 sakura.rti7743.local を保管するみたいな
nameserver 127.0.0.1   #自分のDNS を引く
--------------------------------------------------------------------------------

G10. namedの設定 そのD named 動作確認

127.0.0.1 の指定を消して実行する。

実行するコマンド

host -t SRV _ldap._tcp.rti7743.local.
----内容-------------------------------------------------------------------------
_ldap._tcp.rti7743.local has SRV record 0 100 389 samba4ad.rti7743.local.
--------------------------------------------------------------------------------

正しく引けない場合は、 /etc/resolv.conf の内容をもう一度確認してみてください。



一応その他の名前も解決できるか試しておこう。

host google.co.jp
----内容------------------------------------------------------------------------
google.co.jp has address 74.125.95.104
google.co.jp has address 72.14.203.104
google.co.jp has address 74.125.91.104
google.co.jp mail is handled by 10 google.com.s9a2.psmtp.com.
google.co.jp mail is handled by 10 google.com.s9b1.psmtp.com.
google.co.jp mail is handled by 10 google.com.s9b2.psmtp.com.
google.co.jp mail is handled by 10 google.com.s9a1.psmtp.com.
--------------------------------------------------------------------------------

G11. namedの自動起動の設定.

次回以降 bind9(named) が勝手に動いてくれるように設定する。

chkconfig named on

H1. krb5 の確認。

DNSの設定ができたので、 krb5 の確認をする。

kinit administrator@RTI7743.LOCAL
---内容------------------------------------------------------------------------------
Password for administrator@RTI7743.LOCAL:               #sambaに登録したパスワードを入れる。
------------------------------------------------------------------------------------


何もエラーなく終われば良い。
たまにパスワードをずっと更新していないとか言われることがあるが、これはOK。
こんなの誰も気にしない。

---内容-----------------------------------------------------------------------------
Warning: Your password will expire in 41 days on Sun Jun  5 12:13:40 2011
------------------------------------------------------------------------------------


メモ: 必ずドメインは大文字で入力すること。
今回は、 rti7743.local なので kinit administrator@RTI7743.LOCAL だが、
moemoe.local の場合、 kinit administrator@MOEMOE.LOCAL になるよ。

うまくいかない場合

メモ:うまくいかない例 ドメイン名が引けない等こんなエラーになる。
・そもそもドメイン名を間違えていないか?
・/etc/krb5.conf をちゃんと上書きしたか、
・namedは動いているか?
などを確認しよう。

kinit administrator@RTI7743.LOCAL2
---内容------------------------------------------------------------------------------
kinit(v5): Cannot resolve network address for KDC in realm RTI7743.LOCAL2 while getting initial credentials
------------------------------------------------------------------------------------

[

H2. wbinfoの結果

samba4に、ユーザー名一覧を取得させてみよう。

/usr/local/samba/bin/wbinfo -u
---内容-------------------------------------------------
Administrator                #この人がいるか
Guest                        #この人がいるか その2
krbtgt
dns-samba4ad
-------------------------------------------------------

H3. 試しにパスワードポリシーを表示してみる。

/usr/local/samba/bin/samba-tool pwsettings show
----内容------------------------------------------------
Password informations for domain 'DC=rti7743,DC=local'

Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
-------------------------------------------------------
パスワードポリシーを変更したければいかのようなコマンドを唱える。

メモ:パスワードポリシーを変更する。

/usr/local/samba/bin/samba-tool pwsettings set --history-length=12

H4. ユーザーを作ってみたり、パスワードを入れてみたり

まず、ユーザを作ります。

/usr/local/samba/bin/samba-tool newuser rti
---内容-------------------------------------------------
New Password:                      #パスワードを入力
User rti created successfully
-------------------------------------------------------

パスワードを変更します。

/usr/local/samba/bin/samba-tool setpassword rti
---内容-------------------------------------------------
New Password:                      #パスワードを入力
Changed password OK
-------------------------------------------------------

ポリシーに違反するパスワードだと、エラーで怒られます。
大文字英数記号を入れた7文字以上のパスワードにしてね!
ERROR(ldb): Failed to set password for user "rti" - 0000052D: Constraint violation - check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!


rtiのパスワードの有効期限を伸ばすw

/usr/local/samba/bin/samba-tool setexpiry rti  --days 365

rtiのパスワードを無期限にするw

/usr/local/samba/bin/samba-tool setexpiry rti  --noexpir

active directorywindows機を参加させるときにユーザが必要なので、誰かしらを作って、パスワードを設定しておこう!

I1. windows xp機を参加させてみよう。 まずはDNSの設定から


まずは、通常のActiveDirectory参加の手法と同じく、ネットワークの設定の設定から DNS を ADサーバ(この場合 samba4のサーバ)に向ける。




さらに、詳細編集、DNSと降りて行って、DNSプレフィックスで rti7743.local ドメインが自動的に付く様にする。




ここまでできたら、 ping や nslookup などで ActiveDirectoryサーバ(ここではsamba4のことね)の名前を解決させてる。
今回は、samba4ad という名前で作ったので、

ping samba4ad

ping samba4ad.rti7743.local

共に、名前解決できるはずだ。

I2. windows xp機を参加させてみよう。 参加できるはず・・・・


システムのプロパティ→コンピュータ名から、ネットワークIDを選択



その後、「ドメインに参加する」などを選んだ後に、奴が来る。

ユーザ名: administrator
パスワード:samba4に設定したパスワード
ドメイン:RTI7743.LOCAL




次にコンピュータアカウントの画面がくるはず、、



たいていエラーがおきるのはここら編。
下にトラブルシューティング書いといたから見てね!!




無事、コンピュータが参加できたら、ユーザー名をきかる。
samba4 に登録した以外のユーザを入れるとエラーになってしまった・・・・ので、/usr/local/samba/bin/samba-tool newuser ユーザ名 で作成したユーザ名と、設定したパスワードを入れる。


無事参加できたであろうか。。。

windows xpからドメインに参加しようとしたらエラーと言われてしまいました。 その1
---------------------------------------------------------------------------
ドメイン RTI7743.LOCAL のドメイン コントローラの場所を検索するのに使用される service location (SRV) リソース レコードの DNS がクエリされているときにエラーが発生しました:

エラー: "DNS 操作が拒否されました。"
(エラー コード 0x0000232D RCODE_REFUSED)

_ldap._tcp.dc._msdcs.RTI7743.LOCAL の SRV レコードのクエリでした

詳細な情報は [ヘルプ] をクリックしてください。
---------------------------------------------------------------------------

/etc/named.conf に tkey-gssapi-credential と tkey-domainを設定していますか?
こいつらを設定せずにやるとこのエラーが発生するようです。

windows xpからドメインに参加しようとしたらエラーと言われてしまいました。 その2
---------------------------------------------------------------------------
ドメイン rti7743.local のドメイン コントローラの場所を検索するのに使用される service location (SRV) リソース レコードの DNS は正しくクエリされました:

クエリは _ldap._tcp.dc._msdcs.rti7743.local の SRV レコードでした

クエリによって、次のドメイン コントローラが識別されました:

samba4ad.rti7743.local

このエラーの一般的な原因として挙げられるのは:

- ドメイン コントローラの名前を IP アドレスに割り当てるための Host (A) レコードが見つからないか、正しくないアドレスを含んでいる。

- DNS で登録されているドメイン コントローラがネットワークに接続されていないか、実行中でない。
---------------------------------------------------------------------------

これは、ethを複数枚さしている端末や、ethを複数枚ささないといけない virtualbox などで試していると出てきます。
ping samba4ad.rti7743.local や host ping samba4ad.rti7743.local してみましょう。
自分が取得したい 192.168.x.x のアドレスでちゃんと表示されましたか?

ようするにつながったけど、 ドメインコントローラの名前とIPアドレスの対応がなんか変じゃないみたいな感じかな・・・

host samba4ad.rti7743.local
---内容-------------------------------------------------
samba4ad.rti7743.local has address 192.168.56.101          #本来
-------------------------------------------------------


異常時にはこんな風になる。

---内容------------------------------------------------
samba4ad.rti7743.local has address 10.0.2.1               #異常時
-------------------------------------------------------


修正方法ですが、 samba4が作成した zone を修正してください。

vi /usr/local/samba/private/dns/rti7743.local.zone
---内容------------------------------------------------
$ORIGIN rti7743.local.
$TTL 1W
@               IN SOA  samba4ad   hostmaster (
                                2011042412   ; serial
                                2D              ; refresh
                                4H              ; retry
                                6W              ; expiry
                                1W )            ; minimum
                        IN NS   samba4ad

            IN A    192.168.56.101                    #修正1
;

samba4ad        IN A    192.168.56.101                #修正2
gc._msdcs               IN A    192.168.56.101        #修正3

3ee402a5-979c-4152-ac9f-47680bf86936._msdcs     IN CNAME        samba4ad

〜以下略〜
-------------------------------------------------------
windows xpからドメインに参加しようとしたらエラーと言われてしまいました。 その3
---内容-------------------------------------------------
エラー: "DNS 名がありません。"
(エラー コード 0x0000232B RCODE_NAME_ERROR)
-------------------------------------------------------

DNSサーバが動いていないとか、正しいゾーンが読めていないとか。
DNSサーバに ldap._tcp.dc._msdcs.rti7743.local などのドメイン名がない。
以下のコマンドをLinuxで実行して、 正しい結果が帰ってくるか確認して下さい。

host -t SRV _ldap._tcp.rti7743.local.
---内容--------------------------------------------------------------------------
_ldap._tcp.rti7743.local has SRV record 0 100 389 samba4ad.rti7743.local.
--------------------------------------------------------------------------------

I3.ログオンしてみる


ログオフして戻ってくるとログインダイアログが出る。
オプションボタンを押して、ドメインログオンを表示してあげてね。


samba4のユーザでログインできるはずなんだけど、、、、

J1. windows7ドメイン参加


DNSの設定をする(撮り直したのでwindowsxpDNS名が違うけど)



詳細設定で DNSサフィックスに RTI7743.LOCAL を入力する。
ネットワークの設定は以上で終わり。



システムのプロパティを出して、ネットワークIDのボタンを押す。


ユーザ名 administrator
パスワード password!1
ドメイン RTI7743.LOCAL

これで動いてくれればいいんだが・・・・


うまくドメインの参加すると、そのドメインの中でこのPCを使うユーザ名を入れることができる。



再起動しても帰ってくると、、、ドメインログオンできる。

K1.リモート管理ツール

samba4のコマンドラインなんて、難しすぎてヘルプデスクの人は使えないだろうから、普段は素敵なGUIのツールで作業する。
ここら辺が LDAPではなくて、 ActiveDirectory が選ばれる理由の一つでもあるわけだけども。
LDAPGUIツールの使いにくさは異常だからなぁ・・・


windows vista/windows 7以降のPCから、MSが配っているリモートサーバ管理ツールからも接続することができるらしい。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d



上記ソフトウェアをインストールしても何も変わらないよ!と思うかもしれないけど、設定で有効にしないと有効にならないんだぜ。



「プログラムと機能」(アンインストールとかする場所)から、左側メニューにある 「Windows機能の有効化または無効化」を選択する。




どのツールを有効にするかと聞かれるので、「リモート管理ツール」の「役割管理ツール」の 「AD DSおよび AD LDSツール」の「AD DSツール」の「Active Directory管理センター」を選択する。長い!




すると、スタートメニューに ActiveDirectoryでおなじみの「ActiveDirectoryユーザとコンピュータ」が出てくる。


このプログラムを使うには、ドメインの Administrator でログインする必要があるみたいです。
また、コマンドラインから起動するときは、mmc dsa.mscコマンドラインにタイプすると起動できます。

うーん
http://www.vistax64.com/server-general/275494-rsat-across-domains.html

samba4の自動起動スクリプト

やっつけで作ってみた。

vi /etc/init.d/samba4
#! /bin/sh
# chkconfig: 2345 90 10
# description: Starts and stops the samba4 boot time and shutdown.
#
# processname: samba


# configuration variables

prog="samba"
cmd="/usr/local/samba/sbin/samba"

#functions
start(){
        running=`ps aux | grep "${cmd}" | grep -v grep | wc -l`
        if [ $running -ge 1 ] ; then
                echo "Already Running"
        else
                `${cmd}`
        fi
}

stop(){
        running=`ps aux | grep "${cmd}" | grep -v grep | wc -l`
        if [ $running -ge 1 ] ; then
                killall "${prog}"
        else
                echo "Already Stop"
        fi
}

case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
restart)
  stop
  start
  ;;
*)
  printf 'Usage: %s {start|stop|restart}\n' "$prog"
  exit 1
  ;;
esac


コピペしたら、権限を割り振って、chkconfig する

chmod +x /etc/init.d/samba4
chkconfig samba4 on

参考文献

http://www.lpi.or.jp/doc/20091211-5.pdf
http://slashdot.jp/~flied%20onion/journal/
http://comments.gmane.org/gmane.network.dns.bind.user/40459


動いた、動かない、間違っているなどあったらよろしこ。


#どっかのルータとかのハードウェアベンダーとかがsamba4(AD)にFreeRadiusとPPTPIPSECつけて管理ポータルサーバとかやって売りだしてくれないかな、5万円ぐらいで・・・そしたら胸熱ですよ。