使用 Samba 将 Ubuntu 桌面加入 Active Directory 域时出现问题

使用 Samba 将 Ubuntu 桌面加入 Active Directory 域时出现问题

我一直试图将 Ubuntu 桌面添加到我们的公司域,但收效甚微。我按照以下指南操作:https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto尽我所能(包括按照链接设置 Kerberos)。我可以使用 kinit 从我们的 DC 获取票证:

localuser@HOSTNAME: sudo kinit adminuser
Password for [email protected]:
Warning: Your password will expire in 5 days on Sun 18 Sep 2016 08:58:05 AEST
localuser@HOSTNAME: sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting     Expires            Service Principal
12/09/16 09:57:10  12/09/16 19:57:10  krbtgt/[email protected]
        renew until 13/09/16 09:56:57

它甚至可以看到我的密码将在 5 天后过期。但是当我尝试加入域时,我得到了以下信息:

localuser@HOSTNAME: sudo net ads join -k
Kinit for HOSTNAME$ to access cifs/[email protected] failed: Cannot contact any KDC for requested realm
Using short domain name -- DOMAIN
Joined 'HOSTNAME' to dns domain 'domain.com.au'
kerberos_kinit_password [email protected] failed: Cannot conact any KDC for requested realm
DNS update failed: kinit failed: Cannot contact any KDC for requested realm

奇怪的是,域对象被创建了,重新启动后,我可以看到 lastLogonTime 更新为桌面启动的时间。

我也尝试使用 smbclient 进行测试。在这里,我发现了一些奇怪的东西;如果我指定服务器名称,它会起作用,但如果我指定 FQDN,它只能部分起作用:

localuser@HOSTNAME:~$ smbclient -kL //dc01
OS=[Windows Server 2012 R2 Standard 9600] Server=[Windows Server 2012 R2 Standard 6.3]

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
        IPC$            IPC       Remote IPC
        NETLOGON        Disk      Logon server share
        SYSVOL          Disk      Logon server share
OS=[Windows Server 2012 R2 Standard 9600] Server=[Windows Server 2012 R2 Standard 6.3]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
localuser@HOSTNAME:~$ smbclient -kL //dc01.domain.com.au
OS=[Windows Server 2012 R2 Standard 9600] Server=[Windows Server 2012 R2 Standard 6.3]

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
        IPC$            IPC       Remote IPC
        NETLOGON        Disk      Logon server share
        SYSVOL          Disk      Logon server share
Connection to dc01.domain.com.au failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available

我在 Hyper-V VM 中运行 Ubuntu Desktop 16.04 LTS,托管在 Windows 10 Professional 上。我们的域处于 2008 功能级别,我们的 DC 都是 2012 R2。我安装了以下软件包:

sudo apt install krb5-user libnss-winbind libpam-winbind ntp ntp-doc samba smbclient ssh-server vim vim-doc winbind

DNS 和 NTP 均正常运行;ntpq -p 列出了我的 DC。我对配置文件所做的更改:

/etc/krb5.conf- 我们使用两个 DNS 域;我还没有尝试使用第二个域,但我已将其放在此处以做好准备。此外,Wireshark 跟踪显示桌面首先尝试通过 UDP 连接,但没有得到任何答复,然后在约 20 秒后尝试使用 TCP 并立即得到答复,因此我禁用了 UDP。

[logging]
        default = FILE:/var/log/krb5.log
[libdefaults]
        default_realm = DOMAIN.COM.AU
        udp_preference_limit = 0
[domain_realm]
        .domain.com.au = DOMAIN.COM.AU
        domain.com.au = DOMAIN.COM.AU
        .domain2.com.au = DOMAIN.COM.AU
        domain2.com.au = DOMAIN.COM.AU

/etc/samba/smb.conf- 由于 testparm 抱怨默认的“syslog = 0”行,我将其删除。此外,由于这台计算机没有任何打印机可共享,我删除了默认共享部分([printers] 和 [print$])。

[global]
        client ntlmv2 auth = yes
        client signing = yes
        client use spnego = yes
        encrypt passwords = yes
        idmap config * : backend = autorid
        idmap config * : range = 1000000 - 1999999
        kerberos method = secrets and keytab
        realm = DOMAIN.COM.AU
        restrict anonymous = 2
        security = ads
        template homedir = /home/%D/%U
        template shell = /bin/bash
        winbind enum groups = yes
        winbind enum users = yes
        winbind use default domain = yes
        workgroup = DOMAIN

知道哪里出了问题吗?尽管我在 krb5.conf 文件中添加了日志记录部分,但没有创建日志文件,因此我似乎无法获得有关 Kerberos 中发生的情况的任何详细信息。我希望比我更聪明的人能为我指出下一步该检查哪里的正确方向。

答案1

这可能是 DNS 问题。检查DC01.domain.com.au服务器的 DNS:

$ nslookup DC01 # or dig if you prefer
$ nslookup DC01.domain.com.au
$ nslookup w.x.y.z # IP address

类似地,确保您的客户端能够正确解析 DNS 正向和反向,并使用正确的 DNS 搜索路径:

$ nslookup HOSTNAME
$ nslookup HOSTNAME.domain.com.au
$ nslookup w.x.y.z # IP address

尝试强制使用特定 KDC,至少在加入时如此。这样做并不理想,但在发生 DNS 问题时可能会有所帮助。

/etc/krb5.conf

[realms]
        DOMAIN.COM.AU = {
                kdc = dc01.domain.com.au
        }

/etc/smb.conf

[global]
        password server = dc01.domain.com.au

也可以尝试net ads join -U adminuser代替该-k选项。

我见过的例子是,udp_preference_limit = 1但这udp_preference_limit = 0可能并不重要。

我认为登录/etc/krb5.conf仅适用于服务器端。

相关内容