しばたテックブログ

気分で書いている技術ブログです。

Samba4でActive Directoryを動かしてみる

単純な興味本位なんですが、無償でHypve-Vクラスタを動かしてみたいと考えていまして、Hyper-VにはHyper-V Serverという無償OSがあるんですが、クラスタを組むにはActive Directoryが必須なのでどうしたものかと考えていたのですが、SambaがSamba 4からActive DirecotryのDomain Controllerとして動作できるのでこいつでどうにか出来んかと思い、先ずはインストールしてみる事にしました。(実際にクラスタが組めるかどうかはこれから確かめるので分かりませんw)

参考にしたサイト

インストール前の条件

  • OSは CentOS 6.5(64bit版)
    最小構成でインストール、IPアドレス等の最低限のネットワーク設定を実施済み。
  • ホスト名は centsmb01
  • 作成するドメインは contoso.local

Samba4のインストール

ソースコードからインストール。Sambaのバージョンは現時点で最新の4.1.4。

以降の作業はすべてrootで実施。

#
# Sambaのインストール手順 - 最小構成のCentOS 6.5で実施
# Sambaのバージョンは4.1.4
#

# 動作確認をしやすくするためとりあえずSELinuxを無効にしておく。
setenforce 0
# 必要に応じて設定を永続化
vi /etc/selinux/config
# ➡SELINUX=disabled

# 動作確認をしやすくするためとりあえずiptablesを止めておく。
# TODO : 実際の運用では開けるポートを設定する。
service iptables stop

# 最低限使うコマンドをインストール
yum install vim -y
yum install wget -y

# 依存モジュールのインストール
yum install gcc -y
yum install libacl-devel -y
yum install libblkid-devel -y
yum install gnutls-devel -y
yum install python-devel -y
# yum install pkgconfig -y  #already installed
yum install krb5-workstation -y
yum install zlib-devel -y
yum install libaio-devel -y
yum install policycoreutils-python -y
# yum install libsemanage-python -y  #already installed
# yum install setools-libs-python -y #already installed
# yum install setools-libs -y        #already installed
yum install popt-devel -y
yum install libpcap-devel -y
yum install sqlite-devel -y
yum install libidn-devel -y
yum install libxml2-devel -y
yum install libsepol-devel -y
yum install keyutils-libs-devel -y
yum install cyrus-sasl-devel -y
yum install bind-utils -y

# ソースのダウンロード
cd /usr/tmp
wget http://ftp.samba.org/pub/samba/samba-4.1.4.tar.gz
tar zxvf samba-4.1.4.tar.gz
cd samba-4.1.4

# コンパイル。成功すると /usr/local/samba にインストールされる。
./configure
make
make install

# hostsにホスト定義を追加
vim /etc/hosts
#➡192.168.0.xxx centsmb01.contoso.local 追記

# resolv.confの設定
vim /etc/resolv.conf
#以下の様な内容に編集
# search contoso.local
# nameserver 192.168.0.xxx

Active Directory Domainの構築

samba-toolを使い、対話型のインストールを行いました。

# Samba 4では機能レベル"Windows Server 2008 R2"まで指定可能。
cd /usr/local/samba/bin
./samba-tool domain provision --interactive --function-level=2008_R2

以下対話インストールの内容

Realm [LOCALDOMAIN]: CONTOSO.LOCAL ← Realmなので大文字で指定
 Domain [CONTOSO]: ← デフォルト設定
 Server Role (dc, member, standalone) [dc]: ← デフォルト設定
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: ← デフォルト設定
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.0.xxx]: 192.168.0.y  ← DNSフォーワーダを指定
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=contoso,DC=local
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=contoso,DC=local
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:              centsmb01
NetBIOS Domain:        CONTOSO
DNS Domain:            contoso.local
DOMAIN SID:            S-1-5-21-3195629488-859169402-1860501972
#Kerberosクライアント設定
vim /etc/krb5.conf

以下の様な内容に編集

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = CONTOSO.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 CONTOSO.LOCAL = {
  kdc = centsmb01.contoso.local
 }

[domain_realm]
 .contoso.llcal = CONTOSO.LOCAL
 contoso.local = CONTOSO.LOCAL

接続テスト

Sambaをシングルモードで起動し接続テストを行いました。

# シングルモードで起動
cd /usr/local/samba/sbin
./samba -i -M single

別ウィンドウから以下のコマンドでテスト。エラーが出なければOK。

/usr/local/samba/bin/smbclient -L localhost -U%
/usr/local/samba/bin/smbclient //centsmb01.contoso.local/netlogon -U administrator
kinit administrator@CONTOSO.LOCAL

自動起動設定

今回は行わないませんでした。
単純に/usr/local/sbin/samba を起動して動作させました。

TODO : 必要が出たら参考サイトを参考にしてスクリプトをインストールする。

Windowsからの管理

リモート管理用のマシン(今回はWindows 8.1を使用)にRSATをダウンロードし、インストールします。
インストール後、作成したドメインに参加すれば各種管理ツールを利用する事が出来ます。

"Active Directoryユーザーとコンピュータ"で接続してすると以下の様にオブジェクトの一覧がきちんと表示されます。 f:id:stknohg:20140210011014p:plain

ただし、SambaでActive Directoryをインストールした場合、ADWSがインストールされていないため、"Active Direcoty管理センター"を利用することは出来ません。以下の様なエラーが出ます。

f:id:stknohg:20140210011015p:plain

また、GPMCを起動したところ以下のメッセージがでたのですが、とりあえずは問題なく使えています。

f:id:stknohg:20140210011016p:plain

これから実際にクラスタが組めるか確かめていこうと思います。