bash console - Kerberos realm - use your domain in uppercase (e.g., - Kerberos servers for your realm - you can use any server IP that can provide KDC functions - Administrative server for your kerberos realm - use the IP of the kerberos server responsible of principals editing (users and service accounts) 2.1 Provision the Domain Stop Samba services first: bash console Remove default config and provision: bash console It'll ask you several questions - you can accept most defaults, but set a strong Administrator password. sis@dc1:~$ sudo samba-tool domain provision --use-rfc2307 --interactive sudo nano /etc/samba/smb.conf [global] 2.2 Start Samba AD DC - Test DNS sis@dc1:~$ host -t SRV _ldap._tcp.vmmaurlx01.local dc1.vmmaurlx01.local has address 172.31.99.142 - Test Kerberos Authentication sis@dc1:~$ kinit administrator@VMMAURLX01.LOCAL sis@dc1:~$ klist This should authenticate and show you a ticket. If this fails, it could depend from /etc/krb5.conf, which still has bash console sudo cp /etc/krb5.conf /etc/krb5.conf.bak sis@dc1:~$ smbclient -L localhost -U administrator the bash console # Test Kerberos sis@dc1:~$ dig @127.0.0.1 _kerberos._tcp.vmmaurlx01.local SRV sis@dc1:~$ dig @127.0.0.1 _ldap._tcp.dc._msdcs.vmmaurlx01.local SRV sis@dc1:~$ dig @127.0.0.1 dc1.vmmaurlx01.local Asudo apt install -y samba samba-ad-dc smbclient winbind krb5-userDuring Kerberos installation, it will ask for:YOURDOMAIN.LOCAL).sudo systemctl stop samba-ad-dc smbd nmbd winbind
sudo systemctl disable smbd nmbd winbindmake a backup copy of the current file smb.conf :sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo samba-tool domain provision --use-rfc2307 --interactive
Realm [VMMAURLX01.LOCAL]:
Domain [VMMAURLX01]:
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]: #this is an example, put an existing DNS here
Administrator password:
Retype password:
dns forwarder = 8.8.8.8 #this is an example, put an existing DNS here
netbios name = DC1
realm = YOURDOMAIN.LOCAL
server role = active directory domain controller
workgroup = YOURDOMAIN
idmap_ldb:use rfc2307 = yes
bash consolesudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc
Samba AD DC includes its own DNS server. Test it:
bash console
host -t SRV _ldap._tcp.yourdomain.local
host -t A dc1.yourdomain.local
You should see your domain controller in the results:
_ldap._tcp.vmmaurlx01.local has SRV record 0 100 389 dc1.vmmaurlx01.local.
bash console
kinit administrator@YOURDOMAIN.LOCAL
klist
Password for administrator@VMMAURLX01.LOCAL:
Warning: Your password will expire in 41 days on Wed 26 Aug 2026 12:14:03 PM UTC
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@VMMAURLX01.LOCAL
Valid starting Expires Service principal
07/15/2026 12:58:50 07/15/2026 22:58:50 krbtgt/VMMAURLX01.LOCAL@VMMAURLX01.LOCAL
renew until 07/16/2026 12:58:40
a default configuration. In that case, Samba creates a personalised /var/lib/samba/private/krb5.conf,
just copy it in /etc/krb5.conf
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
- Verify Samba
bash console
smbclient -L localhost -U administrator
sudo samba-tool domain level show
Password for [VMMAURLX01\administrator]:
Sharename Type Comment
--------- ---- -------
sysvol Disk
netlogon Disk
IPC$ IPC IPC Service (Samba 4.19.5-Ubuntu)
SMB1 disabled -- no workgroup available
sis@dc1:~$ sudo samba-tool domain level show
Domain and forest function level for domain 'DC=vmmaurlx01,DC=local'
Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
- or you can use the "dig" command to test
dig @127.0.0.1 _kerberos._tcp.yourdomain.local SRV
; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> @127.0.0.1 _kerberos._tcp.vmmaurlx01.local SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8942
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;_kerberos._tcp.vmmaurlx01.local. IN SRV
;; ANSWER SECTION:
_kerberos._tcp.vmmaurlx01.local. 900 IN SRV 0 100 88 dc1.vmmaurlx01.local.
;; AUTHORITY SECTION:
vmmaurlx01.local. 3600 IN SOA dc1.vmmaurlx01.local. hostmaster.vmmaurlx01.local. 1 900 600 86400 3600
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Wed Jul 15 13:03:43 UTC 2026
;; MSG SIZE rcvd: 120
# Test domain controller location
dig @127.0.0.1 _ldap._tcp.dc._msdcs.yourdomain.local SRV
; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> @127.0.0.1 _ldap._tcp.dc._msdcs.vmmaurlx01.local SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16934
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;_ldap._tcp.dc._msdcs.vmmaurlx01.local. IN SRV
;; ANSWER SECTION:
_ldap._tcp.dc._msdcs.vmmaurlx01.local. 900 IN SRV 0 100 389 dc1.vmmaurlx01.local.
;; AUTHORITY SECTION:
_msdcs.vmmaurlx01.local. 3600 IN SOA dc1.vmmaurlx01.local. hostmaster.vmmaurlx01.local. 1 900 600 86400 3600
;; Query time: 990 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Wed Jul 15 13:05:36 UTC 2026
;; MSG SIZE rcvd: 126
sis@dc1:~$
# Test DNS resolution of DC
dig @127.0.0.1 dc1.yourdomain.local A
; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> @127.0.0.1 dc1.vmmaurlx01.local A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42707
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;dc1.vmmaurlx01.local. IN A
;; ANSWER SECTION:
dc1.vmmaurlx01.local. 900 IN A 172.31.99.72
;; AUTHORITY SECTION:
vmmaurlx01.local. 3600 IN SOA dc1.vmmaurlx01.local. hostmaster.vmmaurlx01.local. 1 900 600 86400 3600
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Wed Jul 15 13:06:21 UTC 2026
;; MSG SIZE rcvd: 101