Docker+Sambaでドメインコントローラーを作ります。
Debianコンテナを使っていますが、KVMやPVでもDebianが動いていれば手順は変わりません。
コンテナイメージの用意
このブログでは本来のDockerの使い方はしていません。
一台のVMとしてコンテナを使っています。
以前このブログでも紹介しました、永続的にインスタンスを保持できるコンテナイメージを準備しておいてください。
今回は debian12rsyslog.proto という名前でビルドした単独起動可能なイメージを使います。
ネットワークも事前に用意してください。
環境について
ドメイン名 | yellowhouse.in.net |
ホスト名 | DC0.yellowhouse.in.net |
ip アドレス | 192.168.11.3 |
DNS Server | Internal |
volume | /v/DC0/var_log:/var/log |
ログだけはvolume設定でコンテナの外に保存します。
ファイルの拡張属性はコンテナで完結するので –cap-add や –privileged は使いません。
コンテナ作成
docker run \
--name=dc0 \
--hostname=dc0 \
--network=private-net \
--ip=192.168.11.3 \
--dns="192.168.11.2" \
--dns="8.8.8.8" \
--dns-search="yellow.in.net" \
--add-host="DC0.yellow.in.net DC0:192.168.11.3" \
--volume="/v/DC0/var_log:/var/log" \
--detach=true \
debian12rsyslog.proto
環境設定とパッケージのインストール
OS基本設定(ロケール、tzなど)
dpkg-reconfigure tzdata
Asia/Tokyoに設定します。
rsyslog、cron、使い方によってはsshサーバーなどもインストールしておいてください。
DNSとホスト名の整合性
root@dc0:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.11.3 DC0.yellow.in.net DC0
192.168.11.3 dc0
パッケージのインストール
apt update && apt install -y \
samba \
samba-dsdb-modules \
samba-vfs-modules \
smbclient \
krb5-config \
krb5-user \
winbind \
dnsutils \
net-tools \
attr \
ldb-tools \
libpam-winbind \
libnss-winbind \
&& rm -rf /var/lib/apt/lists/*
インストール途中でRealmの設定を要求されますが、後で設定するので、ここではリターンキーでOKです。
Default Kerberos version 5 realm:⏎
プロビジョン
まず既存の設定ファイルを削除しておきます。
これがあるとプロビジョニングが進みません。
プロビジョニングの過程でSambaが新しい設定ファイルを作成してくれます。
rm -f /etc/samba/smb.conf
下記のコマンドんでプロビジョニングを実行します。
samba-tool domain provision \
--use-rfc2307 \
--realm=YELLOW.IN.NET \
--domain=YELLOW \
--server-role=dc \
--dns-backend=SAMBA_INTERNAL \
--adminpass='AdminP@ssw0rd'
realm、domainは実際の環境に合わせて書き換えてください。
adminpass はDefault設定では「小文字、大文字、数字、記号」から3種以上を使って8文字以上で設定しないと受け付けてくれません。
文字がスクロールしてプロビジョニングが終わります。
設定ができているか確認します。
# cat /etc/samba/smb.conf
# Global parameters
[global]
dns forwarder = 127.0.0.11
netbios name = DC0
realm = YELLOW.IN.NET
server role = active directory domain controller
workgroup = YELLOW
idmap_ldb:use rfc2307 = yes
[sysvol]
path = /var/lib/samba/sysvol
read only = No
[netlogon]
path = /var/lib/samba/sysvol/yellow.in.net/scripts
read only = No
dns forwarder に自ドメイン(ここではYELLOW.IN.NET)以外が解決できるDNSを設定してください。
/etc/krb5.conf 設定
ケルベロスの realm を一応設定しておきます。
cat <<'EOF' >/etc/krb5.conf
[libdefaults]
default_realm = YELLOW.IN.NET
dns_lookup_realm = false
dns_lookup_kdc = true
forwardable = true
rdns = false
EOF
realm は実際のドメイン名に合わせてください。
起動
ドメコンを起動します。
/etc/init.d/samba-ad-dc start
自動起動できるようにエントリーポイントに設定してください。
時刻
Active Directory(AD DC)において NTP(時刻同期)は超重要です。
今回のようにコンテナを使う場合はホストの時刻が正しく同期されて入れていれば問題ありません。
ntp_signd[master] プロセスが起動していることを確認してください。
ドメコン完成
これでドメインコントローラーの完成です。
使い方
ネットワーク設定
ルーターのDHCP設定でドメイン名(ここではyellow.in.net)、およびドメコン DC0 のIPアドレスをdnsサーバーとして配布してください。
Windows11Proをドメインに参加させる
検索窓に「SystemPropertiesComputerName」を入れて「Enter」、「システムのプロパティ」の「コンピューター名」を開きます。
「変更」をクリック。

ドメインを入力して「OK」。

ユーザー名に「Administrator」、パスワードにSamba のプロビジョニングで設定したPWを入力して「OK」。

ドメイン参加完了です。

「OK」をクリックして、指示に従って再起動すれば反映されます。
ドメインの管理
ドメインに参加した端末にAdministratorでサインインします。
ユーザーは「ドメイン名\Administrator」です。
ドメインの管理ツール RSAT (Remote Server Administration Tools) を機能追加します。
検索窓に「機能」と入力すると「オプション機能の追加」が現れます。

「rsat」と入力してオプション機能を検索すると、たくさん出てきます。
とりあえず「Active Directory Domain Services およびライトウェイトディレクトリサービスツール」と「グループポリシー管理ツール」をインストールしましょう。

ユーザーとコンピューターの管理は検索窓に「dsa.msc」、グループポリシーの管理は「gpmc.msc」か「mmc」で起動できます。

gpmc はドメインのグループポリシーの編集をするもので、gpedit はローカルのグループポリシーの管理ようなので混同しないようにしましょう。
まとめ
ADドメコンを作ってみました。
Amazon Simple AD と同じく Samba4 を使ったDCです。
WindowsServer によるADDC互換ですが、完全にWindowsServerと同じ機能が使えるわけではありません。
ところが、侮ることなかれ。
管理を適切に行えば大企業から中小企業まで十分に使えるWindowsドメコンなのです。