UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS6 Samba4概要



■Samba4の概要

2012/12/11に6年の年月をかけてようやくSamba4が正式リリースされました。これまで長年Samba3が市場で使われていましたが、あまり深く設定したことはないので、これを機にSamba4を使い倒せればと考えています。

Samba4が備える主な機能は以下の3つです。

  1. Windows ActiveDirectory互換ドメインコントローラ
  2. ファイルサーバ機能
  3. Windowsドメインのメンバーサーバ

上記機能によりクライント側はサーバがLinuxでもWindowsServerでも同様のサービスを利用することが可能となります。

Samba4の目玉機能はActiveDiectoryドメインの構築となります。ドメインとはネットワークに参加するPCやサーバなどを管理するための単位でこれを管理するサーバがドメインコントローラです。組織に複数のサーバがありWindowsクライアントからこれらのログインを一元管理したい場合はWindowsServerで管理する必要がありましたが、Samba4からこれをLinuxに置き換えることが可能となります。

Samba4によりLinuxアカウントとWindowsアカウントを統合しプリンタなどのリソースへのアクセスを一元化できます。複製機能で負荷分散の実現や耐障害性の向上も可能です。これでWindows Serverと肩を並べられるようになります。Samba4はオープンソースソフトウェアでありライセンス料は不要です。マイクロソフトのCALが不要になるのは大きな組織になればなるほどメリットは大きくなります。

ADを導入していない環境でSamba4を導入すれば利用するプリンタなどを予め設定するなど内部統制やPC環境の統一に一役かうことができます。ユーザやコンピュータ、その他グループポリシーなども全てオブジェクトとして一元的な管理が可能となります。さらにWindows標準のGUIツール「リモートサーバ管理ツール」が使えるため運用も楽になります。


Samba4の主な新機能として以下のものが挙げられます。


  • Directory Replication Service ( 冗長化機能 )
  • DNS動的更新
  • グループポリシー
  • 読み取り専用ドメインコントローラ ( RODC )
  • リモートサーバ管理ツール ( RSAT ) への対応
  • SMB 3.0のサポート

■Directory Replication Service


Samba4はADと同様、マルチマスター方式による冗長化機能を備えています。マルチマスターとはデータの更新も可能なマスターを複数サーバで保持するものであり、1台のサーバがダウンしても運用を維持できる。実現には複数のドメインコントローラが配置された構成で1つのDCに加えられた変更をほぼリアルタイムに別のDCに複製することにより各DCが最新状態に保持できます。

Samba4はADと同様にサイトを構成可能です。サイトとは組織内の物理的なネットワーク構成を表すオブジェクトであり同一ドメインでも東京と大阪のように物理的に離れた拠点のそれぞれにDCが配置されている場合、サイトを構成すると効率が良くなります。サイトを構成しない場合、一方のDCを変更するとリアルタイムに一方のDCにレプリケーションするため帯域増大を招いていしまいます。サイトを構成しサイト間のレプリケーションをコントローすればこの問題を回避できます。


■DNSの動的更新


ADと同様、Samba4を運用するにはDNSが必須となります。Samba4でのDNSの役割は(1)ドメインに参加しているコンピュータの登録と名前解決、(2)ドメインコントローラの検索、の2点です。

登録と名前解決は完全修飾ドメイン名とIPアドレスを対応付けて実現し、対応付けは動的更新機能で実施します。動的更新はクライアント自身がIPアドレスをDNSサービスに登録・更新する機能でホスト名とIPアドレスに変換するためのAレコードとIPアドレスをホスト名に変換するためのPTRレコードが自動的に登録されます。これによりDHCPでIPアドレスが動的に割り振られPCも名前解決できます。

また、DC構築時にSRVレコードとAレコードが自動的に登録されます。SRVレコードとはサービスの提供場所を記載したリソースレコードでありDCが提供するサービスであり例えばKerberos認証サービスなどが登録されています。このためクライアントはDCのサービスを利用する際にこのレコードを参照しログオンできる仕組みになります。


■グループポリシー


グループポリシーはコンピュータの使用環境を制限したり予め必要な設定を行ったりする機能です。「パスワードを7文字以上に制限する」「特定ソフトウェアの使用を制限する」「部署ごとに使用すべきプリンターを前もって設定する」といった設定が可能となります。Samba4のグループポリシーの設定にはWindowsのグループポリシーの管理コンソールが使用可能です。


■読み取り専用ドメインコントローラ ( RODC )


Samba4ではDCを読み取り専用にして構成できる。ADではWindows Server2008からこの機能が備わりました。システム管理者がいない、あるいはセキュリティ対策が不十分なオフィスでとりあえずユーザ認証を実現したい場合に有用と思われます。ADからの完全移行が不安な場合もSamba4をRODCで構築し、ADと連携する構成も可能です。

■RSATへの対応


Samba4ではWindowsが備えるRSATで管理可能です。RSATとはWindowsServerのActiveDirectoryやDNSなどのGUI管理ツールです。

したがってLinuxに精通していない管理者でも運用のハードルが低くなっています。Samba4には「samba-tool」という管理用コマンドも存在しますがADとしてSamba4を運用する場合、RSATとsamba-toolでは機能的な差はありません。日常的な運用ならばsamba-toolのコマンドを習得する必要もないと思われます。

■SMB3.0のサポート


Samba4のファイルサーバはWindowsServer2012およびWindows8で採用されたSMB3.0プロトコルに対応しています。SMB3.0はマイクロソフト社が提供するファイル共有プロトコルで高速転送、SMBデータ暗号化、透過的フェイルオーバーなどの特徴を持ちます。SMB3.0によりWAN経由でデータにアクセスする際のアプリケーション待ち時間の短縮、データ傍受からの保護が可能となります。




Samba4ではActiveDirectoryであるためWindowsの世界でNTドメインとADドメインが異なるようにSamba4と3で大幅に異なります。主な違いは次の通りです。


  • プロセスモデル
  • DNSサーバとの連携あるいは組み込み
  • LDAP、Kerberosの組み込み
  • 新しいバックエンド「ldb」
  • Pythonによるインターフェイスの提供


■プロセスモデル

Samba3では「smbd」「nmbd」「winbind」のように役割ごとに動作するプロセスが異なっていました。Samba4からは「samba」というプロセスに統一し、必要に応じてsambaプロセスからsmbd、nmbd、winbind相当の機能を呼び出すようになっています。


・Samba3プロセスモデル

・Samba4プロセスモデル

■DNSサーバとの連携

Samba4にはADの機能を実現するためにDNSが必要なわけですが、現時点でSamba4がDNSを利用するためには2つの方法があります。

1つめは内部DNSの使用でSamba4にDNSサーバを取り込んだものでデフォルトではこの内部DNSが使用されます。この場合、特別な設定を実施せずともコンピュータやDCの名前解決ができます。また、DNSのゾーン情報はSamba4のデータベースに登録されるため別のDCにレプリケーションされます。これにより複数のサーバでDNSのゾーン情報を更新可能となります。

2つ目の方法はBINDと連携する方法でこの場合、BINDを通常のDNSサーバとして設定しSamba4用のゾーン情報を追記すれば連携が可能となります。

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

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


追記した情報にはBINDのDLZドライバを利用してSamba4のデータベースにリソースレコードを登録する設定が施されています。なお、DLZドライバは通常であればテキストファイルに記述されるDNSのゾーン情報をMySQLなどのデータベースに登録する機能でSamba4の場合、ユーザやコンピュータなどのSamba4についての情報とDNSのゾーン情報を統合的に管理するためにこの機能を利用しています。このためSamba4と連携するBINDはDLZドライバをサポートしている必要があります。またDLZドライバを使うことにより内部DNSと同様に別のDCへのレプリケーションが可能となります。


■LDAP、Kerberosの組み込み

Samba4はADと同様にディレクトリサービスを実現するために内部にLDAP機能を取り込んでいます。Samba3においてLDAPを利用する場合は同一サーバか別サーバで稼働するLDAPサーバと連携していました。これがSamba4においては標準のLDAPの機能だけではADのように振る舞えずADは標準的な技術であるLDAPを取り込んだサービスだがマイクロソフト社の独自の実装があるため仕様に完全に準拠したOpenLDAPを使用してもADとしての機能を実現できませんでした。そのためSamba4はADのLDAPと互換性のある機能を独自に実装して組み込みました。

またADを構成する上で重要なKerberosも内蔵しています。Samba3ではADと連携する際に「MIT Kerberos」が必要でしたがADとの互換性を実現するため「Heimdal Kerberos」を組み込んでいます。ADのKerberosは仲介役のサーバであるKDC ( Key Distribution Center )として機能しています。Samba4にもKDCとして機能を組み込む必要がありましたがSamba3で採用していたMIT Kerberosを使用する場合、多くのライブラリを必要とするためHeimdal Kerberosによる実装となりました。


■新しいバックエンド「ldb」

Samba4から新しくldbというデータベースが提供されるようになりました。これは組み込みのLDAP機能の実装でLDAP風のAPIでもあります。主な特徴としては以下のものがあります。

  • LDAP風の階層構造
  • tdbにもLDAPにもデータを格納できる
  • スキーマ不要
  • バイト単位のトランザクション
  • 高速な検索
  • 単一DBファイル
  • ldbを処理するためのツール群


ldbsearchはOpenLDAPにおいてLDAPへの検索に使用するldapsearchのようにデータベースに問い合わせ、検索の開始位置、検索スコープ(範囲)、フィルターの指定などができる。出力結果もldapsearchと同じですがldapsearchは検索先をサーバ単位で選択しますがldbsearchはファイルごとに問い合わせます。

Samba4はldbのデータベースを複数保持しておりそれぞれに対して問い合わせが可能です。これはSamba3のtdbと同様だがLDAPのように検索でき情報量も豊富な点が異なります。


■Pythonモジュールによるインターフェイスの提供

Samba4ではPythonを積極的に利用しsamba-toolコマンドをpythonスクリプトで作成している。その中身はSamba4が提供するモジュールを組み合わせて構成されている。つまりユーザ自らが独自のスクリプトを作成し直接Samba4のデータベースにアクセスできます。これによりAD相当のデータを利用したワークフローツールやID連携ツールなどの高度なアプリケーションの作成をPythonで実現できます。なお、ADではアクセス手段としてActiveDirectoryインターフェイスがありますが、VisualBasicなどのマイクロソフト社製品の利用が前提となっています。




 

 関連記事
 Samba4の初期セットアップ
 Samba4をRSATで管理する

 Samba4で2台目のDCを追加する
 Samba4のsamba-toolを使用する
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.