ADDCを構築する際、「samba-tool domain provision」において
- SAMBA_INTERNAL
samba内蔵のDNSを使います
- BIND9_FLATFILE
外部のDNS bindを使用するが、その連携はファイルベース
- BIND9_DLZ
こちらも外部のDNS bindを使用するが、連携はbindのdlz機構を使います
のいずれかでDNSを選ぶのだが、いったん選んだ後で、別の機構に移る事ができる。
例えば初めはSAMBA_INTERNALを選んだのだが、BIND DNSの機能が必要になったとか、
BIND9_DLZを選んだのだが、BIND DNSのメンテが面倒でSAMBA_INTERNALに乗り換えたいとかとか。
samba_upgradednsを使用して簡単に切り替えられるようだ。
参照先:https://wiki.samba.org/index.php/Changing_the_DNS_backend
SAMBA_INTERNALからBIND DNSへ †
まずはBIND DNSを構築する。参照samba/DNS
その後、sambaを停止して
[root@c ~]# systemctl stop samba
samba_upgradednsを実行してDNSのbackendをBIND DNSとさせる。
[root@c ~]# /opt/samba/sbin/samba_upgradedns --dns-backend=BIND9_DLZ
Reading domain information
DNS accounts already exist
No zone file /opt/samba/private/dns/SYBYL.LOCAL.zone
DNS records will be automatically created
DNS partitions already exist
Adding dns-c account
See /opt/samba/private/named.conf for an example configuration include file for BIND
and /opt/samba/private/named.txt for further documentation required for secure DNS updates
Finished upgrading DNS
You have switched to using BIND9_DLZ as your dns backend, but still have the internal dns starting.
Please make sure you add '-dns' to your server services line in your smb.conf.
[root@c ~]#
画面に流れる説明文に従い、/opt/samba/private/named.confをnamed.confにincludeさせて、使用するBINDのバージョンに
合わせてdlzを調整します。そして、dns.keytabも組み込んでパーミッションを変更する。
[root@c ~]# vi /etc/named.conf
options {
directory "/var/named";
forward only;
forwarders {
192.168.0.1;
};
session-keyfile "/var/run/named/session.key";
pid-file "/var/run/named/named.pid";
tkey-gssapi-keytab "/opt/samba/private/dns.keytab";
};
include "/opt/samba/private/named.conf";
[root@c ~]#
[root@c ~]# chgrp named /opt/samba/private/dns.keytab
[root@c ~]# chmod g+r /opt/samba/private/dns.keytab
[root@c ~]# vi /opt/samba/private/named.conf
dlz "AD DNS Zone" {
# For BIND 9.8.x
# database "dlopen /opt/samba/lib/bind9/dlz_bind9.so";
# For BIND 9.9.x
database "dlopen /opt/samba/lib/bind9/dlz_bind9_9.so";
# For BIND 9.10.x
# database "dlopen /opt/samba/lib/bind9/dlz_bind9_10.so";
};
[root@c ~]#
その後、smb.confを調整するのだが、SAMBA_INTERNALでprovisionするとsmb.confには
server servicesの項目は表示されない。sambaが提供するserver servicesのデフォルト値が
適用されるためである。っで、そのデフォルト値はというとtestparmで得られる。
[root@c ~]# /opt/samba/bin/testparm -sv|grep "server services"
(中略)
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns
[root@c ~]#
最後のdnsがsamba謹製のDNSである SAMBA_INTERNAL を使用するという意味。
なので、ここではBIND DNSを利用したいので、dnsを消す。
[root@c ~]# vi /opt/samba/etc/smb.conf
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
[root@c ~]#
とする。その後、BINDとsambaを起動すれば完了
BIND9_DLZを辞めてSAMBA_INTERNALを採用する。 †
まず稼働中のBIND DNSを停止させ(systemctl diseble namedも実施)
[root@ad ~]# systemctl stop named
[root@ad ~]# systemctl disable named
[root@ad ~]# systemctl stop samba
sambaも停止させて、samba_upgradednsでDNSのbackendをsamba謹製のDNSとさせる
[root@c ~]# /opt/samba/sbin/samba_upgradedns --dns-backend=SAMBA_INTERNAL
[root@c ~]#
あとはsmb.confのserver servicesにdnsを追加してsambaを起動すれば完了