SambaはWindows OSの持つ各種ネットワーク機能を実装したフリーソフトウェアです。中でも、利用できるファイル共有サーバー
実はこのSambaはActive Directory
Samba ADのメリット・デメリット
Samba ADのメリット・
そもそもSamba ADというよりAD自体のメリットですが、第836回でも触れた通りユーザーやコンピューターを一元的に管理や認証・
ADを使った認証・
また、ADによるリソース管理の例については第836回でも紹介しましたが、グループポリシー
どちらも会社組織において統制に関わる重要な部分であり、かといって、1ユーザー・
続いて、Samba ADを使うことのメリットですが、このようなAD
Windows Serverのライセンスは価格的に個人で購入するにはちょっとハードルが高いと考えられます。ご家庭でAD環境を運用してみたいといった場合にはSamba ADの出番かもしれません。最近だと、ADに参加できるNASといったものもあるようなので、試してみたいという方もいるかと思います。
ライセンス以外でも、例えばRaspberry PiのようなARMボード
また、AD
一方で、世の常ですが、メリットはデメリット
まず、Samba ADはあくまで互換ソフトウェアであり、ADDSそれ自体ではないという点が挙げられます。例えば、Sambaでは使用できる機能レベルの選択の幅に制限がある、あるいは、選択できたとしても動作しない機能がある可能性があります。
「機能レベル」
Samba ADの機能レベルは、公式情報を確認すると、Windows Server 2008 R2, 2012, 2012 R2, 2016の各機能レベルが"Supported Functional Levels"とされています[3]。ただし、その機能レベルを選択できるからといって、その機能のすべてが実装されているわけではありません。機能レベルごとに欠けている機能や不完全な機能があります。なお、筆者が見た限りです
また、機能レベルに関係なくSamba AD全体で実験的だったり、制限のあったりする機能や提供されていない機能[4]があります。Windows Server 2019, 2022, 2025の機能レベルは現時点で選択肢として用意されていないようです[5]。
加えて、Samba ADの構築・
このように互換ソフトウェアであるSamba ADは本家のADDSと比べると当然ながら不足や制約、考慮すべき点がそれなりにあります。そのため、各種機能を駆使した大規模なADを構築・
……と、どうしても
1台目のSamba AD DCの構築
今回は次のような構成でSamba AD DCを構築します。
- ドメイン名:example.
com - 1台目のDC
(今回構築するもの) - ホスト名:samba-ad-dc01
- IPアドレス:192.
168. 1.150
- 2台目のDC
(次回構築するもの) - ホスト名:samba-ad-dc02
- IPアドレス:192.
168. 1.151
- 1台目のDC
- OS:Ubuntu Server 24.
04 LTS
DCはドメインのユーザーやコンピューターの認証・
それでは、1台目のSamba AD DCを構築していきます。
必要なパッケージ群をインストールします。
samba-ad-dc01$ sudo apt install -y samba-ad-dc krb5-user bind9-dnsutils
途中、krb5-user
パッケージのインストールの際に、デフォルトのレルム名を聞かれますが、空白のままEnterで抜けてください。
パッケージ群のインストールが完了したら、デフォルトで起動するSambaのサービスを停止・
samba-ad-dc01$ sudo systemctl disable --now smbd nmbd winbind samba-ad-dc01$ sudo systemctl mask smbd nmbd winbind
これらのSamba関連のサービスを停止・smb.
を削除
samba-ad-dc01$ sudo rm /etc/samba/smb.conf
smb.
ファイルを削除したら、samba-tool
コマンドでドメインを展開します[7]。
samba-ad-dc01$ sudo samba-tool domain provision --use-rfc2307 --interactive Realm: example.com Domain [example]: 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) [127.0.0.53]: 192.168.1.1 Administrator password: Retype password:
入力項目を順に解説します。
いきなり"Realm"や"Domain"と似たようなことを聞かれて
"Realm"はDNSドメイン名を聞かれているため、今回の場合はexample.
と入力します。ADDSでドメインを作成する際の
他方、"Domain"はNetBIOSのドメイン名を入力する項目です。他のドメインと重複しない限りは、DNSドメインをドットで区切った一番左の部分example
)[example]
となっているようにデフォルト値もそうなっており、今回はそのままEnterを押して確定します。同じく、ADDSの構成ウィザードとの対応でいうと、
"Server Role"はデフォルトのdc
となっていますので、空欄のままEnterを押してこのマシンをDCとしてドメインをデプロイするようにします。
"DNS backend"ではDCの持つDNS機能を提供するバックエンドの選択を選択します。デフォルトではSambaにビルトインされたDNSサーバー機能SAMBA_
)SAMBA_
で進めるため、そのままEnterを押して確定します。
"DNS forwarder IP address"にはDNSフォワーダーのIPアドレスを入力します。通常、ドメインのDNSサーバーexample.
)127.
が"DNS forwarder IP address"のデフォルト値となっています[11]が、これはスタブモードで動作しているsystemd-resolved
のアドレスです。このあとsystemd-resolved
は使用できないようにするため、環境に合わせて192.
に)
"Administrator password"にはAdministratorユーザーのパスワードを入力します。確認のためもう一度入力します。
すると、何やら大量のログが流れますが、最後に次のようなログが出て、コマンドを抜けるはずです。
INFO 2025-02-24 14:04:05,105 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2432: A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf INFO 2025-02-24 14:04:05,105 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2434: Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink! INFO 2025-02-24 14:04:05,157 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2102: Setting up fake yp server settings INFO 2025-02-24 14:04:05,182 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #493: Once the above files are installed, your Samba AD server will be ready to use INFO 2025-02-24 14:04:05,182 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #498: Server Role: active directory domain controller INFO 2025-02-24 14:04:05,183 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #499: Hostname: samba-ad-dc01 INFO 2025-02-24 14:04:05,183 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #500: NetBIOS Domain: EXAMPLE INFO 2025-02-24 14:04:05,183 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #501: DNS Domain: example.com INFO 2025-02-24 14:04:05,183 pid:3170 /usr/lib/python3/dist-packages/samba/provision/__init__.py #502: DOMAIN SID: S-1-5-21-1227575069-1623886296-1303063441
ちなみに--use-rfc2307
というオプションは、RFC 2307に従い、LDAP
ここで生成されたsmb.
の設定値を確認してみます。
samba-ad-dc01$ cat /etc/samba/smb.conf # Global parameters [global] dns forwarder = 192.168.1.1 netbios name = SAMBA-AD-DC01 realm = EXAMPLE.COM server role = active directory domain controller workgroup = EXAMPLE idmap_ldb:use rfc2307 = yes [sysvol] path = /var/lib/samba/sysvol read only = No [netlogon] path = /var/lib/samba/sysvol/example.com/scripts read only = No
ちなみに、上ではインタラクティブにドメインを展開しましたが、オプションを使ってDNSフォワーダーを除く各値を引き渡すことも可能です[12]。
samba-ad-dc01$ sudo samba-tool domain provision --domain example --realm example.com --adminpass <Administratorユーザーのパスワード> --server-role dc --use-rfc2307 --dns-backend SAMBA_INTERNAL
ただし、DNSフォワーダーを指定するオプションはないので、ここだけはあとからsmb.
を編集します。
Samba AD DCの設定が完了したら、DNS周りの設定をおこないます。今回、Samba AD DC自身にDNSサーバーの機能を持たせたので、ドメインのメンバーサーバー等からの名前解決リクエストをTCP/systemd-resolvd
もTCP/systemd-resolvd
を停止・
samba-ad-dc01$ sudo unlink /etc/resolv.conf samba-ad-dc01$ cat << EOF | sudo tee /etc/resolv.conf > nameserver 127.0.0.1 > search example.com > EOF samba-ad-dc01$ sudo systemctl disable systemd-resolved --now
また、samba-tool
が生成したファイルで置き換えます。
samba-ad-dc01$ sudo cp -f /var/lib/samba/private/krb5.conf /etc/krb5.conf
これで準備が整ったのでいよいよサービスを有効化・
samba-ad-dc01$ sudo systemctl enable samba-ad-dc --now
ここで動作確認をしておきましょう。
まずは、ADユーザーでの認証が成功するかをkinit
でADユーザーとして認証してKerberosチケットを受け取り、klist
で受け取ったチケットを確認してみます。次のような表示になっていればAdministratorユーザー
amba-ad-dc01:~$ kinit Administrator Password for Administrator@EXAMPLE.COM: Warning: Your password will expire in 41 days on Mon 07 Apr 2025 02:04:04 PM UTC samba-ad-dc01:~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: Administrator@EXAMPLE.COM Valid starting Expires Service principal 02/24/2025 14:06:55 02/25/2025 00:06:55 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 02/25/2025 14:06:52
また、ADはDNSに依存するため、名前解決機能の動作状況を確認しておきます。SRVレコードを引いて確認してみます。
samba-ad-dc01$ for srv in _ldap._tcp _kerberos._tcp _kerberos._udp _kpasswd._udp; do echo -n "${srv}.example.com: "; dig @localhost +short -t SRV ${srv}.example.com; done _ldap._tcp.example.com: 0 100 389 samba-ad-dc01.example.com. _kerberos._tcp.example.com: 0 100 88 samba-ad-dc01.example.com. _kerberos._udp.example.com: 0 100 88 samba-ad-dc01.example.com. _kpasswd._udp.example.com: 0 100 464 samba-ad-dc01.example.com.
確認したレコードの詳細
ドメイン参加
最終的にはDC2台構成を目指していますが、1台構築した時点でSamba ADドメインは利用できる状態になっています。そのため、ここでWindowsマシンをSamba ADドメインに参加させて、動作を確かめてみます。なお、ドメインに参加できるのはクライアント版WindowsだとProエディション以上です。
繰り返しになりますが、ドメインに参加するには、DNSでドメインの名前解決ができなければなりません。そのため、ネットワークアダプターの設定を変更し、今回構築した1台目のSamba AD DCを参照先のDNSサーバーとします。

準備が整ったらドメインに参加します。スタートボタンを右クリックし、example.
と入力し、OKをクリックします[13]。

コンピューターをドメインに参加するための権限のあるADユーザーの認証情報を求められるため、Administratorユーザーの認証情報を入力します。
再起動が完了したら、改めてログインしますが、今度はADユーザーであるAdministratorユーザーとしてログインしてみます。Administrator@example.
またはexample.
と入力して、パスワードを入力します。
ADの管理ツールはクライアント向けWindowsでもオプション機能として導入できます[14]。先程同じ手順で
- 「RSAT: Active Directory Domain Services およびライトウェイト ディレクトリ サービス ツール」
- 「RSAT: グループ ポリシー管理ツール」

ツールがインストールできたら、スタートメニューからexample.
と表示されているはずです。そのツリーを開いたDomain Controllers
フォルダにはSAMBA-AD-DC01
というドメインコントローラーが、Computersフォルダにはドメインに参加させたコンピューターが見えるでしょう。

Samba AD DCであっても、このようにADDSの管理用ツールでドメインやドメイン上のオブジェクトの情報を表示させることができます。ADDS互換を目指しているだけのことはあります。
Ubuntuマシンのドメイン参加手順については第837回で解説済みのため、本稿では割愛します。こちらの記事を参照してください。ただし、Samba ADドメイン参加した直後のUbuntuマシンではADユーザーでログインできない場合があることを確認しています。一度システムを再起動することで、手元の環境では改善できたので、同じ状況に陥った場合はシステムの再起動を試してください。
今回の作業でひとまずDC1台構成のSamba ADが構築できました。次回は以下について解説します。
- 2台目のDCの構築
- グループポリシーオブジェクト
(GPO) をより適切に取り扱うためのSYSVOLフォルダの構成