시간을 내어 관심을 가져주셔서 감사합니다. 간단히 말해서, 내 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가 제대로 작동하려면 호스트 이름 조회가 forward
및 reverse
영역에 대해 작동해야 합니다. nsswitch.conf
이름 서비스 정보를 얻는 Linux 호스트의 소스를 결정합니다. 이 파일의 각 줄은 데이터베이스 소스를 제어합니다. 예를 들어 hosts
이 줄은 호스트 이름 확인을 위해 검색할 소스를 결정합니다.
기본 설정은hosts
hosts: files mdns4_minimal [NOTFOUND=return] dns
files
DNS가 전혀 조회되지 않습니다. 호스트 레코드가 (/etc/hosts)에서 발견되지 않으면 반환되고 mdns4_minimal
(이 소스는 avahi-daemon과 관련된 것 같습니다)multicast DNS
, 그러나 Kerberos 호스트를 확인할 수 없는 것 같습니다)
[NOTFOUND=return]
연결이 허용된 호스트 확인 프로세스를 제거합니다 dns servers
(위의 요청에 따라 작동하는 것 같습니다 /etc/resolv.conf
).dig