Info kplace.plala.jpから移設しました

■目的
 Microsoft Active Directory互換Samba4をテストして見ました。
 参照したSamba AD DC HOWTOの要約メモです。

■Samba4
 Samba4ではMicrosoft Active Directoryサーバー機能をサポートしました。
 Samba AD DC HOWTOのページはこちら

■Samba AD DC HOWTO
 Samba4 AD DCインストール中に参照したHOWTOのメモです。
[概要]
 この資料はMicrosoft Active Directory互換の単一ドメインコントローラとしてのsamba4のセットアップの説明です。
 既存のAD DCをアップグレードの際はディトリビューションのアップグレード資料などを参照ください。

[バージョン]
 sambaのHOWTOは更新を反映させるため頻繁にアップデートされます。
 バージョン4.0以降のリリース計画を参照し、またインストールしたらリリースノートを確認ください。
 本HOWTOに反映されていない重要な情報が含まれる可能性があります。

[Sambaのインストール]
 インストールには2通りがあります。
 ・Sambaを自分自身でビルドしコンパイルする
 ・ディストリビューションのパッケージマネージャを使ってインストールする
  例:https://portal.enterprisesamba.com/.

[パス]
 旧バーションのSambaがインストールされている場合Sambaコマンドを実行の際は注意が必要です。
 旧バージョンのコマンドを実行しないためには$PATH変数が有効とわかるまで[ディレクトリ+コマンド]で実行します。
 /usr/local/samba/bin/
 /usr/local/samba/sbin/
 次のコマンドでSambaのバージョンがわかります。
 どのバージョンにせよ表示されたバージョンのPATHが有効です。
 # samba -V

[サーバー情報]
 このHOWTOでは以下の構成情報を前提とします。
 インストール先: /usr/local/samba/
 ホスト名: DC1
 DNS ドメイン名: samdom.example.com (realm)
 NT4 ドメイン名: samdom
 IP アドレス: 192.168.1.1
 サーバー機能: DC

[provision実行] ..新規ドメイン
 provisionの実行で基本データベースが生成され、新規Sambaドメインコントローラーの構成時に使用されます。
 既存のドメインへの追加の場合は以下を参照ください。
 ・「Joining a Windows Domain Controller as an additional DC in a Domain HowTo」
 provisionのセットアップはActive Directoryへの書き込み権限のあるユーザで実行します。
  そうでなければpermission deniedエラーとなります。

# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive
  対話形式でprovisionが実行されますが、対話形式でない項目も含まれます。
  samba-tool domain provision --helpで追加事項を確認することを推奨します。

 --use-rfc2307オプションはSambaによるActive DirectoryでPOSIX属性でのファイルなどの格納を可能にします。
 またActive Directory内にNIS情報を生成し、UnixにおけるUID/GIDでの管理を可能にします。
 この機能は後で手動セットアップするよりprovision中に有効にするほうが簡単です。
 必要がない場合にこのオプションを指定してもsambaの構築には影響を与えません。

[provision実行上の重要事項]
 Samba4.0.0rc1のprovisionコマンドではSamba内部DNSがデフォルトです。
 内部DNSに代えてBindを使う場合はコマンドに--dns-backend=BIND9_DLZオプションを追加ください。
 ただしこれが最終設定ではなく必要な時いつでも入れ替えが可能です。

 provisionをやり直す場合は/usr/local/samba/etc/smb.confを削除する必要があります。
 またSambaデータベースファイルが生成されていたらrm -rf /usr/local/samba/private/*を実行し削除します。

 ドメインの管理者パスワードには少なくとも1個の大文字/数字を含み長さ8文字以上の要求を満たす必要があります。
 前記条件を満たさない場合provisionを実行してもエラーとなるので、必要なファイルを削除後再実行してください。

[Samba/NT4ドメインのADへの移行(Classicupgrade)]
 既存のSamba NT4ドメインをSamba ADに移行の場合はClassicupgrade HowToを参照ください。

[Samba AD DCの起動]
 注意:もし前のバージョンのsmbd/nmbd/winbinddを実行中ならsambaを起動する前に停止する必要があります。
 Sambaを起動するにはrootユーザで単純に起動するのみです。
 # /usr/local/samba/sbin/samba
 このコマンドではsambaは標準モードで実行されます。
 sambaはまだ各プラットフォームに対応した起動スクリプトを装備していません。
 Samba4 Init-Scriptのページのサンプルから、使用中の環境に合わせたスクリプトの作成はそれほど難しくありません。

開発用としてsambaを実行するなら次の起動コマンドがより有用です。
 # /usr/local/samba/sbin/samba -i -M single
 このコマンドでは実行がシングルモードに制限され、すべてのログメッセージが標準出力デバイスに出力されます。
 これによりgdbによるSambaのデバッグがより容易になります。
 gdbの制御の下でSambaを起動するには次のコマンドを使います。
 # gdb --args /usr/local/samba/sbin/samba -i -M single

[テスト]
 最初にsmbclientのバージョンが"Version 4.x"かを確認します。
 $ /usr/local/samba/bin/smbclient --version
 
 次に共有フォルダーのリストを表示しActiveDirectoryの操作に必要なnetlogon/sysvolが含まれるかを確認します。
 これらの共有はprovision/upgrade中にsmb.confに設定されます。
 $ /usr/local/samba/bin/smbclient -L localhost -U%
       Sharename       Type      Comment
       ---------       ----      -------
       netlogon        Disk
       sysvol          Disk
       IPC$            IPC       IPC Service (Samba 4.x.y)

 sambaの起動に失敗したら次のコマンドを実行し再起動します。
 # killall samba
 # /usr/local/samba/sbin/samba

 認証機能のテストではprovision中に生成したドメインのAdministratorアカウントでnetlogon共有に接続します。
 次のコマンドの出力が以下と同様かを確認します。
 $ smbclient //localhost/netlogon -UAdministrator% -c 'ls'
 Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y]
   .                                   D        0  Tue Dec 11 20:00:00 2012
   ..                                  D        0  Tue Dec 11 20:00:00 2012

[DNSの構築]
 DNSのセットアップはSambaとADの動作に必須です。正しいDNSの構成なくしてはKerberos認証は動作しません。
 言い換えれば多くの基本的な機能が動作しないことを意味します。
 構成ミスによりデバッグに多くの時間をかけるのに比べれば、DNSのセットアップに多少の時間を割くほうが有益です。

[DNSサーバー]
 DNSに関する追加と支援のための情報はDNSのページを参照ください。

[Samba内蔵DNSサーバー]
 Sambaはデフォルトで内部DNAを使用するので特にセットアップは要求されません。
 DNSが解決できないリクエストのフォワード指定は単純に以下をsmb.confで指定し、sambaを再起動します。
 dns forwarder = {フォワード先のDNSのIP-Address}
 内部DNSの起動が有効になるにはポート53 udp/tcpが他のDNS/Dnamaskなどのアプリで使用されないことが必要です。
 Sambaがポート53を使えない場合はsambaログファイルを参照ください。
 Failed to bind to 0.0.0.0:53 TCP - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
 どのアプリがポート53を使っているかをチェックするには次のコマンドをroot権限で実行します。
 # netstat -tunpe | grep ":53"
 53ポートはsambaのみに割り付けらるべきです。
 トラブルシューティングに関する情報はSamba Troubleshootingのページを参照ください。

[BIND]
 provisionでdnsとしてBIND9_DLZを選択したら追加のセットアップのためにBind as DNS backend HowToを参照ください。
 そこではセットアップやBINDの構築に関する多くの情報やSamba ADと連携のための構成情報を見ることができます。
 もし最初に内部DNSを指定しても必要な時にBindに切り替えが可能です。

[/etc/resolv.conf]
 DNS名前解決のためにはサーバーの/etc/resolv.confを編集する必要があります。
 以下のサンプルを使用しているドメイン名とIPアドレスを環境に合うように編集してDNSの名前解決ができるようにします。
 domain samdom.example.com
 nameserver 192.168.1.1
 注意:IPアドレスがDHCPで配布されているなら/etc/resolv.confは自動的に更新されます。
 DHCPのDCへの利用は推奨しませんが自動更新の停止/変更についてはディストリビューションのドキュメントを参照ください。

[DNSのテスト]
 DNSの正常動作をテストのため、次のコマンドを実行して出力結果を確認します。
 $ host -t SRV _ldap._tcp.samdom.example.com.
 _ldap._tcp.samdom.example.com has SRV record 0 100 389 samba.samdom.example.com.
 $ host -t SRV _kerberos._udp.samdom.example.com.
 _kerberos._udp.samdom.example.com has SRV record 0 100 88 samba.samdom.example.com.
 $ host -t A samba.samdom.example.com.
 samba.samdom.example.com has address 192.168.1.1
 出力された結果がドメイン名/ホスト名/IPアドレスを使用の環境に置き換えて同じであればOKです。
 もしエラーがあればシステムログをチェックします。

[Kerberosの設定]
 Kerberosの設定はkrb5.confファイルで行います。
 このファイルの保存場所は一般に/etcディレクトリです..ディストリビューションのドキュメントを参照ください。
 provisionコマンドで生成された/usr/local/samba/share/setup/krb5.confのファイルとの置き換えが 可能です。
 このファイルのデフォルトの内容は以下です。
 [libdefaults]
        default_realm = ${REALM}
        dns_lookup_realm = false
        dns_lookup_kdc = true
 注意:レルム(Realm)名を忘れたら以下のコマンドで表示することができます。
 samba-tool testparm --suppress-prompt | grep realm

[Kerberosのテスト]
 最も簡単なテストはkinitコマンドです。
 $ kinit administrator@SAMDOM.EXAMPLE.COM
 注意:ドメイン名は大文字で入力します。
    使用しているディストリビューションによっては警告のプロンプトを表示するかもしれません。
      Your password will expire in x days on ...

 kerberosが動作してチケットを受信したのを確認のために次のコマンドを実行します。
 $ klist
 Ticket cache: FILE:/tmp/krb5cc_1000
 Default principal: administrator@SAMDOM.EXAMPLE.COM
 Valid starting     Expires            Service principal
 02/10/13 19:39:48  02/11/13 19:39:46  krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
 Kinitあるいはklistのコマンドが見つからない場合はSamba_4_OS_Requirementsで必要なパッケージを確認ください。
 Kerberosはリモートクライアントからも実行可能ですが先にクライアントのkrb5.confとresolve.confの設定が必要です。
 注意:NATで接続されたクライアントの場合はドメインコントローラのkrb5.confに以下を追加しなければなりません。
 [kdc]
        check-ticket-addresses = false
 注意:もしprovisionで指定したパスワードを忘れた場合は以下のコマンドをルート権限で実行しリセットできます。
 samba-tool user setpassword administrator

[NTPの設定]..オプションただし重要
  Active Directoryはクライアントとドメインコントローラ間の正確な時間の同期を要求します。
  したがってNTPあるいはほかの時間同期の手段の実行を強く推奨します。
  Configure NTPのページではSELinuxポリシーを含めてNTP設定のプロセスを提示します。

[関連情報]
 Samba Wikiではバックアップ/リカバリ/共有設定やADのためのクライアントの設定/WindowsからのSambaAD管理あるいはADに対する認証など 多くの有用な関連 情報を提供します。
 HOWTOやチュートリアルなど多く情報についてはSamba Wiki user documentationページを参照ください。

[成功/失敗例の報告を]
 DCとしてのSambaはいまでも開発途中です。
 ユーザの成功/失敗の内容をメーリングリストhttp://lists.samba.orgで報告されることを奨励します。
■結果
 Active DirectoryドメインコントローラとしてのSamba4のHOWTOをメモしましたが意外にも簡略化されていました。
 Samba4はMicrosoft ActiveDirectory互換でかつGUIのWindowsツールが利用できる点で画期的です。
 Samba4は安定版ながら特にファイル共有などの部分は完成まで時間が必要そうに感じます。

  blog    MovableType