今回はプライマリとセカンダリの2台を構成する。
プライマリとセカンダリの共通設定
ホスト名の設定。それぞれ test-dc1 test-dc2 とする。
# hostnamectl set-hostname test-dc1
NTPサーバーにする。
※構築手順はこちらの記事を参照
必要なコンポーネントのインストールらしい。
yum -y install \ perl \ gcc \ libacl-devel \ libblkid-devel \ gnutls-devel \ readline-devel \ python-devel \ gdb \ pkgconfig \ krb5-workstation \ zlib-devel \ setroubleshoot-server \ libaio-devel \ setroubleshoot-plugins \ policycoreutils-python \ libsemanage-python \ setools-libs-python \ setools-libs \ popt-devel \ libpcap-devel \ sqlite-devel \ libidn-devel \ libxml2-devel \ libacl-devel \ libsepol-devel \ libattr-devel \ keyutils-libs-devel \ cyrus-sasl-devel \ cups-devel \ bind-utils \ libxslt \ docbook-style-xsl \ openldap-devel
最新版のSambaをダウンロードする。この記事を書いたときは4.6.5だった。
$ wget http://www.samba.org/samba/ftp/samba-latest.tar.gz
解凍してインストールする。
$ tar zxf samba-latest.tar.gz $ cd samba-* # ./configure; make; make install
ファイアウォールの例外を登録する。
# firewall-cmd --permanent --add-port=42/tcp # firewall-cmd --permanent --add-port=53/tcp # firewall-cmd --permanent --add-port=53/udp # firewall-cmd --permanent --add-service=kerberos # firewall-cmd --permanent --add-service=ntp # firewall-cmd --permanent --add-port=135/tcp # firewall-cmd --permanent --add-port=137/udp # firewall-cmd --permanent --add-port=138/udp # firewall-cmd --permanent --add-port=139/tcp # firewall-cmd --permanent --add-service=ldap # firewall-cmd --permanent --add-port=389/tcp # firewall-cmd --permanent --add-port=389/udp # firewall-cmd --permanent --add-service=samba # firewall-cmd --permanent --add-port=464/tcp # firewall-cmd --permanent --add-port=464/udp # firewall-cmd --permanent --add-service=ldaps # firewall-cmd --permanent --add-port=1024-5000/tcp # firewall-cmd --permanent --add-port=49152-65535/tcp # firewall-cmd --permanent --add-port=5722/tcp # firewall-cmd --permanent --add-port=9389/tcp # firewall-cmd --reload
SELinuxの例外を登録する。
# setsebool -P samba_domain_controller true # setsebool -P samba_export_all_ro true # setsebool -P samba_export_all_rw true # setsebool -P samba_enable_home_dirs true
systemdにsambaサービスを登録する。
/etc/systemd/system/samba.service を下記内容で作成。
[Unit] Description= Samba 4 Active Directory After=syslog.target After=network.target [Service] Type=forking PIDFile=/usr/local/samba/var/run/samba.pid ExecStart=/usr/local/samba/sbin/samba [Install] WantedBy=multi-user.target
プライマリの設定
ドメインをセットアップする。
※–use-rfc2307 (Linux/BSD/macOSを認証する場合は必須)
※–interactive (セットアップを対話式で行う)
※–function-level=2008_R2 (機能レベルを2008_R2に)
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: LOCAL.EXAMPLE.COM
Domain: EXAMPLE
下記のエラーが発生した場合は/etc/krb5.confの includedir /etc/krb5.conf.d/ をコメントアウトする。
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2816
参照DNSを自身のIPアドレスにする。
dns-searchをRealmに変更する。
サービスを有効にして起動する。
# systemctl enable samba # systemctl start samba
セカンダリの設定
参照DNSのプライマリをプライマリドメコンのIPアドレスにする。
dns-searchをRealmに変更する。
プライマリでkrb5.conf内をコメントアウトしている場合は同じく /etc/krb5.conf の includedir /etc/krb5.conf.d/ をコメントアウトする。
ドメコンとしてドメイン参加させる。
# samba-tool domain join example DC -U administrator --realm=LOCAL.EXAMPLE.COM
/usr/local/samba/etc/smb.confに下記を追記する。
dns forwarder = [プライマリと同じforwarder] idmap_ldb:use rfc2307 = yes
参照DNSのセカンダリを本サーバーのIPアドレスにする。
サービスを有効にして起動する。
# systemctl enable samba # systemctl start samba
グループポリシーが自動では同期されないので、グループポリシーの変更後はセカンダリにて下記コマンドを実行する必要がある。
# rsync -a -u -e ssh root@test-dc1:/usr/local/samba/var/locks/sysvol/ /usr/local/samba/var/locks/sysvol/ # /usr/local/samba/bin/samba-tool ntacl sysvolreset
その他
Windowsの管理ツールではパスワードやアカウントロックのポリシーが変更できなかった。samba-toolで直接変更する。
# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=on # /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=5 # /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=30 # /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=0 # /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-duration=60 # /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-threshold=3 # /usr/local/samba/bin/samba-tool domain passwordsettings set --reset-account-lockout-after=60 # /usr/local/samba/bin/samba-tool domain passwordsettings set --history-length=5
DNSの更新状況の確認。
No DNS updates needed ならOKらしい。
# /usr/local/samba/sbin/samba_dnsupdate --verbose
FSMOの確認。
# /usr/local/samba/bin/samba-tool fsmo show
FSMOの移行。転送先サーバーで下記コマンドを実行する。
# /usr/local/samba/bin/samba-tool fsmo transfer --role all