adminguide_emodzi_nu-laaadno

Платные курсы

C промокодом ADMINGUIDE

emoji AdminGuide - Очень приятно

Бесплатное обучение

Видеоуроки повышенной чёткости

Tuesday, March 19, 2024
adminguide_emodzi_nu-laaadno

Платные курсы

C промокодом ADMINGUIDE

emoji AdminGuide - Очень приятно

Бесплатное обучение

Видеоуроки повышенной чёткости

AdminGuide Patreon

Boosty

Поддержи автора! Стань спонсором.

Главная страница » Контроллер домена Ubuntu 20.04 – Ubuntu 20.04 AD-DC
Контроллер домена Ubuntu 20.04 - Ubuntu 20.04 AD-DC

Контроллер домена Ubuntu 20.04 — Ubuntu 20.04 AD-DC

by Belfigor
40 101 views

Преподаю и разрабатываю лекции в Нетологии. Записывайтесь на обучение по моей ссылке.

Чтобы получить скидку 10% используйте промодкод:

ADMINGUIDE

Скидка суммируется со всеми действующими на Нетологии акциями

Время идёт, технологии не стоят на месте, выходят новые, более актуальные версии операционных систем, и собсно если ты не в тренде, безусловно ты отправляешься на кадровую помойку. Поэтому сегодня речь пойдет о том, как настроить контроллер домена Ubuntu 20.04. Прежде всего, напомню, что ранее уже была статья Контроллер домена Ubuntu 18.04 — Ubuntu 18.04 AD-DC. Там поднимался «контроллер домена на коленке». Статья безусловно годная и пользующаяся спросом, но, напомню что время идёт и технологии не стоят на месте.

Цель данной статьи — не только актуализировать информацию предыдущей. Эта статья будет с блекджеком и блудницами. Если ранее при настройке домен инициализировался с помощью samba_internal DNS сервера и был способен лишь контролировать авторизацию и обслуживать dns имена присоединённых к нему клиентов, в этой статье будут использоваться BIND9 + dhcpd и все вытекающие прелести, такие как автоматическое создание DNS записей в локальной зоне, для устройств получивших адрес по DHCP. То есть любых устройств, а не только членов домена. Изначально я планировал оформить информацию в виде десятка отдельных статей, но в итоге решил объединить всё на одной странице. Так что ниже последует огромнейшая стена текста. Нуждающийся же да превозможет :)\

Данная инструкция устарела. Для поднятия контроллера домена на убунту 20 — рекомендую использовать видеоинструкции из этого плейлиста: https://youtube.com/playlist?list=PLdQohrQ3OmqRO7GUS4Mkvu686KMw4bPRd

Даже если вы исхитритесь поднять контроллер по этой инструкции — с большой долей вероятности видеоинструкции по поднятию резервного контроллера домена для убунту 20 не будут с ним совместимы.

 

  1. Установка Ubuntu Server 20.04

    Ни чем не отличается от установки Ubuntu Server 18.04
    Полезные команды после установки

    # Обновить систему
    sudo apt update && sudo apt dist-upgrade -y
    # Установить набор сетевых утилит включающий привычный многим ifconfig
    sudo apt install net-tools
    # Узнать текущий ip адрес
    ip addr show
    ifconfig
    # Узнать текущий шлюз по умолчанию
    ip route show
  2. Задаём имя сервера

     

  3. Задаём статический IP

  4. Контроллер домена Ubuntu — Настройка BIND9 — Часть 1

    Примечательно, что начинается установка домена с установки DNS сервера, пакета, распространяемого отдельно от samba4. Можно и потом, но таки в этом случае придётся делать дополнительные телодвижения. Дабы этого избежать сперва надо установить bind и провести его частичную настройку. Установим, создадим зоны, проведём первичную конфигурацию

    1. Ставим BIND9_DLZ

      sudo apt install bind9

      Прежде всего проверяем версию bind

      named -v

      Проверяем версию bindНа момент написания, в репозитории focal была версия 9.16.1

    2. Cмотрим где bind держит named.conf

      named -V | grep sysco

      В результате увидим что-то типа этого:

      Узнаём директорию bind9

      Узнаём директорию bind9

      —sysconfdir=/etc/bind — это папка где лежит файл named.conf

    3. Смотрим где днс сервер держит кеш

      sudo cat /etc/passwd | grep bind

      В результате видим что-то типа этого:

      Смотрим где bind хранит кешЭта директория понадобится нам при дальнейшей настройке

    4. Проверяем named.conf

      nano /etc/bind/named.conf

      В результате видим:

      Содержимое named.conf

      Содержимое named.conf

      Нам понадобятся файлы выделенные красным

    5. Правим named.conf.options

      В первую очередь делаем бэкап и правим файл

      sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options_bak
      sudo nano /etc/bind/named.conf.options

      Удаляем его содержимое и заменяем следующим:

      # Глобальные настройки
      options {
      auth-nxdomain yes;
      directory "/var/cache/bind"; #Папка с кешем bind
      notify no;
      empty-zones-enable no;
      tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
      minimal-responses yes;
      # IP адреса и подсети от которых будут обрабатываться запросы
      allow-query {
      127.0.0.1;
      192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
      };
      # IP адреса и подсети от которых будут обрабатываться рекурсивные запросы
      # (Зон не обслуживаемых этим DNS сервером)
      allow-recursion {
      127.0.0.1;
      192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
      };
      # Перенаправлять запросы, на которые нет информации в локальной зоне
      # на следующие сервера:
      forwarders {
      192.168.1.1; #IP адрес DNS форвардера
      8.8.8.8; #IP адрес DNS форвардера
      8.8.4.4; #IP адрес DNS форвардера
      };
      # Запрет на трансфер зоны
      allow-transfer {
      none;
      };
      };

       

    6. Правим named.conf.default-zones

      sudo cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.default-zones_bak
      sudo nano /etc/bind/named.conf.default-zones

      Удаляем его содержимое и заменяем следующим:

      # Корневые сервера
      # (Необходимы для рекурсивных запросов)
      zone "." {
      type hint;
      file "named.root";
      };
      # localhost zone
      zone "localhost" {
      type master;
      file "master/localhost.zone";
      };
      # 127.0.0. zone.
      zone "0.0.127.in-addr.arpa" {
      type master;
      file "master/0.0.127.zone";
      };
    7. Переходим разделу: «Контроллер домена Ubuntu — Настройка — Часть 1»

      Теперь необходимо перейти к первой части, установке и конфиграции samba4

  5. Контроллер домена Ubuntu — Настройка — Часть 1

    1. Отключаем systemd-resolved

      1. Останавливаем сервис

        sudo service systemd-resolved stop
      2. Убираем из автозапуска

        sudo systemctl disable systemd-resolved.service
      3. Удаляем симлинк /etc/resolv.conf

        sudo rm /etc/resolv.conf
      4. Открываем и изменяем конфиг

        sudo nano /etc/resolv.conf
      5. Настраиваем адрес сервера имён как на картинке.

        nameserver 192.168.1.1
        search adminguide.lan

        Сейчас, nameserver должен быть настроен на адрес нашего текущего DNS сервера, который расположен например на роутере или ещё где
        В search указывается имя нашего будущего домена
        Сохраняем изменения Ctrl+O

    2. Настраиваем файл /etc/hosts

      Обязательно чтобы AD DC мог резолвиться по имени на свой IP адрес внутри настраиваемой сети, даже при пинге с самого AD DC
      Открываем файл и вносим изменения

      sudo nano /etc/hosts

       

      127.0.0.1       localhost.localdomain   localhost
      192.168.1.100   ag-dc-1.adminguide.lan  ag-dc-1

      Применяем изменения

    3. Проверяем что в системе не работают самобые процессы

      ps ax | egrep "samba|smbd|nmbd|winbindd"

      Не должно быть ни одного процесса, как на картинке:
      Проверка процессов перед установкой samba

    4. Инсталлируем Samba

      Очень важно помнить, что контроллер домена на самбе, инициализируется раз и навсегда. Возможность изменить его название в будущем — отсутствует в принципе. Как-то назвав его однажды, с таким именем он и будет существовать до скончания веков или пока вы его не убьёте. Назвав домен ADMINGUIDE.LAN, он на всегда останется с этим именем ADMINGUIDE.LAN . Samba4 не поддерживает переименовывание домена. После его инициализации, для изменения названия, вы должны будете исключить из домена все машины которые успели в него ввести, удалить AD DC, с нуля всё настроить и ввести машины уже в него. Так что я настоятельно рекомендую продумать каждый шаг прежде чем начинать инициализировать домен, прочитать данную инструкцию до самого конца, продумать ньюансы, чтобы избежать ошибок в будущем.

      1. Устанавливаем samba4 и все нужные пакеты с помощью следующей строки:

        sudo apt -y install samba krb5-config winbind smbclient krb5-user
      2. Дефолтная область для Керберос 5

        Контроллер домена Ubuntu - Область по умолчанию для Kerberos v5

        Область по умолчанию для Kerberos v5

      3. Сервер Kerberos для вашей области

        Контроллер домена Ubuntu - Сервер kerberos для нашей области

        Сервер kerberos для нашей области

      4. Управляющий сервер вашей области Kerberos

        Контроллер домена Ubuntu - Управляющий сервер нашей области Kerberos

        Управляющий сервер нашей области Kerberos

      5. Ожидаем окончание установки

        Результаты установка Samba 4

        Результаты установка Samba 4

      6. Бэкапим файл с исходными настройками Samba

        sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
    5. Инициализируем контроллер домена Ubuntu 20.04

      1. апускаем инициализацию с опцией —interactive

        Из своего AD DC, мы будем рулить юзерами и группами компьютеров с линуксовыми операционками. Потому заразаранее активируем совместимость с NIS, используя команду —use-rfc2307

        sudo samba-tool domain provision --use-rfc2307 --interactive

        Включение поддержки Network Information Service (NIS), никак не повредит работе AD DC, несмотря даже на ситуацию в которой он никогда столкнётся с Linux серверами или компьютерами. В тоже время, если настроить контроллер без этой опции, и когда-нибудь в него будут введены машины с линуксом, придётся модифицировать схему AD и добавлять поддержку NIS. Делать это конечно же придётся с большим риском убить контроллер.

      2. Указываем параметры домена

        Если в процессе настройки не было допущено ошибок, те параметры которые вам нужно настраивать, кроме DNS backend инсталлятор поместит в квадратные скобки как дефолтные значения.

            Realm [ADMINGUIDE.LAN]:
        Domain [ADMINGUIDE]:
        Server Role (dc, member, standalone) [dc]:
        DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
        DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]:
        Administrator password:
        Retype password:

        В тот момент когда установщик попросит ввести пароль, лучшее задать такой, что понадёжнее, т.к. мы будем использовать его для авторизации под администратором AD DC.
        Если в данный момент в дефолтных значениях фигурируют не те значения которое вы ожидаете, скорее всего допущен серьёзный косяк, лучше начать настраивать заново.
        Контроллер домена Ubuntu - Инициализация

      3. Проверяем последствия инициализации

        Если мы увидим информацию аналогичную приведённой ниже — это значит что контроллер домена на Ubuntu успешно завершил инициализацию:
        В конце видим где самба держит конфиг named и конфиг krb5

        Контроллер домена Ubuntu - Результат инициализации

        Результат-инициализации-домена

    6. Переходим к разделу «Контроллер домена Ubuntu — Конфигурация BIND9 — Часть 2»

  6. Контроллер домена Ubuntu — Конфигурация BIND9 — Часть 2

    1. Активируем интеграцию DLZ

      sudo nano /var/lib/samba/bind-dns/named.conf

      Смотрим фаел. Если всё было сделано правильно, там автоматом будет раскомменчена строка отвечающая за интеграцию нашей версии самбы с нашей версией bind9. Главная проблема в том, что в данный момент в репозиториях Focal нету совместимых на уровне версий dlz, пакетов samba4 и bind9. Примечательно что версия samba4 находящаяся на данный момент в репозитории, на уровне dlz поддерживает BIND 9.11.x . В то время как находящийся в репозитории пакет BIND9, на данный момент версии 9.16.х . Со временем, это вероятнее всего изменится и я актуализирую статью, а пока надо раскомментить строку для BIND 9.12.x

      Интеграция BIND9_DLZ

      Интеграция BIND9_DLZ

      Этот же файл надо заинклудить в основную конфигурацию named

      sudo nano /etc/bind/named.conf

      Добавляем в конец

      include "/var/lib/samba/bind-dns/named.conf";

      Правка named.conf

      Правка named.conf

    2. Проверяем права на dns.keytab

      ls -l /var/lib/samba/private/dns.keytab
      AdminGuide.Ru@ag-dc-1:~$ ls -l /var/lib/samba/private/dns.keytab
      -rw-r----- 2 root bind 802 Apr  3 19:36 /var/lib/samba/private/dns.keytab
    3. Проверяем права на папку /bind-dns/

      ls -l /var/lib/samba/
      AdminGuide.Ru@ag-dc-1:~$ ls -l /var/lib/samba/
      total 1408
      drwxr-xr-x   4 root root            4096 Apr  3 17:51 DriverStore
      -rw-------   1 root root          421888 Apr  3 17:51 account_policy.tdb
      drwxrwx---   3 root bind            4096 Apr  6 11:44 bind-dns #<================Вот она :)
      -rw-------   1 root root             696 Apr  3 17:51 group_mapping.tdb
      drwxr-xr-x  11 root root            4096 Apr  3 17:51 printers
      drwxr-xr-x   5 root root            4096 Apr  3 19:36 private
      -rw-------   1 root root          528384 Apr  3 17:51 registry.tdb
      -rw-------   1 root root          421888 Apr  3 17:51 share_info.tdb
      drwxrwx---+  3 root       3000000   4096 Apr  3 19:36 sysvol
      drwxrwx--T   2 root sambashare      4096 Apr  3 17:51 usershares
      -rw-------   1 root root           32768 Apr  5 00:00 winbindd_cache.tdb
      drwxr-x---   2 root winbindd_priv   4096 Apr  3 17:51 winbindd_privileged
    4. Смотрим права на /etc/krb5.conf

      ls -l /etc/krb5.conf
      AdminGuide.Ru@ag-dc-1:~$ ls -l /etc/krb5.conf
      -rw-r--r-- 1 root bind 2891 Apr  3 17:51 /etc/krb5.conf

      В случае несоответствия

      sudo chown root:bind /etc/krb5.conf
    5. Проверяем наличие утилиты nsupdate

      which nsupdate
      AdminGuide.Ru@ag-dc-1:~$ which nsupdate
      /usr/bin/nsupdate
    6. Загружаем список корневых днс серверов

      sudo wget -q -O /var/cache/bind/named.root http://www.internic.net/zones/named.root
      sudo chown root:bind /var/cache/bind/named.root
      sudo chmod 640 /var/cache/bind/named.root

       

    7. Проверяем конфиг

      sudo named-checkconf
      sudo service bind9 start

      Если ошибок не будет обнаружено, то named-checkconf не выдаст никакой информации, можно пытаться запустить сервис. Если попытка запуска тоже не выдаст никаких критов прямо в терминал — значит хорошо. DNS сервер почти готов к работе

    8. Создаём файлы зон

      sudo mkdir /var/cache/bind/master
      sudo chown bind:bind /var/cache/bind/master

       

      1. localhost

        sudo nano /var/cache/bind/master/localhost.zone

        Копируем туда следующее:

        $TTL 3D
        $ORIGIN localhost.
        @       1D      IN     SOA     @       root (
        2013050101      ; serial
        8H              ; refresh
        2H              ; retry
        4W              ; expiry
        1D              ; minimum
        )
        @       IN      NS      @
        IN      A       127.0.0.1

        Изменяем владельца и права доступа

        sudo chown bind:bind /var/cache/bind/master/localhost.zone
        sudo chmod 640 /var/cache/bind/master/localhost.zone
      2. 0.0.127.in-addr.arpa

        sudo nano /var/cache/bind/master/0.0.127.zone
        $TTL 3D
        @       IN      SOA     localhost. root.localhost. (
        2013050101      ; Serial
        8H              ; Refresh
        2H              ; Retry
        4W              ; Expire
        1D              ; Minimum TTL
        )
        IN      NS      localhost.
        1      IN      PTR     localhost.
        sudo chown bind:bind /var/cache/bind/master/0.0.127.zone
        sudo chmod 640 /var/cache/bind/master/0.0.127.zone

         

    9. Запускаем\перезапускаем bind9, проверяем созданные зоны

      sudo service bind9 restart
      host -t A localhost 127.0.0.1
      host -t PTR 127.0.0.1 127.0.0.1
      

       

      AdminGuide.Ru@ag-dc-1:~$ sudo service bind9 restart
      AdminGuide.Ru@ag-dc-1:~$ host -t A localhost 127.0.0.1
      Using domain server:
      Name: 127.0.0.1
      Address: 127.0.0.1#53
      Aliases: 
      localhost has address 127.0.0.1
      AdminGuide.Ru@ag-dc-1:~$ host -t PTR 127.0.0.1 127.0.0.1
      Using domain server:
      Name: 127.0.0.1
      Address: 127.0.0.1#53
      Aliases: 
      1.0.0.127.in-addr.arpa domain name pointer localhost.

       

    10. Переходим к разделу: «Контроллер домена Ubuntu — Настройка — Часть 2»

  7. Контроллер домена Ubuntu — Настройка — Часть 2

      1. Настройка запуска

        Для корректной работы, все процессы самбы должна запускать сама самба и никто иной. Если процесс самбы будет запущен не самбой а например от рута и этот процесс сгенерит какой-нибудь нужный для работы контроллера домена фаел, то после этого вы можете хоть взрывать весь домен, т.к. больше у вас он не взлетит. Из-за этого, для возвращения работоспособсности, придётся вручную дебажить, искать где косяк, просто реально до посинения выискивать причину ошибки. Я занимался этим у нескольких заказчиков, не пожелаю этого никому. Проще сразу же сделать нормально.

        sudo systemctl stop smbd nmbd winbind
        sudo systemctl disable smbd nmbd winbind
        sudo systemctl mask smbd nmbd winbind

        Блокируем samba-ad-dc для ручного старта, включаем сервис и включаем его автозапуск

        sudo systemctl unmask samba-ad-dc
        sudo systemctl start samba-ad-dc
        sudo systemctl enable samba-ad-dc
      2. Настройка DNS адреса

        Указываем сервером имён, свой собственный айпишник AD DC

        sudo nano /etc/netplan/*.yaml

        Для этого необходимо сконфигурировать параметры сети по следующему принципу:

                    dhcp4: no
        dhcp6: no
        addresses: [192.168.1.100/24, ]
        gateway4: 192.168.1.1
        nameservers:
        addresses: [192.168.1.100, ]

        Настраиваем адрес сервера имён, так же указывая там айпишник AD DC, приведя его к виду:

        sudo nano /etc/resolv.conf
        nameserver 192.168.1.100
        search adminguide.lan
      3. Контроллер домена Ubuntu — Настройка Kerberos

        При инициализации AD DC, будет создан файл конфигурации керберос, где он расположен, указывается в конце отчета об инициализации. Дабы не делать двойную работу, заменяем существующий файл настроек Kerberos, только что созданным файлом.

        sudo cp /var/lib/samba/private/krb5.conf /etc/
      4. Убеждаемся что всё работает

          1. Смотрим имеющиеся на контроллере общие каталоги
            smbclient -L localhost -U%

            Помним что они автоматически создаются в момент инициализации и если их нет, значит где-то косяк. А в следствии такого косяка, ничего не будет функционировать нормально или не будет даже запускаться

             smbclient -L localhost -U%

            smbclient -L localhost -U%

          2. Смотрим возможность подключения к netlogon
            Теперь сотрим пускает ли доменного админа в каталог netlogon

            smbclient //localhost/netlogon -UAdministrator -c 'ls'
          3. Когда потребуется авторизация, вводим пароль указанный в момент инициализации. Авторизовавшись успешно вы получите доступ к каталогу

            Контроллер домена Ubuntu - Проверка netlogon

            Проверка netlogon

          4. Проверяем правильность настройки DNS
            Если bind9 был настроен некорректно, то AD DC не взлетит. Для того чтобы проверить, попытаемся извлечь из днс сервера необходимые записи

            1. Во-первых смотрим SRV запись _ldap
              host -t SRV _ldap._tcp.adminguide.lan.
              AdminGuide.Ru@ag-dc-1:~$ host -t SRV _ldap._tcp.adminguide.lan.
              _ldap._tcp.adminguide.lan has SRV record 0 100 389 ag-dc-1.adminguide.lan.
            2. Во-вторых смотрим SRV запись _kerberos
              host -t SRV _kerberos._udp.adminguide.lan.
              AdminGuide.Ru@ag-dc-1:~$ host -t SRV _kerberos._udp.adminguide.lan.
              _kerberos._udp.adminguide.lan has SRV record 0 100 88 ag-dc-1.adminguide.lan.
            3. В-третьих проверяем A запись контроллера домена
              host -t A ag-dc-1.adminguide.lan.
              AdminGuide.Ru@ag-dc-1:~$ host -t A ag-dc-1.adminguide.lan.
              ag-dc-1.adminguide.lan has address 192.168.1.100
            4. Проверяем работоспособность Kerberos
              kinit administrator
              AdminGuide.Ru@ag-dc-1:~$ kinit administrator
              Password for administrator@ADMINGUIDE.LAN: 
              Warning: Your password will expire in 38 days on Fri May 15 19:36:28 2020
            5. В конечном итоге, смотрим кеш авторизационных тикетов Kerberos
              klist
              klistAdminGuide.Ru@ag-dc-1:~$ klist
              Ticket cache: FILE:/tmp/krb5cc_1001
              Default principal: administrator@ADMINGUIDE.LAN
              Valid starting     Expires            Service principal
              04/07/20 09:02:16  04/07/20 19:02:16  krbtgt/ADMINGUIDE.LAN@ADMINGUIDE.LAN
              renew until 04/08/20 09:02:12
              AdminGuide.Ru@ag-dc-1:~$
          5. Переходим к настройке DHCP сервера

  8. Контроллер домена Ubuntu — Настройка DHCP сервера

    1. Для начала устанавливаем DHCP сервер
      sudo apt-get install isc-dhcp-server

       

    2. Затем создаём пользователя домена для работы с обновлениями
      sudo samba-tool user create dhcpduser --description="Unprivileged user for TSIG-GSSAPI DNS updates via ISC DHCP server" --random-password

       

    3. Так же устанавливаем истечение пароля и добавляем в группу DnsAdmins
      sudo samba-tool user setexpiry dhcpduser --noexpiry
      sudo samba-tool group addmembers DnsAdmins dhcpduser
      AdminGuide.Ru@ag-dc-1:~$ sudo samba-tool user setexpiry dhcpduser --noexpiry
      Expiry for user 'dhcpduser' disabled.
      AdminGuide.Ru@ag-dc-1:~$ sudo samba-tool group addmembers DnsAdmins dhcpduser
      Added members to group DnsAdmins

       

    4. Теперь экспортируем данные
      sudo samba-tool domain exportkeytab --principal=dhcpduser@ADMINGUIDE.LAN /etc/dhcpduser.keytab
      sudo chown dhcpd:dhcpd  /etc/dhcpduser.keytab
      sudo chmod 400  /etc/dhcpduser.keytab

       

    5. Создаём скрипт
      sudo nano /usr/local/bin/dhcp-dyndns.sh

       

      #!/bin/bash
      # /usr/local/bin/dhcp-dyndns.sh
      # This script is for secure DDNS updates on Samba 4
      # Version: 0.8.9
      # Uncomment the next line if using a self compiled Samba and adjust for your PREFIX
      #PATH="/usr/local/samba/bin:/usr/local/samba/sbin:$PATH"
      BINDIR=$(samba -b | grep 'BINDIR' | grep -v 'SBINDIR' | awk '{print $NF}')
      WBINFO="$BINDIR/wbinfo"
      # DNS domain
      domain=$(hostname -d)
      if [ -z ${domain} ]; then
      logger "Cannot obtain domain name, is DNS set up correctly?"
      logger "Cannot continue... Exiting."
      exit 1
      fi
      # Samba 4 realm
      REALM=$(echo ${domain^^})
      # Additional nsupdate flags (-g already applied), e.g. "-d" for debug
      NSUPDFLAGS="-d"
      # krbcc ticket cache
      export KRB5CCNAME="/tmp/dhcp-dyndns.cc"
      # Kerberos principal
      SETPRINCIPAL="dhcpduser@${REALM}"
      # Kerberos keytab
      # /etc/dhcpduser.keytab
      # krbcc ticket cache
      # /tmp/dhcp-dyndns.cc
      TESTUSER="$($WBINFO -u) | grep 'dhcpduser')"
      if [ -z "${TESTUSER}" ]; then
      logger "No AD dhcp user exists, need to create it first.. exiting."
      logger "you can do this by typing the following commands"
      logger "kinit Administrator@${REALM}"
      logger "samba-tool user create dhcpduser --random-password --description=\"Unprivileged user for DNS updates via ISC DHCP server\""
      logger "samba-tool user setexpiry dhcpduser --noexpiry"
      logger "samba-tool group addmembers DnsAdmins dhcpduser"
      exit 1
      fi
      # Check for Kerberos keytab
      if [ ! -f /etc/dhcpduser.keytab ]; then
      echo "Required keytab /etc/dhcpduser.keytab not found, it needs to be created."
      echo "Use the following commands as root"
      echo "samba-tool domain exportkeytab --principal=${SETPRINCIPAL} /etc/dhcpduser.keytab"
      echo "chown XXXX:XXXX /etc/dhcpduser.keytab"
      echo "Replace 'XXXX:XXXX' with the user & group that dhcpd runs as on your distro"
      echo "chmod 400 /etc/dhcpduser.keytab"
      exit 1
      fi
      # Variables supplied by dhcpd.conf
      action=$1
      ip=$2
      DHCID=$3
      name=${4%%.*}
      usage()
      {
      echo "USAGE:"
      echo "  $(basename $0) add ip-address dhcid|mac-address hostname"
      echo "  $(basename $0) delete ip-address dhcid|mac-address"
      }
      _KERBEROS () {
      # get current time as a number
      test=$(date +%d'-'%m'-'%y' '%H':'%M':'%S)
      # Note: there have been problems with this
      # check that 'date' returns something like
      # 04-09-15 09:38:14
      # Check for valid kerberos ticket
      #logger "${test} [dyndns] : Running check for valid kerberos ticket"
      klist -c /tmp/dhcp-dyndns.cc -s
      if [ "$?" != "0" ]; then
      logger "${test} [dyndns] : Getting new ticket, old one has expired"
      kinit -F -k -t /etc/dhcpduser.keytab -c /tmp/dhcp-dyndns.cc "${SETPRINCIPAL}"
      if [ "$?" != "0" ]; then
      logger "${test} [dyndns] : dhcpd kinit for dynamic DNS failed"
      exit 1;
      fi
      fi
      }
      # Exit if no ip address or mac-address
      if [ -z "${ip}" ] || [ -z "${DHCID}" ]; then
      usage
      exit 1
      fi
      # Exit if no computer name supplied, unless the action is 'delete'
      if [ "${name}" = "" ]; then
      if [ "${action}" = "delete" ]; then
      name=$(host -t PTR "${ip}" | awk '{print $NF}' | awk -F '.' '{print $1}')
      else
      usage
      exit 1;
      fi
      fi
      # Set PTR address
      ptr=$(echo ${ip} | awk -F '.' '{print $4"."$3"."$2"."$1".in-addr.arpa"}')
      ## nsupdate ##
      case "${action}" in
      add)
      _KERBEROS
      nsupdate -g ${NSUPDFLAGS} << UPDATE
      server 127.0.0.1
      realm ${REALM}
      update delete ${name}.${domain} 3600 A
      update add ${name}.${domain} 3600 A ${ip}
      send
      UPDATE
      result1=$?
      nsupdate -g ${NSUPDFLAGS} << UPDATE
      server 127.0.0.1
      realm ${REALM}
      zone ${rzone}
      update delete ${ptr} 3600 PTR
      update add ${ptr} 3600 PTR ${name}.${domain}
      send
      UPDATE
      result2=$?
      ;;
      delete)
      _KERBEROS
      nsupdate -g ${NSUPDFLAGS} << UPDATE
      server 127.0.0.1
      realm ${REALM}
      update delete ${name}.${domain} 3600 A
      send
      UPDATE
      result1=$?
      nsupdate -g ${NSUPDFLAGS} << UPDATE
      server 127.0.0.1
      realm ${REALM}
      update delete ${ptr} 3600 PTR
      send
      UPDATE
      result2=$?
      ;;
      *)
      echo "Invalid action specified"
      exit 103
      ;;
      esac
      result="${result1}${result2}"
      if [ "${result}" != "00" ]; then
      logger "DHCP-DNS Update failed: ${result}"
      else
      logger "DHCP-DNS Update succeeded"
      fi
      exit ${result}

      Устанавливаем права на скрипт

      sudo chmod 755 /usr/local/bin/dhcp-dyndns.sh
    6. Модифицируем файл с настройками
      Создаём бекап и модифицируем конфиг

      sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf_bak
      sudo nano /etc/dhcp/dhcpd.conf

      Заменив содержимое на следующее:

      authoritative;
      ddns-update-style none;
      subnet 192.168.1.0 netmask 255.255.255.0 { #Подсеть и маска на которую будет вещать dhcp сервер
      option subnet-mask 255.255.255.0;
      option broadcast-address 192.168.1.255;
      option time-offset 0;
      option routers 192.168.1.1; #Шлюз
      option domain-name "adminguide.lan"; #Имя домена
      option domain-name-servers 192.168.1.100; #ДНС сервера
      option netbios-name-servers 192.168.1.100; #NetBIOS сервера
      option ntp-servers 192.168.1.100; #NTP сервера
      pool { #Пулл адресов
      max-lease-time 1800; # Максимальное время аренды в секундах
      range 192.168.1.110 192.168.1.199; #Диапазон адресов
      }
      }
      on commit {
      set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));
      set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
      set ClientDHCID = concat (
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
      );
      set ClientName = pick-first-value(option host-name, config-option-host-name, client-name, noname);
      log(concat("adminguide.ru commit: IP: ", ClientIP, " DHCID: ", ClientDHCID, " Name: ", ClientName));
      execute("/usr/local/bin/dhcp-dyndns.sh", "add", ClientIP, ClientDHCID, ClientName);
      }
      on release {
      set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
      set ClientDHCID = concat (
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
      suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
      );
      log(concat("Release: IP: ", ClientIP));
      execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, ClientDHCID);
      }
      on expiry {
      set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
      # cannot get a ClientMac here, apparently this only works when actually receiving a packet
      log(concat("Expired: IP: ", ClientIP));
      # cannot get a ClientName here, for some reason that always fails
      execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, "", "0");
      }

       

    7. Редактируем права на запуск
      sudo nano /etc/apparmor.d/usr.sbin.dhcpd

      Добавляем в конец файла перед закрывающей скобкой }

      /usr/local/bin/dhcp-dyndns.sh rix,
      /dev/tty wr,
      /usr/sbin/samba rix,
      /usr/bin/gawk rix,
      /usr/bin/grep rix,
      /usr/bin/hostname rix,
      /usr/bin/logger rix,
      /usr/bin/wbinfo rix,
      /usr/bin/date rix,
      /usr/bin/klist rix,
      /usr/bin/host rix,
      /proc/** wr,
      /usr/bin/kinit rix,
      /etc/dhcpduser.keytab rk,
      /run/samba/winbindd/pipe wr,
      /etc/dhcpduser.keytab rk,
      /tmp/* wrk,
      /usr/bin/nsupdate rix,

      Рестарт AppArmor

      sudo /etc/init.d/apparmor stop && sudo /etc/init.d/apparmor start

      Рестарт DHCP сервера

      sudo service isc-dhcp-server stop && sudo service isc-dhcp-server start
    8. Контроллер домена Ubuntu — Проверяем работу DHCP

      В сети с ad-dc-1 у меня есть еще 1 ubuntu server с именем ag-dc-lin-client-1. Он не в домене, он не настраивался, он просто есть и он получает сетевые настройки по dhcp.
      Пытаюсь пингануть этот клиентпо имени, результат нулевой.
      Включаю этот сервер, жду пока загрузится. После того как сервер загрузился, пытаюсь снова, пинг идёт.
      Команды ping ag-dc-lin-client-1 и ping ag-dc-lin-client-1.adminguide.lan теперь будут успешно пинговать эту машину по имени. Как и другие ваши устройства не находящиеся в домене и получающие адреса по DHCP от контроллера домена.

  9. Заключение
    Таким образом мы и подошли к концу. Никогда не стоит забывать, что для улучшений ещё очень большой простор, но этот вариант позволит админу иметь в небольшом офисе лицензионный Active Directory Domain Controller с DNS и DHCP серверами, способными обслуживать не только компьютеры присоединённые к домену, но и все машины вообще. Что позволит уйти от настройки локальных сервисов на статические ip адреса, и перейти на использование динамических ip адресов в связке с dns именами устройств

Полезные материалы:

 

Text.ru - 100.00%

You may also like

Vkontakte Comments

Default Comments

70 комментариев

Антон 16.05.2020 - 14:16

Доброго дня, у вас упущен тот кусок, где рассказывается про конфиг кербероса. Собственно что в него писать?
В тексте, вы переходите сразу к замене дефолтного конфига модифицированным.

Reply
Belfigor 16.05.2020 - 14:47

Привет! В krb5.conf писать самостоятельно ничего не стоит, не обладая на 100% полной уверенностью в совершаемых манипуляциях. Samba4 самостоятельно генерит файл krb5.conf в момент инициализации контроллера домена, и просит скопировать это содержимое в существующий файл krb5.conf или же заменить имеющийся файл на сгенерированный. Больших манипуляций для того чтобы домен взлетел и успешно работал до скончания веков — не требуется. Более подробная настройка Kerberos к несчастью не уместится в формате текущей статьи, но в будущем я планирую написать отдельную статью по этой теме чтобы ссылаться на неё при написании статей.

Reply
Roman 19.04.2021 - 18:59

Всем привет! тут у меня одна проблемка. так как я начинающий.

Сэрвэр не выходит в интернет тоесть не может разрешить имена. но пингует клиент по имени отлично котому был выдан айпи-адресс. вот с такими настройками /etc/resolv.conf

nameserver 192.168.1.10 «здесь я выбрал сам 10 а не 100 как у вас в статье.»
search «domain»

но как только я добавляю в /etc/resolv-conf айпи 192.168.1.1
nameserver 192.168.1.10
nameserver 192.168.1.1
search «domain»

Сэрвэр сразу может пинговать по имени.
почему Сэрвэр сам не делает форвадинг на адресс 192.168.1.1 так как прописанно в /etc/bind/named.conf.option

в чем здесь проблемка.? подскажите пожалуйста.

и тоже самое с клиентом не выхлдит в интернет но пингует Сэрвер по имени отлично. айпи-адресс клиенту был выдан от DHCP как в статье.

буду признателен!!! благодарю.

Reply
Belfigor 20.04.2021 - 21:46

Тут прямо очень комплексный вопрос, лучше задать его на канале в телеграме 🙂 https://t.me/itadminguide_chat

Reply
Roman 21.04.2021 - 09:39

хорошо спосибо! 🙂

Reply
Сергей 09.06.2020 - 20:47

здравствуйте! очень классная статья!
расскажите пожалуйста, как добавить пользователя в домен?
как вообще им управлять?

Reply
Belfigor 10.06.2020 - 06:04

Привет! После того как домен развёрнут, на любой виндовой машине которая состоит в домене, ставится «Средства удалённого администрирования сервера (RSAT)». Там есть штатные инструменты для управления Active Directory и GPO. С помощью которых и осуществляется управление доменом.

Reply
alex 11.04.2021 - 16:04

Добрый день. Через RSAT могу управлять без проблем, но я не понял как обновить политику на самом сервере сразу? Обычно в виндовом сервере я на самом сервере применял команду gpupdate /force и сразу применялись изменения, сделанные в GPO. Например, я упрощал политику паролей, убирал там ограничения, и сразу после команды. мог создать юзера с простым паролем. Тут же я не понял, как мне обновить GPO сразу. Как применить gpupdate /force непосредственно к серверу? Тут такое возможно?

Reply
Belfigor 12.04.2021 - 10:59

Привет! Сам линуксовый контроллер домена не подвержен влиянию GPO. Потому чтобы настроить параметры паролей, нужно использовать утилиту samba-tool:
# Смотрим действующие настройки:
sudo samba-tool domain passwordsettings show
# Полный список команд
samba-tool domain passwordsettings set --help
# Выключить требования сложности пароля
samba-tool domain passwordsettings set --complexity=off

Reply
Антон Т. 14.06.2020 - 01:30

Приветствую!

sudo samba-tool domain provision —use-rfc2307 —interactive

после ввода пароля выводит:

ERROR(): Provision failed — ProvisioningError: guess_names: ‘realm =’ was not specified in supplied /etc/samba/smb.conf. Please remove the smb.conf file and let provision generate it
File «/usr/lib/python3/dist-packages/samba/netcmd/domain.py», line 519, in run
result = provision(self.logger,
File «/usr/lib/python3/dist-packages/samba/provision/__init__.py», line 2255, in provision
names = guess_names(lp=lp, hostname=hostname, domain=domain,
File «/usr/lib/python3/dist-packages/samba/provision/__init__.py», line 643, in guess_names
raise ProvisioningError(«guess_names: ‘realm =’ was not specified in supplied %s. Please remove the smb.conf file and let provision generate it» % lp.configfile)

Reply
Belfigor 14.06.2020 - 21:13

Оно жалуется на то что в пункте REALM пусто. При правильной предварительной настройке, автоматом должен быть заполнен в процессе инициализации домена. Можно терминала с момента ввода команды sudo samba-tool domain provision –use-rfc2307 –interactive и до момента когда оно запросит пароль?

Reply
Антон Т. 21.06.2020 - 12:40

Спасибо за ответ! Навалилось много работы. На неделе попробую еще раз все с нуля поставить, может что-то пропустил.

Reply
Belfigor 22.06.2020 - 07:57

Если что можно зайти на канал в телеграме и спросить там 🙂

Reply
andre 17.06.2020 - 10:07

доброе время суток.
установил по вашей статье все хорошо только есть проблемы с распознанием имен
# nslookup ya.ru
Server: 192.168.1.2
Address: 192.168.1.2#53

** server can’t find ya.ru: SERVFAIL

Reply
Belfigor 17.06.2020 - 10:25

Вот эти 3 команды дают такой же результат как описано в статье?
host -t SRV _ldap._tcp.adminguide.lan.
host -t SRV _kerberos._udp.adminguide.lan.
host -t A ag-dc-1.adminguide.lan.
Если идти по видео инструкции https://adminguide.ru/2020/05/24/linux-domain-controller-videourok/
Вывод терминала при установке был идентичным как в видео инструкции во всех трёх видео?

Reply
Belfigor 17.06.2020 - 10:30

В named.conf.options в этом разделе:
forwarders {
192.168.1.2; #IP адрес DNS форвардера
8.8.8.8; #IP адрес DNS форвардера
8.8.4.4; #IP адрес DNS форвардера
};
указанные настройки отражают реалии сети в которой был развёрнут домен?

Reply
andre 17.06.2020 - 10:56

Вот эти 3 команды дают такой же результат как описано в статье?
host -t SRV _ldap._tcp.adminguide.lan.
host -t SRV _kerberos._udp.adminguide.lan.
host -t A ag-dc-1.adminguide.lan.
согласен но это локальные адреса но я говорю про внешние я дошол до DHCP и при sudo apt-get install isc-dhcp-server был послан лесом
хоть в named.conf.options стоит
options {
auth-nxdomain yes;
directory «/var/cache/bind»; #Папка с кешем bind
notify no;
empty-zones-enable no;
tkey-gssapi-keytab «/var/lib/samba/private/dns.keytab»;
minimal-responses yes;

# IP адреса и подсети от которых будут обрабатываться запросы
allow-query {
127.0.0.1;
192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
};

# IP адреса и подсети от которых будут обрабатываться рекурсивные запросы
# (Зон не обслуживаемых этим DNS сервером)
allow-recursion {
127.0.0.1;
192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
};

# Перенаправлять запросы, на которые нет информации в локальной зоне
# на следующие сервера:
forwarders {
7.50.1.4;
77.50.0.4;
8.8.8.8;
};

listen-on-v6 { none; };
# Запрет на трансфер зоны
allow-transfer {
none;
};
};

Reply
Belfigor 17.06.2020 - 11:24

sudo service bind9 stop && sudo service bind9 start && sudo tail -n 100 /var/log/syslog
Покажи вывод этой команды

Reply
andre 17.06.2020 - 11:02

пинг проходит
зарание благодарен

Reply
Belfigor 17.06.2020 - 11:05

https://t.me/itadminguide_chat
Зайди в телеграм, там быстрее разберёмся

Reply
andre 17.06.2020 - 11:19

у меня блок на него от провайдера(

Reply
max5775100 19.06.2020 - 13:34

Статья годная, но не понятно, как расширить домен. К примеру добавить еще пару контроллеров, да и dhcp бы тоже дублировать.

Reply
Belfigor 20.06.2020 - 18:52

На эту тему будут отдельные статьи, в рамках одной всё увы уместить не получилось.

Reply
max5775100 22.06.2020 - 15:58

Это хорошо, буду ждать.
А есть ли смысл вводить в домен машины на линукс? Ну кроме как если нужно использовать несколько учеток на данной станции?
Мне вот просто было нужно средство учета адресов, чтобы машины на линукс подключались к сети, получали адрес и я мог обращаться к ним уже по имени, а не ip, чтобы прописать их в host файле ansible.
Данная статья решила мою проблему.

Reply
Belfigor 22.06.2020 - 22:42

Если это пользовательская машина, например Ubuntu Desktop, например с 1С на борту и нужно организовать туда доступ разных людей, с разными рабочими столами — то можно. При том всё что сможет взять от домена линуксовая машина — это авторизация и права на доступ к шарам. Ни о каких GPO тут и речи не идёт. Если то например уже серверная ось, то если ты обслуживаешь её единолично, то толку от введения её в домен нету вообще. А вот если опять же ты обслуживаешь серверную ось не один, и тебе нужно разграничить права, то опять же — почему бы и нет.

Reply
max5775100 23.06.2020 - 08:39

Ну про групповые политики это понятно.
Собственно я так и думал, подойдет для файлового или терминального сервера.

max5775100 23.06.2020 - 15:10

Возможно ли сделать так, чтобы bind резольвил не через корневые сервера, а через dns на шлюзе?
Дело в том, что я использую pfsense+squid с фильтрацией https (ssl_bump).
И если я указываю на клиентах dns не шлюза, а контроллера домена, то тогда перестает заходить на гугл, ютуб и прочие его производные, выдает ошибку https. Как я понял эта ошибка возникает если на шлюзе и на клиенте разные dns сервера или что-то вроде того.

Reply
Belfigor 23.06.2020 - 19:15

Если я таки правильно понимаю вопрос, то именно для этого в настройках bind9 прописываются форвардеры. Тоесть если контроллер домена не знает запрашиваемый адрес — он передаёт запрос на вышестоящий сервер. Это прописывается в named.conf.options вот тут:
forwarders {
192.168.1.2; #IP адрес DNS форвардера (локальный шлюз)
8.8.8.8; #IP адрес DNS форвардера
8.8.4.4; #IP адрес DNS форвардера
};

Reply
max5775100 25.06.2020 - 12:57

Все верно,я просто тупанул, в моем случае уже был указан dns адрес моего шлюза.
И в моей ситуации, как оказалось, нужно было наоборот прописать dns алреса от гугла.
Только в таком варианте у меня стали открываться сайты гугла и ютуба через pfsense+https+ssl_bump, т.е когда и на шлюзе и на КД был форвардинг на 8.8.8.8, не знаю с чем связано.

Reply
Alexey 25.08.2020 - 08:33

Здравствуйте, настроил все по вашей инструкции, сервер вроде как молотит, НО есть пару вопросов касательно ДНС.
1. Подключился к серверу через RSAT и не вижу зону обратного просмотра 0.0.127in-addr-arpa
2. В обоих зонах не отображаются компьютеры автоматически

Куда копнуть?

Reply
Belfigor 25.08.2020 - 11:20

Привет! Вскоре после написания мною данной инструкции, самба залила в репозитории новую версию, в которой ушла от использования утилиты nsupdate (для которой написана данная инструкция) на samba-tool. Потратив неделю на попытки восстановить работоспособность динамического обновления днс зоны dhcp сервером, я пришел к выводу что таки ещё рано переводить контроллеры доменоа на 20ю убунту. Переходить к на 20ю убунту не вижу возможным пока не выйдет официальный dlz модуль для интеграции самбы и 16-го bind9. В данный момент я актуализирую аналогичную инструкцию для Ubuntu Server 18.04 LTS. Вскоре она будет опубликована 🙂

Reply
Alexey 25.08.2020 - 12:01

Ну теперь все встало на свои места… Ломаю голову уже вторую неделю, а тут оказывается вот оно что.
Ожидаю актуальную статью. Кстати, нет мысли написать подобную статью для centOS или там по сути будут отличаться только команды установки пакетов?

Reply
Belfigor 25.08.2020 - 15:38

Я планирую сперва сделать полный комплект мануалов и видео по направлению «Инфраструктура для малого бизнеса с нуля» в разрезе Ubuntu Server, а потом добавить в него все необходимое для других популярных дистрибутивов включая CentOS. Но в данный момент ситуация с CentOS аналогичная. Самые последние версии самбы и бинда будут давать такой же результат как в Ubuntu Server 20.04, а установка пакетов из предыдущих репозиториев затрёт половину системы. Ну и да, для любой вообще линуксовой оси принцип тот же самый. Отличаться будут только пути установки пакетов, права доступов к файлам и пользователи. Например в ситуации когда в Ubuntu Server пользователем от которго запускается Bind9 является dhcpd, в Debian этим пользователем будет root. Ну и все аналогичные различия.

Reply
Dmitry 19.11.2020 - 05:51

Подправь строку в настройке DHCP
«sudo samba-tool domain exportkeytab —principal=dhcpduser@ADMINGUIDE.LAN /etc/dhcpduser.keytab»
на
«sudo samba-tool domain exportkeytab /etc/dhcpduser.keytab —principal=dhcpduser@ADMINGUIDE.LAN»
иначе параметр неправильно определяется и выводит ошибку.

Reply
Belfigor 19.11.2020 - 08:43

В репозиторий 20й убунту в данный момент регулярно заезжают обновления, делающие настройку контроллера либо затруднительной либо невозможной. Изменение данной команды наглядный тому пример. Несколько месяцев назад там были несовместимые bind9 и samba4. В данный момент рекомендую поднимать контроллеры на 18.04 если есть необходимость в будущем избежать непредвиденных проблем.

Reply
Олег 17.03.2021 - 10:57

Здравствуйте! Поднял контроллер домена на Ubuntu 20 и настроил DHCP по вашей статье ВСЕ КЛАСС, но не могу понять как компьютерам дать выход в интернет, со статикой где указывается шлюз (10.35.181.1) все работает, когда переключаюсь на DHCP шлюз цепляет (10.35.181.100) и доступа в интернет нет, когда внутри сети все летает.

Reply
Belfigor 17.03.2021 - 19:59

Привет, настоятельно рекомендую в данный момент все реализации делать на 18й убунту. Для неё даже уже готова серия статей по резервному контроллеру домена: https://zen.yandex.ru/media/id/5ec1740672423a6de38c60a9/rezervnyi-kontroller-domena-linux—nachalo-5ffeb781f2385a3dfbac1f19
А по поводу шлюза: 10.35.181.100, нужно смотреть файл «dhcpd.conf». Там опция routers. Она должна выглядеть так: option routers 10.35.181.1; #Шлюз . 99,99% что там сейчас 10.35.181.100

Reply
Олег 23.03.2021 - 15:42

Спасибо за помощь! Уже как три месяца на 20 работает все, прочитал про 18 после установки, пока не буду переходить, Проверю файл dhcpd.conf. И ОГРОМНОЕ СПАСИБО ЗА СТАТЬИ. Больше бы таких:)

Reply
Belfigor 23.03.2021 - 21:56

в процессе :), в будущем планирую статьи и про 20й контроллер, как про 18й закончу писать 🙂

Reply
Олег 24.03.2021 - 08:06

С нетерпением будем ждать!:)

Reply
Олег 23.03.2021 - 15:58

Еще раз здравствуйте! Проверил файл “dhcpd.conf” шлюз прописан верно, но когда включаю DHCP для сетевой то в сведениях о сетевом подключении показывает что шлюз и DHCP и DNS на 10.35.181.100. Возможно что дело в 20, но к сожалению пока на 18 нет возможности перейти (больше 200 рабочих мест).

Reply
Belfigor 23.03.2021 - 21:59

нет, слабо верится что проблема в ubuntu 20, нужно смотреть логи и может быть анализировать трафик, но то что проблема в 20й убунте — прямо не представляю даже какая может быть взаимосвязь

Reply
Олег 24.03.2021 - 08:06

Еще раз огромное спасибо за помощь, буду разбираться, смотреть логи, вот конфиг dhcpd.conf
thoritative;
ddns-update-style none;

subnet 10.35.181.0 netmask 255.255.255.0 { #Подсеть и маска на которую будет вещать dhcp сервер
option subnet-mask 255.255.255.0;
option broadcast-address 10.35.181.255;
option time-offset 0;
option routers 10.35.181.1; #Шлюз
option domain-name «shool1.lan»; #Имя домена
option domain-name-servers 10.35.181.3; #ДНС сервера
option netbios-name-servers 10.35.181.3; #NetBIOS сервера
option ntp-servers 10.35.181.3; #NTP сервера
pool { #Пулл адресов
max-lease-time 1800; # Максимальное время аренды в секундах
range 10.35.181.117 10.35.1811.220; #Диапазон адресов
}
}

on commit {
set noname = concat(«dhcp-«, binary-to-ascii(10, 8, «-«, leased-address));
set ClientIP = binary-to-ascii(10, 8, «.», leased-address);
set ClientDHCID = concat (
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,1,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,2,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,3,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,4,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,5,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,6,1))),2)
);
set ClientName = pick-first-value(option host-name, config-option-host-name, client-name, noname);
log(concat(«adminguide.ru commit: IP: «, ClientIP, » DHCID: «, ClientDHCID, » Name: «, ClientName));
execute(«/usr/local/bin/dhcp-dyndns.sh», «add», ClientIP, ClientDHCID, ClientName);
}

on release {
set ClientIP = binary-to-ascii(10, 8, «.», leased-address);
set ClientDHCID = concat (
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,1,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,2,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,3,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,4,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,5,1))),2), «:»,
suffix (concat («0», binary-to-ascii (16, 8, «», substring(hardware,6,1))),2)
);
log(concat(«Release: IP: «, ClientIP));
execute(«/usr/local/bin/dhcp-dyndns.sh», «delete», ClientIP, ClientDHCID);
}

on expiry {
set ClientIP = binary-to-ascii(10, 8, «.», leased-address);
# cannot get a ClientMac here, apparently this only works when actually receiving a packet
log(concat(«Expired: IP: «, ClientIP));
# cannot get a ClientName here, for some reason that always fails
execute(«/usr/local/bin/dhcp-dyndns.sh», «delete», ClientIP, «», «0»);
}

Reply
Belfigor 24.03.2021 - 09:34

На вид всё выглядит как надо. Только вот тут косяк:
range 10.35.181.117 10.35.1811.220; #Диапазон адресов
Надо исправить, перезапустить DHCP сервер и посмотреть что будет 🙂

Reply
Олег 25.03.2021 - 12:49

Здравствуйте! Косяк исправил и нашел проблему почему DHCP не работало. В одном из кабинетов стоял роутер D-Link с которого и хватался шлюз IP 10.35.181.100. Счас все работает. Спасибо огромное за помощь и за нужные и необходимые системникам статьи.

Belfigor 27.03.2021 - 06:40

Рад был помочь :). Подписывайся на блог в дзене, все самые новые статьи выходят там 🙂

stanislavsigitov 24.03.2021 - 15:39

Подскажите, как ввести машину с Desktop Ubuntu 20.04 в созданный AD DC по этой статье?

Reply
Belfigor 24.03.2021 - 21:07

29го числа в дзене выйдет статья по вводу Ubuntu 20.04 Desktop в домен 🙂
https://zen.yandex.com/id/5ec1740672423a6de38c60a9

Reply
rus 06.04.2021 - 08:51

Таки вышла или нет? Не нахожу что-то…

Reply
Олег 25.03.2021 - 15:30

Хотелось бы еще уточнить: для управления пользователями AD-DC кроме Samba и RSAT есть какие варианты. Вопрос актуален т.к., уходим совсем от windows(я имею ввиду не коммерческие решения типа Астра и Альт линукс) или на их примере реализовать такую возможность. Заранее спасибо!

Reply
Belfigor 27.03.2021 - 07:16

Есть ещё вот такая утилита: https://appimage.github.io/admin-tools/ , её работоспособность увы далека от необходимой. Единственный вариант управления пользователями и ДНСом минуя RSAT — написание своей обёртки в виде какого-нибудь веб гуя над консольными утилитами samba. Что же касается управления GPO — тут майрософт крепко держит наши яйчата в своих загребущих лапах. Относительно управления DHCP «так штоб красиво», можно на сервер где стоит контроллер домена и dhcpd — дополнительно установить webmin. Тамошний модуль управления DHCP сервером подхватит настройки и через него можно будет создавать\удалять статические лизы. Может быть на данный момент стало можно делать что-то ещё, я его очень давно не тестировал. Управлять виндовым доменом без хотябы одной машины с RSAT увы не получится. Хотябы 1, минимално дешёвый ноутбук с win10pro таки нужен. По крайней мере уйти от win10pro так, чтобы процесс администрирования домена не превратился в ад, либо без вложения нереальной горы денег в разработку истинно линуксового RSAT — пока перспектив не видится.

Reply
Олег 28.03.2021 - 08:31

Спасибо за ответ! Вебмин установил, попробую через него.

Reply
Олег 16.04.2021 - 13:24

Добрый день! Перестал работать веб сервер на машине с установленным контроллером домена на Ubuntu 20. Все работало отлично, ничего после установки контроллера домена не делал и не менял, просто в один день перестал запускаться zabbix и glpi. Не подскажете может проблема в настройках bind9?
Заранее спасибо!

Reply
Олег 16.04.2021 - 13:37

Дополнительно к вопросу. Apache службы работают, сам он запущен.

Reply
Belfigor 17.04.2021 - 08:47

Увы, тут помочь ничем не смогу. Вряд ли это вина bind9, но я таки настоятельно не рекомендую на машину с контроллером домена ставить какую-либо ещё нагрузку кроме контроллера домена 🙂

Reply
Олег 19.04.2021 - 07:08

Спасибо учту! Но webmin тоже не запускается через браузер в сети, а локально не совсем удобно админить.

Reply
Олег 26.04.2021 - 17:59

Здравствуйте! С проблемой разобрался. Но возникли вопросы, надо ли в RSAT настраивать обратную зону DNS и можно ли настроить на контроллере домена LDAP?
Заранее спасибо!

Reply
Farkhad 04.05.2021 - 17:23

Делаю команду после установки samba и настройки kerberos 6тым пунктом ввёл: sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp а он мне выдал ошибку: sudo: unable to resolve host ubuntuserv: Name or service not known — что за ошибка и как можно исправить?

Reply
Belfigor 05.05.2021 - 08:00

В данный момент настоятельно рекомендую пользовать только контроллеры 18й версии, ввиду наличия у них поддержки с моей стороны и уже целых двух серий статей по их настройке 🙂

Reply
Дмитрий 11.05.2021 - 14:32

Добрый день. Оставил Вам пост на дзене, на всякий дублирую тут:
Настраиваю bind по Вашему ману и в ответ на host -t A localhost 127.0.0.1 получаю:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host localhost not found: 2(SERVFAIL)

команда host -t PTR 127.0.0.1 127.0.0.1:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host 1.0.0.127.in-addr.arpa not found: 2(SERVFAIL)

Не подскажете, в чем м.б. проблема?
Для гугла ответы такие:

host -t PTR 8.8.8.8 127.0.0.1

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
18.8.8.8.in-addr.arpa domain name pointer dns.google.

host -t A google.com 127.0.0.1

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53

Aliases:
google.com has address 173.194.222.113
google.com has address 173.194.222.102
google.com has address 173.194.222.139
google.com has address 173.194.222.100
google.com has address 173.194.222.101
google.com has address 173.194.222.138

Reply
IlyaFed 19.08.2021 - 19:40

Спасибо пользователю Niko N из телеграмм-канала t.me/itadminguide_chat. Видать, @ не во всех подверсиях может подтянуть localhost, и + синтаксис кривой. Его совет помог:
поправил в файле зоны localhost.zone нижние 2 строки:
@ IN NS localhost.
@ IN A 127.0.0.1
и во втором файле зоны 0.0.127.zone:
@ IN NS localhost.
1 IN PTR localhost.

Reply
MixIam 29.06.2021 - 18:17

Добрый день. Спасибо огромное за статью.
Напишите пожалуйста, возможно ли в таком формате контроллера домена рассылать установку новых версий ПО chromium-gost на линуксовые машины с пакетом deb и на компьютеры с ОС Windows 7, 10 ? Заранее спасибо за ответ.

Reply
Belfigor 30.06.2021 - 19:18

День добрый! Контроллер домена Active Directory не может управлять линуксовыми машинами. Для линуксовых хостов он производит лишь авторизацию и контроль доступа. С виндовыми машинами вы можете решить любую задачу относительно автоматизации, которую можно решить с помощью GPO

Reply
stanislavsigitov 17.11.2021 - 16:58

Спасибо большое за подсказку с зонами. Клавиши на клавиатуре от копипаста стерлись 🙂

Reply
Олег 12.04.2022 - 15:17

Здравствуйте! При настройке DHCP выдает вот это: root@dc2:~# sudo chown dhcpd:dhcpd /etc/dhcpduser.keytab
chown: cannot access ‘/etc/dhcpduser.keytab’: No such file or directory
Директория по этому пути не создалась, как можно это исправить??? Заранее спасибо!!!

Reply
Belfigor 12.04.2022 - 21:44

Добрый день! Сделайте ls -l /etc/dhcpduser.keytab . Если файла нету — значит вы ошиблись в момент его выгрузки вот тут:
sudo samba-tool domain exportkeytab —principal=dhcpduser@ADMINGUIDE.LAN /etc/dhcpduser.keytab
Эту команду необходимо актуализировать под ваши реалии 🙂

Reply
Belfigor 12.04.2022 - 21:46

Так же отмечу что данная статья устарела и не факт что полученный после её выполнения результат будет совместим с настройками и действиями производимыми в актуальных видео по 20й убунте публикуемых в дзене и на ютубе

Reply
PrToy 19.04.2022 - 10:55

Привет! Спасибо за статью. Вопрос — можно ли будет на таком КД с помощью RSAT рулить групповыми политиками виндовых машин?

Reply
Belfigor 22.04.2022 - 20:22

Привет! Я настоятельно не рекомендую устанавливать 20й контроллер по этой статье т.к. она была опубликована почти сразу после выхода 20й убунты, и с тех пор 20я убунта сильно изменилась. Для установки контроллера домена на 20й убунте я рекомендую воспользоваться серией видео из этого плейлиста https://www.youtube.com/playlist?list=PLdQohrQ3OmqRO7GUS4Mkvu686KMw4bPRd

Reply

Добавить комментарий

%d такие блоггеры, как: