Problem: Kinit unable to reach any KDC in realm

Problem: Kinit unable to reach any KDC in realm

root@master:~# kinit Administrator
Administrator@MULTI.UCS's Password:
kinit: krb5_get_init_creds: unable to reach any KDC in realm MULTI.UCS

Investigation& Solution

Step 1

Re-set the Kerberos configuration file and check the file’s content and make sure it points to localhost (127.0.0.1).

root@master:~# ucr commit /etc/krb5.conf
root@master:~# cat /etc/krb5.conf
[...]
[realms]
MULTI.UCS = { 
	acl_file = /var/lib/heimdal-kdc/kadmind.acl
	kdc = 127.0.0.1
	admin_server = master.multi.ucs
	kpasswd_server = 127.0.0.1
}

MULTI = { 
	kdc = 127.0.0.1
	admin_server = master.multi.ucs
	default_domain = multi.ucs
}
[kdc]
hdb-ldap-create-base = cn=kerberos,dc=multi,dc=ucs
v4-realm = MULTI.UCS

[kadmin]
	v4-realm = MULTI.UCS
database = {
	label = {
		acl_file = /var/lib/heimdal-kdc/kadmind.acl
		dbname = ldap:dc=multi,dc=ucs
		realm = MULTI.UCS

		log_file = /var/log/heimdal-database.log
		mkey_file = /var/heimdal/m-key
	}
}

Step 2

Verify DNS resolution.
If the below command output does not look similar to the below shown, troubleshoot DNS settings.

root@master:~# ucr commit /etc/resolv.conf
root@master:~# systemctl restart bind9
root@master:~# host -t srv "_domaincontroller_master._tcp.$(ucr get domainname)." 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

_domaincontroller_master._tcp.multi.ucs has SRV record 0 0 0 master.multi.ucs.

Step 3

There might be an invalid entry in your DNS configuration. Check by querying the domain information:

root@ucs:~# host -la multi.ucs

Trying "multi.ucs"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14472
;; flags: qr aa ra; QUERY: 1, ANSWER: 93, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;multi.ucs.                      IN      AXFR

;; ANSWER SECTION:
multi.ucs.               10800   IN      SOA     ucsmulti.ucs. root.multi.ucs. 154 28800 7200 604800 3600
[...]
*.multi.ucs.             900     IN      NS      dns1.provider.net.

Here, the customer tried to forward all not configured hostnames to an external DNS server. This is not going to work due to the architecture of DNS.
Instead, sync the external entries with the internal ones manually.

Step 4

If Samba is installed check Samba settings.
Make sure interfaces/primary is set when samba/interfaces/bindonly is set to “yes”.

root@master:~# ucr dump| grep -E "samba/interfaces|interfaces/primary"
interfaces/primary: ens192
samba/interfaces/bindonly: yes
samba/interfaces: lo <interfaces/primary>

After you made any change to the above variables restart Samba by:

root@master:~#  /etc/init.d/samba restart

Step 5

Make sure heimdal-kdc service is running on als host NOT having Samba installed:
systemctl start heimdal-kdc
Verify by

root@ucs-slave:~# ps ax | grep heimdal
19831 pts/10   S+     0:00 grep heimdal
29181 ?        S      0:00 /usr/lib/heimdal-servers/kdc --config-file=/etc/heimdal-kdc/kdc.conf
29186 ?        S      0:00 /usr/lib/heimdal-servers/kdc --config-file=/etc/heimdal-kdc/kdc.conf
29196 ?        S      0:00 /usr/lib/heimdal-servers/kdc --config-file=/etc/heimdal-kdc/kdc.conf

Make sure the kpasswdd process is running on the master (when Samba is not installed):

root@ucs-master:~#  /usr/lib/heimdal-servers/kpasswdd &
root@ucs-master:~# ps ax | grep passwd
11611 pts/0    S      0:00 /usr/lib/heimdal-servers/kpasswdd
Mastodon