Ubuntu14.04でSamba4のドメインコントローラを設定するまとめ...

現在、社内ではUbuntu10.04(古い!)のSamba3でWindowsマシンのファイル共有を行っているんですが、当初30台くらいだったクライアント数も、いつの間にやら60台を越えようとしています。60台にもなると、個別のマシン管理やユーザの管理が大変煩雑になってきたし、ファイルサーバ用途で利用しているんですが、そろそろディスクの容量も逼迫してきたので、これを機にサーバの引っ越しと、Samba4でドメインコントローラなるものを設置したくなってきた。

CentOSでの設定例が非常に多いSamba4の情報ではあるけれど、最近はUbuntu系の情報も増えてきたような気がするのだけれども、まだまだ少ない。果たして、どうなることやら・・

基本構成

Samba4+ADDCの基本的な構成は、以下のものとする。

  • サーバホスト名:
  • ドメイン名:
  • NETBIOS名:
  • IPアドレス:
  • サブネットマスク:
  • ゲートウェイ:
  • DNS Forwarder:
  • pdc
  • mydomain.local
  • MYDOMAIN
  • 192.168.1.100
  • 255.255.255.0
  • 192.168.100.1
  • 8.8.8.8

下ごしらえ

まずは、いつものおまじないを...

$ sudo apt-get update
$ sudo apt-get upgrade
/etc/interfaces の編集

Samba4の設定について書かれている情報では、/etc/resolv.conf を編集してDNSをSambaサーバ自身を指定するように書かれていますが、Ubuntu12.04以降から/etc/resolv.confを直接変更しても、再起動後元の設定に書き戻されるようになっています。
現在は、/etc/network/interfaces を編集してDNSに関する情報を指定するようになっています。

$ sudo vi /etc/network/interfaces

内容は、以下のようにしました。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    network 192.168.10.0
    bloadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.100 8.8.8.8
    dns-search mydomain.local

dns-nameservers は半角スペースで区切ることで複数指定することもできるので、そこにSambaサーバの自IPアドレスと、プロバイダなどから提供されているDNSサーバのIPを登録しておきます。

これは、後ほどプロバイダ等から提供されているDNSのアドレスは削除することになります。

/etc/hostname の編集

/etc/hostnameでサーバホスト名を編集。

$ sudo vim /etc/hostname
pdc
/etc/hosts の編集

/etc/hosts の内容を次のように設定する。

127.0.0.1       localhost
# 127.0.1.1       mydomain.local pdc # この行はコメントアウトします
192.168.10.141  mydomain.local pdc

※2015年3月14日追記

127.0.1.1はDHCPでアドレスを自動的に取得する場合に使用されるアドレスっぽいので、コメントアウトします。
ここを有効なままにしておくと、後で少しハマります。

再起動

ここで、さきに設定したネットワーク関連情報を反映させるために、再起動させる。

ntpサーバのインストール

NTPサーバをインストールする。

$ sudo apt-get install ntp

/etc/ntp.confの設定を変更する。デフォルトのUbuntuのNTPサーバをコメントアウトして、次のようにしました。

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
#server 0.ubuntu.pool.ntp.org
#server 1.ubuntu.pool.ntp.org
#server 2.ubuntu.pool.ntp.org
#server 3.ubuntu.pool.ntp.org
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp

一旦、NTPサービスを停止させて、時刻を合わせる。

$ sudo service ntp stop
$ sudo ntpdate -B ntp.nict.jp

NTPサービスを再起動後、設定が有効になる。

$ sudo service ntp start

NTPとの同期の状態を確認

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp-b3.nict.go. .NICT.           1 u    8   64  377   13.099   27.284  14.266
*ntp-b2.nict.go. .NICT.           1 u    5   64  377   13.238   51.113  17.961
/etc/fstabの編集

Samba4でのファイル共有機能を利用するためには、ファイルシステムの拡張オプションが必要となります。まずは、/etc/fstab を以下のように変更します。

UUID=cXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1

※UUIDにはそのHDD固有の番号がつきます。

ACLパッケージをインストール。

$ sudo apt-get install acl

その後、再起動し/etc/fstab の設定を反映させます。

Sambaのインストールと初期設定

インストール

samba4と、smbclient、krb5-userをインストール。

$ sudo apt-get install samba smbclient krb5-user

途中でkerberosの設定画面が出てきて、設定をするように促されますので、概ね以下のとおりに設定。

  • レルム: MYDOMAIN.LOCAL
  • あなたのレルムのケルベロスサーバー (kdc) : pdc.mydomain.local
  • あなたのレルムのケルベロス管理サーバー (admin_server) : pdc.mydomain.local
samba-toolでSambaの使用準備をする

まず、デフォルトで作成された設定ファイルを削除か、リネームします。

$ sudo rm /etc/samba/smb.conf

samba-tool で、sambaの基本的な設定をします。

--interactiveオプションで、対話形式で質問されるのでそれぞれ入力していきます。

現時点では、サーバの役割(Server Role)を、ドメインコントローラ(dc)に、DNSバックエンドを、Sambaに内蔵されているDNSで(SAMBA_INTERNAL)、DNS Forwarder IP に、プロバイダ等から指定されているDNSサーバ(ここでは、8.8.8.8)に指定しました。

また今後、Kerberosで認証するときに必要になる、レルム(Realm)を、MYDOMAIN.LOCALとしています。

あとは、管理ユーザ(Administrator)のパスワードを入力すると、セットアップが進んでいきます。

$ sudo samba-tool domain provision --use-rfc2307 --interactive
Realm: MYDOMAIN.LOCAL
 Domain [MYDOMAIN]:
 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.1.100]:8.8.8.8 
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=ad,DC=mydomain,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=mydomain,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 /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              pdc
NetBIOS Domain:        MYDOMAIN
DNS Domain:            mydomain.local
DOMAIN SID:            S-1-5-21-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX

もしも、セットアップに失敗する場合は、ここまでの設定を見なおしてください。
その場合は、一旦、

  • /etc/samba/smb.conf を削除
  • /var/lib/samba/*.tdb を削除
  • /var/lib/samba/private/ 以下のファイルを削除
  • /var/cache/samba/ 以下のファイル(ディレクトリ含む)を削除

した上で、再度 samba-tool domain provision を実行してください。

ドメインのレベルを2008 R2相当に上げる
$ sudo samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2 
krb5.confの差し替え

sambaのProvisioningが無事に終わると、/var/lib/samba/private の下にkrb5.conf が作成されています。先にkrb5.userのインストール時にある程度設定しており、その際にも/etc にkrb5.conf が作成されています。
多くのサイトでは、Samba のProvisioning で作成されたkrb5.conf で /etc/krb5.conf を置き換える、としていますが、ここでは念のため両方を掛けあわせてkrb5.conf を作成しておきます。
こちらも、概ね以下のようになりました。

[libdefaults]
    default_realm = MYDOMAIN.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

[realms]
    MYDOMAIN.LOCAL = {
        kdc = pdc.mydomain.local
        admin_server = pdc.mydomain.local
    }

[domain_realm]
    .mydomain.local = MYDOMAIN.LOCAL
    mydomain.local = MYDOMAIN.LOCAL
dns-nameserversの値を変更する

先ほどのSambaの設定作成の際に作成された/etc/samba/smb.conf に DNS forwarder IPアドレスが設定されているので、/etc/network/interfaces のdns nameservers の値からフォワーディング先のDNS IPアドレスを削除し、自IPアドレスのみにする。

[...]
dns-nameservers 192.168.1.100
[...]

この段階で、もう一度再起動。

テスト

DNS名前解決チェック

hostコマンドで、LDAPサーバ、Kerberosサーバ、自IPのそれぞれが名前解決できるか確認。

$ host -t SRV _ldap._tcp.mydomain.local.
_ldap._tcp.mydomain.local has SRV record 0 100 389 pdc.mydomain.local.

$ host -t SRV _kerberos._udp.mydomain.local.
_kerberos._udp.mydomain.local has SRV record 0 100 88 pdc.mydomain.local.

$ host -t A pdc.mydomain.local.
pdc.mydomain.local has address 192.168.1.100
Administrator としてログインできるか確認
$ smbclient //pdc.mydomain.local/netlogon -Uadministrator
Enter administrator's password:
Domain=[AD] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
smb: \> ls
  .                                   D        0  Sat Jan 17 15:38:46 2015
  ..                                  D        0  Sat Jan 17 15:38:55 2015

                47348 blocks of size 131072. 25303 blocks available
smb: \> exit
$
smbclient でサーバと接続確認
$ sudo smbclient  -L localhost -U%
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       IPC Service (Samba 4.1.6-Ubuntu)
        shiro           Disk
        sysvol          Disk
        netlogon        Disk
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]

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

        Workgroup            Master
        ---------            -------
Kerberosの認証テスト

kerberosのチケットを発行

$ kinit administrator@MYDOMAIN.LOCAL
Password for administrator@MYDOMAIN.LOCAL:
Warning: Your password will expire in 40 days on 2015年04月11日 14時56分38秒

”Warning: ...” とあるけれど、これはパスワードの期限についての警告。現段階では無視します。

次に、kerberosが発行しているチケットの確認をする。

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@MYDOMAIN.LOCAL

Valid starting       Expires              Service principal
2015-03-02T13:33:59  2015-03-02T23:33:59  krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL
        renew until 2015-03-03T13:33:54

ここまでで、初期設定は終わり。

改訂履歴

2015年3月13日 NTPに関する設定を加えました。
2015年3月13日 samba-tool domain provision のオプションから--use-ntvfs を省きました。
2015年3月14日 /etc/hosts の編集内容を変更しました。

カテゴリー: Samba4

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。