Problema no DNS do Kerberos com / etc / hosts

2

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.

    
por Arkaxandai 12.11.2015 / 03:21

1 resposta

0

Para que o kinit / kerberos funcione corretamente, as pesquisas de nome de host devem funcionar para forward e reverse zones. Nos hosts do Linux, nsswitch.conf determina as fontes para obter informações do serviço de nomes. Cada linha nesse arquivo controla as origens do banco de dados, por exemplo, hosts line determina quais fontes seriam procuradas para a resolução do nome do host.

Com configuração padrão de hosts

hosts: files mdns4_minimal [NOTFOUND=return] dns

O DNS não será consultado e retornará se o registro do host não for encontrado em files (/ etc / hosts) e mdns4_minimal (Essa origem parece estar relacionada ao avahi-daemon multicast DNS , no entanto, parece incapaz de resolver o seu host kerberos)

A remoção do [NOTFOUND=return] permitiu que o processo de resolução do host contatasse dns servers em /etc/resolv.conf (o que parece estar funcionando de acordo com os pedidos dig vistos acima)

    
por 08.12.2015 / 05:00