故障转移时 Linux 客户端 Active Directory 身份验证停止工作

故障转移时 Linux 客户端 Active Directory 身份验证停止工作

我在 Linux 客户端尝试通过定位 DNS 名称进行 AD 身份验证时遇到问题 (corp.example.com). 我有 2 个域控制器服务器DC1(10.0.0.3/24)DC2(10.1.0.3/24)两个域控制器corp.example.com。在开始之前,每个 Linux 客户端都明确定义了 2 个 AD 服务器 IP 地址中的 1 个。我仔细检查了一下,将 IP 地址替换为域名 (corp.example.com),如下面的配置所示。测试后效果很好。但是,通过关闭其中一个 Dome Controller 服务器来测试故障转移会导致某些 Linux 客户端无法进行身份验证并超时。请参阅使用全局/通用 DNS 循环进行 DC/DNS 故障转移当我最初发布帖子时,我以为这是一个网络问题。 在 Linux 客户端上:

/etc/openldap/ldap.conf

  uri     ldap://DC1 ldap://DC2
    base    dc=corp,dc=example,dc=com

/etc/krb5.conf

[libdefaults]
        default_realm = corp.example.com
        clockskew = 300
        dns_lookup_kdc
#       default_realm = EXAMPLE.COM

[realms]
corp.example.com= {
        kdc = corp.example.com
        default_domain = corp.example.com
        kpasswd_server = corp.example.com
        admin_server = corp.example.com
}
#       EXAMPLE.COM = {
#                kdc = kerberos.example.com
#               admin_server = kerberos.example.com
#       }

[logging]
        kdc = FILE:/var/log/krb5/krb5kdc.log
        admin_server = FILE:/var/log/krb5/kadmind.log
        default = SYSLOG:NOTICE:DAEMON
[domain_realm]
        .corp.example.com = corp.example.com
        .corp = corp.example.com
[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
        external = sshd
        use_shmem = sshd
        clockskew = 300
        retain_after_close = false
}

/etc/resolv.conf

search corp.example.com
nameserver 10.0.0.3
nameserver 10.1.0.3

这是我在 syslog-ng 中看到的

Nov 30 09:04:56 linux_client nscd: nss_ldap: failed to bind to LDAP server ldap://ad3: Can't contact LDAP server
Nov 30 09:04:59 linux_client sshd[15585]: nss_ldap: failed to bind to LDAP server ldap://ad3: Can't contact LDAP server
Nov 30 08:50:19 linux_client sshd[15242]: Accepted keyboard-interactive/pam for jim from 10.0.0.231 port 61288 ssh2
Nov 30 08:52:02 linux_client sshd[15284]: nss_ldap: could not search LDAP server - Server is unavailable
Nov 30 08:53:09 linux_client sshd[15284]: pam_unix2(sshd:auth): conversation failed
Nov 30 08:53:16 linux_client sshd[15284]: error: ssh_msg_send: write
Nov 30 08:53:26 linux_client sshd[15284]: pam_krb5[15284]: authentication fails for 'jim' ([email protected]): Authentication failure (Cannot read password)
Nov 30 08:53:26 linux_client sshd[15284]: error: ssh_msg_send: write
Nov 30 08:56:02 linux_client sshd[15289]: nss_ldap: could not search LDAP server - Server is unavailable
Nov 30 08:56:27 linux_client sshd[15289]: pam_krb5[15289]: authentication succeeds for 'jim' ([email protected])
Nov 30 08:57:12 linux_client sshd[15289]: nss_ldap: could not search LDAP server - Server is unavailable
Nov 30 08:57:18 linux_client sshd[15289]: _rebind_proc
Nov 30 08:57:31 linux_client sshd[15289]: _rebind_proc
Nov 30 08:57:34 linux_client sshd[15289]: _rebind_proc
Nov 30 08:57:34 linux_client sshd[15289]: pam_ldap: ldap_result Timed out
Nov 30 08:57:34 linux_client sshd[15289]: error: ssh_msg_send: write

我看起来好像没有尝试其他 DC?

答案1

/etc/openldap/ldap.conf您可以使用空格分隔的 ldap 服务器列表,而不是使用 DNS 来故障转移域控制器。您仍然可以使用主机名来代替实际的 IP 地址。

例如:URI ldap://dc01.corp.example.com ldap://dc02.corp.example.com

更多信息请参阅:http://linux.die.net/man/5/ldap.conf

我还注意到您上面的 2 个 IP 地址位于不同的子网中。确保您的客户端可以与这两个 IP 地址通信。您已经查看了网络问题,所以可能没什么问题,但为了以防万一,我还是想提一下。

相关内容