Samba で家に Active Directory を作り、Windows・Mac・NAS を参加させた話
家のパソコンが Windows 3台・Mac 3台になり、家族それぞれのアカウントやパスワードを機器ごとに管理するのが大変になってきました。そこで、会社でよく使われる Active Directory(AD)を家に作り、パソコンや NAS を参加させて、アカウントを1か所で管理するようにしました。Windows Server は使わず、無料の Samba で作っています。
Active Directory でできること
- アカウントを1か所で管理:家族のユーザーを AD に作れば、参加しているどのパソコンにも同じ名前・パスワードでサインインできる(Windows の場合)
- ファイル共有の権限もまとめて管理:家のファイルサーバーや NAS の権限を、AD のユーザーやグループで設定できる
- パスワードを変えるのも1回:機器ごとに変えて回る必要がない
構成

- 家のサーバー(AlmaLinux)の中に、KVM / libvirt で仮想マシンを1台作り、そこで AD のサーバー(ドメインコントローラー)を動かす
- 仮想マシンの OS は Ubuntu、AD は Samba(Windows のファイル共有や AD と互換のある無料ソフト)
- 家のサーバーのファイル共有(Samba)も、AD の「メンバー」として参加させ、AD のユーザーで使えるようにした
仮想マシンにしたのは、家のサーバーの本体の設定と切り離しておきたかったからです。AD はネットワークの名前(DNS)や時刻と深く結び付くので、ほかのサービスと同居させると、トラブルのときに原因を切り分けにくくなります。
1. 仮想マシンを用意する
- パソコンの BIOS で、CPU の仮想化機能(AMD なら SVM)をオンにする
- 家のサーバーのネットワークを「ブリッジ」にして、仮想マシンが家の LAN に直接つながるようにする(仮想マシンにも家の中の固定アドレスを付ける)
- 仮想マシンは 2 CPU・メモリ 4GB・ディスク 40GB。家のサーバーが起動したら自動で起動する設定に
2. Samba で AD を作る
Ubuntu の Samba の手順(Ubuntu の公式ドキュメント・Samba の Wiki)に沿って作りました。中心になるのは次のコマンドです。
sudo samba-tool domain provision --use-rfc2307 --interactive
- ドメイン名:持っているドメインの下に
ad.を付けた名前(例:ad.example.org)にした。インターネット向けの名前とぶつからないようにするため - DNS:Samba に内蔵の DNS を使い、AD 以外の名前の問い合わせは家のサーバーの DNS に回す
- 時刻:AD のログイン(Kerberos)は時刻が数分ずれると失敗するので、chrony で AD のサーバーから時刻を配る
3. 家の機器が AD を見つけられるようにする(DNS)
パソコンが AD に参加するには、AD の DNS に問い合わせられることが必要です。ここがいちばん大事なポイントでした。
- ルーターの DHCP で配る DNS を、AD のサーバー(1番目)と家のサーバー(2番目)に変更。各機器は DHCP の更新時に自動で切り替わる
- IPv6 では、ルーター自身が DNS として配られるため、ルーターにも「AD の名前は AD のサーバーに聞く」設定を追加
- 手動で DNS を入れている機器は要注意:Mac の Wi-Fi に
8.8.8.8などを手で入れていると、AD が見つからない。「自動」に戻す
参加させる前に、次のように AD の目印(SRV レコード)が引けるかを確認しておくと安心です。
dig +short -t SRV _ldap._tcp.ad.example.org
dig +short -t SRV _kerberos._tcp.ad.example.org
4. ユーザーを作る
sudo samba-tool user create ユーザー名 --must-change-at-next-login
家族のアカウントは、初期パスワードを乱数にして「初回のログインで変更」にしました。Windows の標準ではパスワードの有効期限(42日)があるので、家庭で使うには期限なしにするかどうかも決めておきます。
5. Windows を参加させる
Windows は Pro 版である必要があります(Home 版はドメインに参加できません)。参加の前に、次の準備をしました。
- 万一に備えて「復元ポイント」を作る
- BitLocker を使っている PC は、回復キーの控えを確認しておく
- PC の名前は 15 文字以内にする(長いとドメインで使えない)
# 管理者の PowerShell で(AD の管理者のパスワードを聞かれる)
Add-Computer -DomainName ad.example.org -Restart
(参考:Add-Computer の説明)
今まで使っていた環境を、ドメインのユーザーに引き継ぐ
ドメインのユーザーで初めてサインインすると、デスクトップも設定も空っぽの新しい環境になります。今まで使っていたローカルのユーザーの環境をそのまま使いたい PC は、ForensiT の User Profile Wizard という無料ツールで、環境(プロファイル)をドメインのユーザーに付け替えました。
ただし、これには落とし穴がありました。Microsoft Store 版のアプリ(Office や iCloud など)は、アプリの登録や暗号化されたデータが元のユーザーに結び付いたまま残るため、付け替えたあとに起動しなかったり、サインインが保存されなかったりしました。Office は部品を登録し直し、iCloud はアプリを「リセット」してサインインし直して解決しています。新しい環境で始められる PC は、付け替えずに新しく作るほうが無難です。
6. Mac を参加させる
Mac は「ディレクトリユーティリティ」(Apple のユーザガイド)か、ターミナルの dsconfigad で参加させます。
sudo dsconfigad -add ad.example.org -computer コンピューター名 -username AD管理者 -mobile enable -mobileconfirm disable
-mobile enable:「モバイルアカウント」を作る。家の外で AD に届かなくても、ドメインのユーザーでログインできる- ログイン画面でドメインのユーザーを入力できるよう、「その他…」を表示する設定にした
Mac で困ったこと:同じ名前のユーザー
Mac のローカルのユーザー名と AD のユーザー名が同じだと、ログイン画面がドメインのユーザーをローカルのユーザーと取り違え、AD のパスワードをローカルのパスワードと照合して失敗しました。ローカルのユーザーをドメインのユーザーに移す方法もうまくいかなかったため、その Mac は AD には参加させたまま、普段はローカルのユーザーで使うことにしました。新しく作る Mac なら、最初からローカルとは違う名前で AD のユーザーを作るのがおすすめです。
7. NAS とファイルサーバーも参加させる
家のサーバーのファイル共有(Samba)は、AD の「メンバー」として参加させました(Samba の Wiki)。共有フォルダの権限を「ドメインのユーザー全員が読み書きできる」のように、AD のグループで設定できます。NAS(QNAP)も管理画面の「ドメインのセキュリティ」から参加させました。
落とし穴:NAS で同じ名前のユーザーがいると、ドメイン側が優先される
NAS にもともとあったユーザーと同じ名前のユーザーが AD にいると、Mac や Windows から「その名前」でつないだときに、AD のユーザーとして扱われました。AD のユーザーにはフォルダの権限がないので、読み書きできなくなります。
- Mac:接続先を
smb://NAS名;ユーザー名@NASのアドレス/共有名のように、NAS 本体のユーザーであることを明示する - Windows:
cmdkeyで NAS 本体のユーザー(NAS名ユーザー名)を記憶させ、アドレスで開く - Mac の Time Machine は、この指定をしてもドメインのユーザーでつないでしまうので、バックアップのフォルダにだけドメインのユーザーの権限を足して解決
まとめ
- Samba なら、Windows Server を買わなくても家に AD を作れる
- いちばん大事なのは DNS。機器が AD の DNS に問い合わせられる状態にしてから参加させる
- ローカルのユーザーと AD のユーザーの名前の重なりは、Mac でも NAS でもトラブルのもと。最初に名前の付け方を決めておくと楽
- 既存の PC の環境の付け替えは便利だが、Store 版のアプリは引き継がれない部分がある
これで、SSH・画面共有・AD と、家の中の端末を一元的に扱う仕組みがひととおりそろいました。
