Raspberry Pi 4、Ubuntu 22.04 LTS、Samba 4を使ってActive DirectoryのDCを構築する
はじめに
Active Directory + WPA Enterpriseに関する検証が必要になったので、Raspberry Pi 4、Samba 4を使って検証環境を構築しました。
似たような記事は沢山ありますが、Ubuntu 22.04 LTS、Samba 4環境についての備忘録として残しておきます。
環境
ハードウェア的な環境は以下の通りです。
- 本体: Raspberry Pi 4 Model B 4GB
- ストレージ: USB接続のSSD 500GB
- バッファロー SSD-SCT500U3BA/N
- SSDからブートしています。
ソフトウェア的な環境は以下の通りです。
- OS: Ubuntu 22.04 LTS
- カーネル:
5.15.0-1011-raspi
- カーネル:
- Samba: 4.15.5
Ubuntuに関する詳細
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ uname -a
Linux dc1 5.15.0-1011-raspi #13-Ubuntu SMP PREEMPT Thu Jun 2 11:44:34 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
Sambaパッケージに関する詳細
$ dpkg -l | grep -i samba
ii libwbclient0:arm64 2:4.15.5~dfsg-0ubuntu5 arm64 Samba winbind client library
ii python3-samba 2:4.15.5~dfsg-0ubuntu5 arm64 Python 3 bindings for Samba
ii samba 2:4.15.5~dfsg-0ubuntu5 arm64 SMB/CIFS file, print, and login server for Unix
ii samba-common 2:4.15.5~dfsg-0ubuntu5 all common files used by both the Samba server and client
ii samba-common-bin 2:4.15.5~dfsg-0ubuntu5 arm64 Samba common files used by both the server and the client
ii samba-dsdb-modules:arm64 2:4.15.5~dfsg-0ubuntu5 arm64 Samba Directory Services Database
ii samba-libs:arm64 2:4.15.5~dfsg-0ubuntu5 arm64 Samba core libraries
ii samba-vfs-modules:arm64 2:4.15.5~dfsg-0ubuntu5 arm64 Samba Virtual FileSystem plugins
構築するActive Directory環境
Sambaを使ってActive Directory(AD)のドメインコントローラ(DC)を構築します。構成は以下の通りです。
- ドメインコントローラ:
- ホスト名:
dc1
- 完全修飾ドメイン名(FQDN):
dc1.ad.nayutaya.jp
- IPアドレス/マスク:
192.168.1.214/24
- ホスト名:
- レルム:
ad.nayutaya.jp
- ADドメイン名:
ad
一般的な設定
Ubuntuの一般的な設定を行います。本章の内容はActive Directoryの本質とは関係なく、単なるメモです。
ホスト名の設定
ホスト名を設定します。合わせて/etc/hosts
も修正しておきます。
$ sudo hostnamectl set-hostname dc1
$ sudo vim /etc/hosts
$ cat /etc/hosts
127.0.0.1 localhost
192.168.1.214 dc1.ad.nayutaya.jp dc1
...
NTPサーバの設定
NTPサーバをntp.nict.jp
に設定します。systemd-timesyncd
サービスのドロップインファイルを使って設定します。
$ sudo mkdir /etc/systemd/timesyncd.conf.d/
$ cat <<EOS | sudo tee /etc/systemd/timesyncd.conf.d/10-ntp.conf
[Time]
NTP=ntp.nict.jp
EOS
$ sudo systemctl restart systemd-timesyncd.service
$ timedatectl timesync-status
Server: 61.205.120.130 (ntp.nict.jp)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 1
Reference: nict
Precision: 1us (-20)
Root distance: 0 (max: 5s)
Offset: +1.963ms
Delay: 9.051ms
Jitter: 0
Packet count: 1
Frequency: +2.881ppm
タイムゾーンの設定
タイムゾーンを日本標準時(JST)に設定します。
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Thu 2022-06-16 13:59:34 JST
Universal time: Thu 2022-06-16 04:59:34 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
スワップメモリの設定
メモリが4GBでは少し心許ないので、2GBのスワップメモリを設定します。
$ free -h
total used free shared buff/cache available
Mem: 3.7Gi 183Mi 2.9Gi 3.0Mi 626Mi 3.4Gi
Swap: 0B 0B 0B
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo mkswap /swapfile
$ sudo chmod 600 /swapfile
$ sudo swapon /swapfile
$ free -h
total used free shared buff/cache available
Mem: 3.7Gi 176Mi 880Mi 3.0Mi 2.7Gi 3.3Gi
Swap: 2.0Gi 0B 2.0Gi
$ echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
$ cat /etc/fstab
LABEL=writable / ext4 discard,errors=remount-ro 0 1
LABEL=system-boot /boot/firmware vfat defaults 0 1
/swapfile swap swap defaults 0 0
$ sudo reboot
# 再起動
$ free -h
total used free shared buff/cache available
Mem: 3.7Gi 180Mi 2.9Gi 3.0Mi 650Mi 3.4Gi
Swap: 2.0Gi 0B 2.0Gi
Sambaのセットアップ
Sambaをセットアップしていきます。地味に手数が多いです。
DNSの設定変更 その1
Sambaの内部DNSを使用するため、systemd-resolved
サービスを無効化します。また、一時的にGoogle Public DNSを使用するように設定します。
$ sudo systemctl disable systemd-resolved.service
$ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
パッケージのインストール
Sambaに必要なパッケージをインストールします。
$ sudo apt install acl attr dnsutils krb5-config krb5-user samba samba-dsdb-modules samba-vfs-modules smbclient winbind
設定ファイルの待避
設定ファイルが存在するとプロビジョニングに失敗するため、既存の設定ファイルを待避します。(削除しても構いません)
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo mv /etc/krb5.conf /etc/krb5.conf.org
プロビジョニング
Sambaのプロビジョニングを実施します。レルム、ADドメイン名、サーバの役割、DNSバックエンド、DNSの転送先、Administrator
ユーザのパスワードを設定します。
最後のパスワード以外、デフォルト値([]
内に示されている値)をそのまま設定しています。
$ sudo samba-tool domain provision --use-rfc2307 --interactive
Realm [AD.NAYUTAYA.JP]:
Domain [AD]:
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) [8.8.8.8]:
Administrator password:
Retype password:
...
設定ファイルのコピー、確認
生成された/etc/samba/smb.conf
の内容を確認します。
$ cat /etc/samba/smb.conf
# Global parameters
[global]
dns forwarder = 8.8.8.8
netbios name = DC1
realm = AD.NAYUTAYA.JP
server role = active directory domain controller
workgroup = AD
idmap_ldb:use rfc2307 = yes
[sysvol]
path = /var/lib/samba/sysvol
read only = No
[netlogon]
path = /var/lib/samba/sysvol/ad.nayutaya.jp/scripts
read only = No
生成されたKerberosの設定ファイルをコピーし、内容を確認します。
$ sudo cp /var/lib/samba/private/krb5.conf /etc/
$ cat /etc/krb5.conf
[libdefaults]
default_realm = AD.NAYUTAYA.JP
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
AD.NAYUTAYA.JP = {
default_domain = ad.nayutaya.jp
}
[domain_realm]
dc1 = AD.NAYUTAYA.JP
不要なサービスの無効化
smbd
サービス、nmbd
サービス、winbind
サービスを停止し、自動的に起動しないように設定します。
$ sudo systemctl stop smbd.service nmbd.service winbind.service
$ sudo systemctl disable smbd.service nmbd.service winbind.service
ADサービスの有効化
samba-ad-dc
サービスのマスクを解除し、開始します。
$ sudo systemctl unmask samba-ad-dc.service
$ sudo systemctl enable samba-ad-dc.service
$ sudo systemctl start samba-ad-dc.service
$ systemctl status samba-ad-dc.service
● samba-ad-dc.service - Samba AD Daemon
Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-16 14:11:54 JST; 11s ago
Docs: man:samba(8)
man:samba(7)
man:smb.conf(5)
Main PID: 3579 (samba)
Status: "samba: ready to serve connections..."
Tasks: 62 (limit: 4415)
Memory: 246.3M
CPU: 12.402s
CGroup: /system.slice/samba-ad-dc.service
...
DNSの設定変更 その2
Sambaの内部DNSを使用するように設定します。
$ echo -e "nameserver 127.0.0.1\nsearch ad.nayutaya.jp" | sudo tee /etc/resolv.conf
動作確認
Sambaサービス、DNSの動作を確認します。
$ sudo samba-tool computer list
DC1$
$ smbclient //localhost/netlogon -UAdministrator -c 'ls'
Password for [AD\Administrator]:
. D 0 Thu Jun 16 14:08:05 2022
.. D 0 Thu Jun 16 14:08:24 2022
487987876 blocks of size 1024. 455212564 blocks available
$ host -t SRV _ldap._tcp.ad.nayutaya.jp
_ldap._tcp.ad.nayutaya.jp has SRV record 0 100 389 dc1.ad.nayutaya.jp.
$ host -t SRV _kerberos._udp.ad.nayutaya.jp
_kerberos._udp.ad.nayutaya.jp has SRV record 0 100 88 dc1.ad.nayutaya.jp.
$ host -t A ad.nayutaya.jp
ad.nayutaya.jp has address 192.168.1.214
おわりに
駆け足になりましたが、Raspberry Pi 4、Ubuntu 22.04 LTS、Samba 4を使ったActive Directory環境の基本的な構築は以上です。
何かの参考になれば幸いです。
参考
関連
Discussion