Sambaは長らくWindowsファイル共有の互換実装として知られてきましたが、バージョン4以降はActive Directory(AD)のドメインコントローラー(DC)機能も実装しています。既存のWindows Server AD環境と共存させながら段階的に導入できるこのアプローチは、ライセンスコスト削減やOSSへの移行を検討している運用担当者にとって現実的な選択肢の一つです。
本記事では、稼働中のWindows Server AD環境に手を加えず、SambaをセカンダリDCとして追加する「段階導入」の設計方針・手順・検証・切り戻しまでを一通り解説します。
SambaをAD DCとして使う意義と2026年時点の現状
Samba 4.xのAD DC機能は、Kerberos認証・LDAPディレクトリ・DNSサービス・GPO(グループポリシー)などの主要コンポーネントをOSSで実装しています。2026年時点では、Windows Server 2022以前との相互運用性は実運用レベルに達しており、主要ディストリビューション(Ubuntu 24.04 LTS、RHEL 9系)向けのパッケージが公式またはサードパーティリポジトリ経由で整備されています。
一方で制限事項も存在します。Windows Server 2025で追加されたAD機能の一部はSamba側の対応が追いついていないケースがあります。また、Microsoft Entra Connect(旧Azure AD Connect)との連携については、Samba側の正式サポート外の領域が残っています。導入前にSambaの公式リリースノートと既知の制限リストを確認することが重要です。
段階導入のポイントは「いきなりプライマリDCを置き換えない」ことです。まずSambaをセカンダリDC(追加DC)としてドメインに参加させ、レプリケーションを確認してから役割を移管するアプローチをとることで、既存環境への影響を最小限に抑えられます。
共存設計の前提条件と設計方針
ドメイン機能レベルの確認
SambaがサポートするADドメイン・フォレスト機能レベルは、バージョンによって上限が異なります。Samba 4.19以降はWindows Server 2016機能レベルに対応しており、2026年時点の多くの環境ではこのレベルが現実的な共通基盤となります。作業前に既存AD環境の機能レベルを確認しておきます。
# Windows側(PowerShell)
Get-ADDomain | Select-Object DomainMode
Get-ADForest | Select-Object ForestMode
機能レベルがSambaの対応上限を超えている場合、セカンダリDCとして参加すること自体が失敗します。この確認を省略することはよくあるつまずきの一つです。
DNS設計の選択肢
SambaのAD DCはDNSサーバーを内蔵しており、「Samba内蔵DNS」と「BIND9 DLZバックエンド」の2方式を選べます。
- Samba内蔵DNS:設定が簡単で小〜中規模環境向き。既存のBIND9との統合はできない。
- BIND9 DLZ(Dynamic Loadable Zones)バックエンド:既存BIND9環境との統合が可能。設定の複雑さが増す。
既存AD環境のDNSがWindows DNS Serverで稼働している場合、SambaのDNSとゾーン委任を適切に設定する必要があります。一般的なアプローチは、Samba DCのホスト名に対するAレコードを既存DNS側に手動追加し、Samba側では内蔵DNSを起動しないか、サイト固有のゾーン委任を設定するかのどちらかです。
段階導入の手順:既存ADへのSamba DC参加
想定例として、既存ドメイン corp.example.local(Windows Server 2022 DC稼働中)に、Ubuntu 24.04のSamba DCを追加する流れを示します。
1. パッケージインストールと事前設定
sudo apt update
sudo apt install -y samba winbind krb5-user
/etc/krb5.conf を既存ADに合わせて設定します。DEFAULT_REALM には大文字でドメイン名を指定します。
[libdefaults]
default_realm = CORP.EXAMPLE.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
2. smb.conf の初期化とドメイン参加
既存の smb.conf を退避してから samba-tool でドメイン参加を実行します。
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo samba-tool domain join corp.example.local DC \
-U "Administrator" \
--dns-backend=SAMBA_INTERNAL \
--option="dns forwarder=<既存DNSサーバーIP>"
domain join コマンドは既存ADのAdministratorパスワードを対話入力します。成功するとSysvol・NTDSのレプリケーションが自動開始します。
3. systemdサービスの有効化
sudo systemctl unmask samba-ad-dc
sudo systemctl enable --now samba-ad-dc
従来の smbd・nmbd・winbind を個別起動する方式はSamba AD DCでは使いません。samba-ad-dc.service がすべてを管理します。これらを混在させるとサービス起動に失敗するため、旧来の設定が残っていないか確認します。
動作検証のチェックポイント
参加直後に以下を順番に確認します。
レプリケーション状態の確認
sudo samba-tool drs showrepl
KCC connection のエラーや replication failure が出ていないことを確認します。レプリケーション遅延は数分程度発生することがありますが、数十分以上継続する場合はDNS解決やファイアウォールの設定を疑います。
Kerberos認証テスト
kinit administrator@CORP.EXAMPLE.LOCAL
klist
TGT(Ticket Granting Ticket)が発行されれば、認証基盤としては動作しています。
Windows側からのDCリスト確認
nltest /dclist:corp.example.local
追加したSamba DCのホスト名がリストに現れれば、ADへの参加が正常に完了しています。
Sysvolレプリケーション確認
sudo samba-tool ntacl sysvolcheck
エラーが出る場合は samba-tool ntacl sysvolreset で権限を修正できますが、既存のGPOに影響が出る可能性があるため、本番環境では慎重に実行します。
切り戻し手順:Samba DCをADから安全に除去する
導入直後に問題が発覚した場合や検証環境に戻す必要が生じた場合の切り戻し手順です。
1. FSMOロールを保持していないことを確認
SambaをFSMO(Flexible Single Master Operation)ロールホルダーに昇格させていた場合は、先にWindowsのDCへロールを移管します。
# Samba側でロール確認
sudo samba-tool fsmo show
ロールを保持している場合は、WindowsのADUCまたは netdom コマンドで移管してから次のステップに進みます。
2. SambaをDCリストから除去
# Windows側(管理者権限のPowerShell)
Remove-ADDomainController -Identity "samba-dc01" -Force
強制削除(-Force)は対象DCがオフライン時にも使用できますが、レプリケーションが完了していない状態で実行するとメタデータが残存します。後続の repadmin /showrepl でエラーが続く場合は ntdsutil の metadata cleanup でメタデータを手動削除します。
3. Linux側の後処理
sudo systemctl stop samba-ad-dc
sudo systemctl disable samba-ad-dc
sudo apt purge samba winbind
sudo rm -rf /etc/samba /var/lib/samba
既存DNS側にSamba DCのAレコードが残っている場合は手動で削除します。SRVレコード(_kerberos、_ldap など)もDNSゾーンに残留することがあるため合わせて確認します。
2026年現行環境での追加注意点
Samba 4.20以降のSMB1完全無効化
2024〜2025年のリリース系でSMB1がデフォルト無効化されました。SMB1に依存した古いNASやスキャナーを同一ドメインで使用している場合は、ファイル共有の互換性を個別に確認する必要があります。
Ubuntu 24.04のSamba AD DCサービス管理
Ubuntu 24.04 LTSに含まれるSambaパッケージはAD DC機能を含みますが、samba-ad-dc のsystemdサービスファイルの扱いが22.04と異なる部分があります。インストール直後はサービスがマスク状態になっているため、systemctl unmask を省略するとサービスが起動しません。よくあるつまずきとして報告されているため、手順通りに確認します。
RHEL 9 / AlmaLinux 9 系でのパッケージ選択
RHELおよびその互換ディストリビューションでは、公式リポジトリのSambaパッケージからAD DC機能が除外されています(RHELのサポートポリシーによる)。AD DCを構成する場合はSamba公式のリポジトリか、SerNet提供のパッケージを利用する必要があります。
Windows Server 2025との混在環境
Windows Server 2025で導入されたADスキーマ拡張のうち一部について、2026年10月時点のSambaの対応状況は開発中または未確認の可能性があります。混在環境での動作は、Samba公式の互換性マトリクスと各バージョンのChangelog(WHATSNEW.txt)を事前に確認した上で進めることが重要です。
段階導入の最大の利点は「失敗してもWindowsのDCが生き続けている」点にあります。この設計方針を守ることが、本番環境でのOSS DCへの移行リスクを大幅に低減する基本戦略です。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
PR・広告
コマンド操作から基本運用までを手を動かして学べる定番書。記事で触れた技術の土台固めに。
※ Amazonのアソシエイトとして、当サイトは適格販売により収入を得ています。
