はじめに
Active Directoryのドメインコントローラーは単体ではなくバックアップを考慮して複数台にするのが一般的らしいということでドメインコントローラーをもう1台構築してみます。
こういうときラズパイは安くていいですね(笑)
前提
以下のような設定で構築する。
項目 | 値 |
---|---|
Kerberoレルム | AD.INAHO.SPACE |
NetBIOSドメイン名 | AD |
サーバーの役割 | ドメインコントローラー |
バックエンドDNS | Samba内蔵DNS |
AD DNSゾーン | ad.inaho.space |
フォワード先DNS | 192.168.100.1 |
1台目DC ホスト名 | samba01-pi |
1台目DC アドレス | 192.168.100.251 |
インストール
パッケージ samba
とその他必要になるパッケージを導入する。
sudo apt update && sudo apt -y install samba smbclient krb5-user krb5-config winbind libnss-winbind libpam-winbind oddjob-mkhomedir dnsutils
ネットワーク設定
項目 | 値 |
---|---|
ドメイン | ad.inaho.space |
ホスト名 | samba02-pi |
IPアドレス | 192.168.100.252/24 |
DNS | 192.168.100.251 |
デフォルトゲートウェイ | 192.168.100.1 |
既存ADに参加
/etc/samba/smb.conf
が存在するとエラーになるので先にリネームする。
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original
sudo samba-tool domain join ad.inaho.space DC -U"AD\administrator" --dns-backend=SAMBA_INTERNAL --option='idmap_ldb:use rfc2307 = yes'
Kerberos設定
/etc/krb5.conf
を既存ADに参加で生成したものに変更して設定を追記する。内容は1台目のDCに合わせる。
sudo mv -f /etc/krb5.conf /etc/krb5.conf.original
sudo cp -f /var/lib/samba/private/krb5.conf /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = AD.INAHO.SPACE
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
[realms]
AD.INAHO.SPACE = {
kdc = ad.inaho.space
admin_server = ad.inaho.space
default_domain = ad.inaho.space
}
[domain_realm]
.ad.inaho.space = AD.INAHO.SPACE
ad.inaho.space = AD.INAHO.SPACE
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Samba設定
既存AD参加で生成された /etc/samba/smb.conf
の [global]
セクションに下記内容を追記する。 netbios name
以外の内容を1台目のDCに合わせる。
[global]
・・・
dns forwarder = 192.168.100.1
idmap config AD : unix_nss_info = yes
idmap config AD : unix_primary_group = yes
template shell = /bin/bash
template homedir = /home/%U
winbind enum users = yes
winbind enum groups = yes
・・・
ネームサービススイッチ設定
/etc/nsswitch.conf
を編集して認証に winbind
を使用するように設定する。 passwd:
と group:
の行の末尾に winbind
を追記する。
・・・
passwd: files winbind
group: files winbind
・・・
Sysvolレプリケーション
SambaにSysvolを複製する機能が備わっていないのでrsyncを用いて定期的にFSMOのDCからコピーを行う。
FSMO側の作業
設定
/etc/rsyncd.conf
を編集して、Sysvolのコピー元の設定をする。
[SysVol]
path = /var/lib/samba/sysvol
comment = Samba Sysvol Share
uid = root
gid = root
read only = yes
auth users = sysvol-replication
secrets file = /etc/samba/rsyncd.secret
また secrets file
である /etc/samba/rsyncd.secret
は以下の内容で作成する。
sysvol-replication:<Secrets>
/etc/samba/rsyncd.secret
は root
のみ読み書き可能でないと動作しないためパーミッションを変更する。
sudo chmod 600 /etc/samba/rsyncd.secret
起動
rsyncd
サービスを有効にして起動する。
sudo systemctl enable rsyncd
sudo systemctl start rsyncd
FSMO以外の作業
設定
/etc/samba/rsync-sysvol.secret
を作成して、FSMOのrsyncdで設定したsecretを設定する。
<Secrets>
/etc/samba/rsync-sysvol.secret
は root
のみ読み書き可能でないと動作しないためパーミッションを変更する。
sudo chmod 600 /etc/samba/rsync-sysvol.secret
動作確認
動作確認をするためにrsync
に--dry-run
オプションを付けて実行する。
sudo rsync --dry-run -XAavz --delete-after --password-file=/etc/samba/rsync-sysvol.secret rsync://[email protected]/SysVol/ /var/lib/samba/sysvol/
定期実行
正常動作を確認したら、Sysvolを定期的にコピーするために cron
を設定して5分ごとにコピーする。
*/5 * * * * rsync -XAavz --delete-after --password-file=/etc/samba/rsync-sysvol.secret rsync://[email protected]/SysVol/ /var/lib/samba/sysvol/
ホームディレクトリー自動作成
設定ファイル編集
/etc/oddjobd.conf.d/oddjobd-mkhomedir.conf
を編集して、自動的に作成されるホームディレクトリーのパーミッションを 755
から 700
に変更する。
2行ある helper
の exec
に -u 0077
を追記する。
・・・
<helper exec="/usr/lib/aarch64-linux-gnu/oddjob/mkhomedir -u 0077"
・・・
<helper exec="/usr/lib/aarch64-linux-gnu/oddjob/mkhomedir -u 0077"
・・・
PAM認証設定
PAMの仕組みを通じてホームディレクトリーを自動作成するので /etc/pam.d/common-session
に下記内容を追記する。
・・・
session optional pam_oddjob_mkhomedir.so
時刻同期
NTP Serverの構築は Raspbian on Raspberry Pi NTP Server編 を参照。
そして、そこに1点追加。下記の内容を /etc/ntpd.conf
に追加する。
・・・
ntpsigndsocket /var/lib/samba/ntp_signd/
・・・
起動
sudo systemctl stop nmbd smbd winbind
sudo systemctl mask nmbd smbd winbind
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc
動作確認
DNS
ドメインのTCPベースの _ldap SRV レコード
sudo host -t SRV _ldap._tcp.ad.inaho.space.
ドメインのUDPベースの _kerberos SRV リソースレコード
sudo host -t SRV _kerberos._udp.ad.inaho.space.
ドメインコントローラのAレコード
sudo host -t A samba01-pi.ad.inaho.space.
Kerberos
ドメイン管理者アカウントのKerberosチケットを要求
sudo kinit administrator
キャッシュされているKerberosのチケットの一覧を表示
sudo klist
Samba(ファイルサーバー)
DCによって提供されている全ての共有の一覧を表示
sudo smbclient -L localhost -U%
認証を確認するためにドメイン管理者アカウントを使用して netlogon 共有に接続
sudo smbclient //localhost/netlogon -UAdministrator -c 'ls'
おわりに
2台目の構築は楽かなと思ったけどSysvolのコピーが必要なのでちょっと面倒だった。
それでもこれでバックアップサーバーができて運用しやすくなったかなと思います。
とりあえずは1台が壊れたときに入れ替えしやすくなったはず。