Obrigado a todos pelo seu tempo e atenção. Muito simplesmente, estou recebendo este erro ao invocar o kinit para testar a autenticação do kerberos em meu domínio do AD (que está hospedado em uma caixa do Server 2012).
O erro:
kinit: Não é possível entrar em contato com um KDC para o domínio 'MYDOMAIN.LOCAL' ao obter as credenciais iniciais
Agora, tudo é corrigido quando eu defino explicitamente o KDC como um endereço IP em vez do nome do host em /etc/krb5.conf
(por exemplo, kdc = 172.16.0.10 vs kdc = ad0.mydomain.local e também com admin_server) e também funciona quando o KDC é definido como o nome do host em /etc/krb5.conf
e o KDC também tem uma entrada explícita em /etc/hosts
. Minha verdadeira pergunta é por que isso é necessário? O ponto principal do DNS é não ter que usar esses arquivos de hosts locais e não quero minha configuração de configuração dessa maneira. Alguém sabe por que isso funciona dessa maneira? Todas as ferramentas de rede usuais e as host -t SRV ...
consultas parecem funcionar corretamente (detalhes abaixo) sem essas etapas adicionais ( /etc/krb5.conf
lista o nome do host e nenhuma entrada em /etc/hosts
).
Alguém pode me dizer por que kinit
parece estar ignorando meu arquivo resolv.conf?
Tokens
- o IP do host local é
172.16.0.20
- O nome do host local é
ps
- O FQDN local é
ps.mydomain.local
- O IP do host do AD é
172.16.0.10
- O nome do host do AD é
ad0
- O FQDN do AD é
ad0.mydomain.local
- AD é o DNS principal
- o domínio é
mydomain.local
(eu sei .local está ruim, trabalhando nisso)
- A rede é 172.16.0.0/24
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.0.20
netmask 255.255.255.0
gateway 172.16.0.1
network 172.16.0.0
broadcast 172.16.0.255
dns-nameservers 172.16.0.10 8.8.8.8
dns-search MYDOMAIN.LOCAL
/etc/hosts
127.0.0.1 localhost
172.16.0.20 ps.mydomain.local ps
# IPv6 stuff, don't think it's relevant to the problem
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/resolv.conf
- gerado automaticamente
nameserver 172.16.0.10
nameserver 8.8.8.8
search MYDOMAIN.LOCAL
/etc/krb5.conf
[libdefaults]
default_realm = MYDOMAIN.LOCAL
dns_lookup_kdc = true
dns_lookup_realm = true
# tried dns_lookup_realm as both true and false, no change
[realms]
MYDOMAIN.LOCAL = {
kdc = ad0.mydomain.local
admin_server = ad0.mydomain.local
default_domain = mydomain.local
}
[domain_realm]
.opticonwa.local = OPTICONWA.LOCAL
opticonwa.local = OPTICONWA.LOCAL
Não incluindo o smb.conf, já que isso funciona todas as funções do kinit.
Testes
user@ps:~$ KRB5_TRACE=/dev/stdout kinit administrator
[1634] 1447281918.814976: Getting initial credentials for [email protected]
[1634] 1447281918.815297: Sending request (181 bytes) to MYDOMAIN.LOCAL
[1634] 1447281918.815346: Resolving hostname ad0.mydomain.local
[1634] 1447281923.817731: Resolving hostname ad0.mydomain.local
kinit: Cannot contact any KDC for realm 'MYDOMAIN.LOCAL' while getting initial credentials
user@ps:~$ host -t SRV _kerberos._udp.mydomain.local
_kerberos._udp.mydomain.local has SRV record 0 0 88 ad0.mydomain.local.
_kerberos._udp.mydomain.local has SRV record 0 100 88 ad0.mydomain.local.
user@ps:~$ host -t SRV _kerberos._tcp.mydomain.local
_kerberos._tcp.mydomain.local has SRV record 0 0 88 ad0.mydomain.local.
_kerberos._tcp.mydomain.local has SRV record 0 100 88 ad0.mydomain.local.
user@ps:~$ dig -x 172.16.0.10
; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> -x 172.16.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19749
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;10.0.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
10.0.16.172.in-addr.arpa. 1200 IN PTR ad0.mydomain.local.
;; Query time: 2 msec
;; SERVER: 172.16.0.10#53(172.16.0.10)
;; WHEN: Thu Nov 12 11:19:27 PST 2015
;; MSG SIZE rcvd: 92
Não sei porque estou exibindo 2 registros SRV, pois o servidor tem apenas 1 (pelo menos que eu saiba).
saída de hospedeiros gentis ...
user@ps:~$ getent hosts ad0.mydonaim.local
user@ps:~$ getent hosts 172.16.0.10
172.16.0.10 ad0.mydomain.local
Portanto, as pesquisas reversas funcionam quando o arquivo hosts não contém uma entrada para o controlador de domínio. Pesquisas avançadas não. Ambos funcionam quando a entrada está em hosts ...
Saída do nsswitch.conf não modificada da instalação base ...
passwd: files winbind
group: files winbind
#passwd: compat
#group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Alguém pode me dizer por que o kinit parece ignorar /etc/resolv.conf
? Isso tem a ver com a implementação incompleta do DNS para a sub-rotina admin_server
em /etc/krb5.conf
? Ou eu estou preso em algum tipo de DNS catch-22 que estou deixando de notar? Mas por que apenas Kerberos? Como pergunta complementar, por que o nome do host local precisa estar em /etc/hosts anyway
? Alguém pode me indicar um writeup completo na rede linux que explicaria como isso funciona no back-end?
Obrigado novamente por sua ajuda. Isso está realmente me incomodando.