Назад | Перейти на главную страницу

Проблемы с присоединением рабочего стола Ubuntu к домену Active Directory с помощью Samba

Я пытался добавить рабочий стол Ubuntu в наш корпоративный домен с ограниченным успехом. Я следил за руководством на https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto как мог (в том числе по ссылкам для настройки Kerberos). Я могу использовать kinit, чтобы получить билет в наших DC:

localuser@HOSTNAME: sudo kinit adminuser
Password for adminuser@DOMAIN.COM.AU:
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: adminuser@DOMAIN.COM.AU

Valid starting     Expires            Service Principal
12/09/16 09:57:10  12/09/16 19:57:10  krbtgt/DOMAIN.COM.AU@DOMAIN.COM.AU
        renew until 13/09/16 09:56:57

Он даже может видеть, что срок действия моего пароля истекает через 5 дней. Но когда я пытаюсь присоединиться к домену, получаю следующее:

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

Как ни странно, объект домена создается, и после перезагрузки я вижу обновление lastLogonTime до времени запуска рабочего стола.

Я также пробовал использовать smbclient для тестирования. Здесь я нашел кое-что странное; он работает, если я укажу имя сервера, но работает только частично, если я укажу полное доменное имя:

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

Я запускаю Ubuntu Desktop 16.04 LTS на виртуальной машине Hyper-V, размещенной в Windows 10 Professional. Наш домен находится на функциональном уровне 2008 года, а все наши контроллеры домена - 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 выводит список моих контроллеров домена. Изменения, которые я внес в файлы конфигурации:

/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. Я надеюсь, что кто-то более мудрый, чем я, сможет указать мне правильное направление, чтобы проверить, что делать дальше.

Это может быть проблема с DNS. Проверьте DNS для DC01.domain.com.au сервер:

$ 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 я считаю, только для серверной части.