/etc/hosts의 Kerberos DNS 문제

/etc/hosts의 Kerberos DNS 문제

시간을 내어 관심을 가져주셔서 감사합니다. 간단히 말해서, 내 AD 도메인(Server 2012 시스템에서 호스팅됨)에 대한 Kerberos 인증을 테스트하기 위해 kinit를 호출하면 이 오류가 발생합니다.

오류: kinit: 초기 자격 증명을 얻는 동안 'MYDOMAIN.LOCAL' 영역에 대해 KDC에 연결할 수 없습니다.

이제 명시적으로 설정하면한국 KDC호스트 이름 대신 IP 주소로 변경합니다 /etc/krb5.conf(예: kdc = 172.16.0.10은 kdc = ad0.mydomain.local과 동일하고 admin_server와 동일).한국 KDC/etc/krb5.conf호스트 이름 으로 설정되었습니다한국 KDC에도 명확한 항목이 있습니다 /etc/hosts. 내 진짜 질문은 이것이 왜 필요한가입니다. DNS의 요점은 이러한 로컬 호스트 파일을 사용할 필요가 없으며 구성을 그런 식으로 설정하고 싶지 않습니다. 왜 이런 일이 일어나는지 아는 사람이 있나요? 모든 일반적인 네트워크 도구와 host -t SRV ...쿼리는 이러한 추가 단계 없이도 제대로 작동하는 것 같습니다(자세한 내용은 아래 참조)( /etc/krb5.conf호스트 이름이 나열되어 있고 항목이 없음 /etc/hosts).

kinit그렇다면 내 resolv.conf 파일이 무시되는 이유를 누가 말해 줄 수 있습니까 ?

토큰

  • 로컬 호스트 IP는172.16.0.20
  • 로컬 호스트 이름은 다음과 같습니다.ps
  • 로컬 FQDN 예ps.mydomain.local
  • AD 호스트 IP는172.16.0.10
  • AD 호스트 이름은 다음과 같습니다.ad0
  • AD FQDN은ad0.mydomain.local
  • AD 기본 DNS
  • 도메인 이름은 mydomain.local다음과 같습니다. (.local이 좋지 않다는 것을 알고 작업 중입니다.)
  • 네트워크는 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- 자동 생성

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

kinit 기능이 설치되면 모두 작동하므로 smb.conf를 포함하지 않습니다.

시험

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

서버에는 1개의 SRV 레코드만 있으므로(적어도 제가 아는 한) 왜 2개의 SRV 레코드를 표시하는지 잘 모르겠습니다.

gentent 호스트의 출력...

user@ps:~$ getent hosts ad0.mydonaim.local


user@ps:~$ getent hosts 172.16.0.10
172.16.0.10 ad0.mydomain.local

따라서 호스트 파일에 도메인 컨트롤러에 대한 항목이 포함되어 있지 않으면 역방향 조회가 작동합니다. 정방향 검색에서는 그렇지 않습니다. 항목이 호스트에 있을 때 둘 다 작동합니다.

nsswitch.conf의 출력은 기본 설치에서 수정되지 않습니다...

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

그렇다면 kinit이 왜 그것을 무시하는 것 같은지 말해 줄 수 있는 사람이 있나요 /etc/resolv.conf? 이것이 admin_server스탠자의 불완전한 DNS 구현과 관련이 있을 수 있습니까 /etc/krb5.conf? 아니면 내가 인식하지 못하는 일종의 DNS catch-22에 갇혀 있는 걸까요? 그런데 왜 Kerberos만 있는 걸까요? 추가 질문으로 로컬 호스트 이름을 찾아야 하는 이유는 무엇입니까 /etc/hosts anyway? 백엔드에서 작동하는 방식을 설명하는 Linux 네트워킹에 대한 자세한 기사를 알려줄 수 있는 사람이 있습니까?

도움을 주셔서 다시 한번 감사드립니다. 정말 짜증이 나네요.

답변1

kinit/kerberos가 제대로 작동하려면 호스트 이름 조회가 forwardreverse영역에 대해 작동해야 합니다. nsswitch.conf이름 서비스 정보를 얻는 Linux 호스트의 소스를 결정합니다. 이 파일의 각 줄은 데이터베이스 소스를 제어합니다. 예를 들어 hosts이 줄은 호스트 이름 확인을 위해 검색할 소스를 결정합니다.

기본 설정은hosts

hosts: files mdns4_minimal [NOTFOUND=return] dns

filesDNS가 전혀 조회되지 않습니다. 호스트 레코드가 (/etc/hosts)에서 발견되지 않으면 반환되고 mdns4_minimal(이 소스는 avahi-daemon과 관련된 것 같습니다)multicast DNS, 그러나 Kerberos 호스트를 확인할 수 없는 것 같습니다)

[NOTFOUND=return]연결이 허용된 호스트 확인 프로세스를 제거합니다 dns servers(위의 요청에 따라 작동하는 것 같습니다 /etc/resolv.conf).dig

관련 정보