18.04 – 加入 AD 问题

18.04 – 加入 AD 问题

全新安装和更新升级后,我已遵循本指南将机器添加到我们的 AD 基础架构中,但在基本配置realm join -v [domain]返回后

! Can't contact LDAP server
realm: No such realm found

因此,我启动了一个 CentOS 最小 VM,并能够通过它注册机器。交叉引用这两个输出,我注意到在 Ubuntu 上,相同的realm命令在查找 LDAP 服务器时查询了错误的 IP,但我没有找到有关如何在配置文件中或通过 更改该参数的任何信息man realm

因此我尝试ldapsearch -h [server IP]手动指定服务器并返回以下内容:

ldap_sasl_interactive_bind_s: Local error (-2)
    additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_0))

这应该不是问题,因为 CentOS VM 给出了相同的结果,尽管它已成功加入。因此,我从 CentOS 机器复制了 krb5.conf、sssd.conf 和 realmd.conf 的配置文件(备份后),但给出了相同的原始错误。

我认为错误的 LDAP DSE 查找是问题所在,但我无法在任何地方找到要更改的参数。

谢谢你的帮助。

AD服务器运行Windows Server 2016。提供以下.conf文件:

krb5配置文件

[libdefaults]
    default_realm = MYDOMAIN.COM
    dns_lookup_realm = true
    dns_lookup_kdc = true
    forwardable = true
    rdns = false    

[realms]
    MYDOMAIN.COM = {
                kdc = server.mydomain.com
                admin_server = server.mydomain.com
                default_domain = mydomain.com
    }

[domain_realm]
    .mydomain.com = MYDOMAIN.COM
    mydomain.com = MYDOMAIN.COM

sssd.conf

[sssd]
services = nss, pam
domains = mydomain.com
config_file_version = 2


[domain/mydomain.com]
id_provider = ad
access_provider = ad
ad_domain = mydomain.com
krb5_realm = MYDOMAIN.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%d/%u

领域配置配置文件

[users]
    default-home = /home/%D/%U
    default-shell = /bin/bash

[active-directory]
    default-client = sssd
    os-name = Ubuntu
    os-version = 18.04

[service]
    automatic-install = no

[mydomain.com]
    fully-qualified-names = yes
    automatic-id-mapping = no
    user-principal = yes
    manage-system = yes

答案1

提供我自己的解决方案作为完整指南。

免责声明:我整理了此网站上的不同答案,并添加了自己的观点。我还在整个指南中假定了 su 权限。

使用 Ubuntu 18.04 加入 AD 网络

0)确保/etc/hosts文件/etc/hostname包含符合域管理员提供的凭据的地址和名称。还要安装以下软件包:

$ apt install -y realmd sssd sssd-tools libnss-sss libpam-sss krb5-user adcli samba-common-bin

笔记:当您安装 kerberos 时,系统会提示您输入领域和域名。请按要求操作,但如果您不知道某些信息,请留空。

1)禁用 systemd-resolved

$ systemctl disable systemd-resolved.service
$ systemctl stop systemd-resolved

笔记:这是我找到的方法,但对于您来说禁用 systemd-resolved 可能并不理想。

2)/etc/NetworkManager/NetworkManager.conf在该部分中添加以下内容[main]

dns=default

3)删除符号链接/etc/resolv.conf。它将使用正确的值重新创建。

4)重新启动网络服务并添加 dnsmasq 包:

$ service network-manager restart
$ apt install dnsmasq

5)/etc/nsswitch.conf以下内容替换主机行:

hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4

笔记:如果您遇到问题,请尝试此行hosts: files dns myhostname

6)将以下内容添加到/etc/krb5.conf。它区分大小写,因此请小心。同时删除其他所有内容(首先备份默认内容$ cp /etc/krb5.conf /etc/krb5.conf.bak)。如果某个部分不存在,请自行添加:

[libdefaults]
default_realm = YOUR.REALM.NAME
dns_lookup_realm = false
dns_lookup_kdc = false
default_ccache_name = KEYRING:persistent:%{uid}
rdns = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
YOUR.REALM.NAME = {
  kdc = your.realm.name
  admin_server = your.realm.name
}

[domain_realm]
your.realm.name = YOUR.REALM.NAME
.your.realm.name = YOUR.REALM.NAME

笔记:强制关闭查找,对调试有很大帮助,而且我发现它对于查看正在发生的事情非常有用,这与该主题的所有其他指南基本相反。此外,反向 DNS 行可能仅与我的网络设置相关,因此如果出现问题,rnds请尝试使用值。true

7)勾选/etc/sssd/sssd.conf以包含以下内容。从第 6 点开始适用相同的准则和限制。某些值可能已设置:

[sssd]
domains = your.realm.name
config_file_version = 2
services = nss, pam

[domain/your.domain.name]
ad_domain = your.domain.name
krb5_realm = YOUR.DOMAIN.NAME
realmd_tags = manages-system joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad

8)重启

9)加入您的域 (需要管理员凭据。系统将要求您输入管理员密码):

$ realm join -v --user=[admin_username] your.realm.name

笔记:详细标签-v对于查看可能出现的问题至关重要。此时,如果您确实通过了发现步骤(始终是命令的第一步join),如果发生某些事情,您将会有一些非常详细的错误可供跟踪,最糟糕的情况应该已经过去了。

祝你好运!

答案2

很高兴您分享!我最初也遇到了同样的问题:

realm: No such realm found:

我遵循了以下指南:

我的问题通过两个较小的措施得到了解决:

  1. 安装生成的新的 netplan 设置文件如下所示:

    cat /etc/netplan/50-cloud-init.yaml:
    

    就像是这样的:

    network:
      ethernets:
        enp0s4:
            addresses:
            - 192.168.1.8/24
            gateway4: 192.168.1.3
            nameservers:
                addresses:
                - 192.168.1.252
                - 192.168.1.253
                - 192.168.1.3
                - 1.1.1.1
                search:
                - domain.loc
    version: 2
    

    当我换到旧的经过验证的设置结构时,它看起来像这样:

    network:
      ethernets:
        enp0s4:
            dhcp4: no
            addresses: [192.168.1.8/24]
            gateway4: 192.168.1.3
            nameservers:
              addresses: [192.168.1.252,192.168.1.253,192.168.1.3,1.1.1.1]
    version: 2
    

    后一个例子是我让它发挥作用所需要的。

  2. 禁用 IPv6 -(也许这不是导致最初问题的原因,但我在尝试 netplan 解决方案之前已禁用它,因此我已经对其进行了调整,因此我想分享它。)

    我更改了这两行/etc/default/grub并添加ipv6.disable=1

    GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
    GRUB_CMDLINE_LINUX="ipv6.disable=1"
    

    然后跑了update-grub

答案3

我有两台机器都运行 Kubuntu,还有一台运行 Samba 4 AD 服务器的 Nethserver(CentOS)服务器。

其中一台客户端机器比较旧,已经更新过多次。另一台客户端机器上安装了 Kubuntu 19.10。

由于某种原因,域登录在旧机器上停止工作。我一直在检查两台机器的配置,看看它们有什么不同。

新机器没有 krb5.conf 或 realmd.conf。旧机器有。不知何故,在 sssd.conf 文件中,有一行

ldap_id_mapping = True

已更改为 false。

我删除了两个配置文件,并将 ldap_id_mapping 值改回 True,一切似乎都恢复正常了。如果您遇到问题,也许可以删除这些文件并尝试使用默认设置。至少可以缩小问题根源的范围。

相关内容