/etc/hosts 的 Kerberos DNS 问题

/etc/hosts 的 Kerberos DNS 问题

感谢大家的时间和关注。很简单,当我调用 kinit 来测试我的 AD 域(托管在 Server 2012 机器上)的 kerberos 身份验证时,我收到此错误。

错误: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

不包括 smb.conf,因为一旦 kinit 函数,这一切都会起作用。

测试

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

不知道为什么我显示 2 个 SRV 记录,因为服务器只有 1 个(至少我知道)。

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 第 22 条军规?但为什么只有 Kerberos?作为附加问题,为什么本地主机名需要位于/etc/hosts anyway?有人能给我指点一篇关于 Linux 网络的详尽文章来解释它在后端是如何工作的吗?

再次感谢你的帮助。这真的很困扰我。

答案1

为了让 kinit/kerberos 正常工作,主机名查找应该适用于forwardreverse区域。在 Linux 主机上nsswitch.conf确定获取名称服务信息的来源。该文件中的每一行都控制数据库源,例如,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

相关内容