Содержание
Введение
Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.
Перед установкой желательно обновиться:
sudo aptitude update sudo aptitude upgrade
Установить всё это добро можно командой:
sudo aptitude install krb5-user samba winbind
Также может понадобиться установить следующие библиотеки:
sudo aptitude install libpam-krb5 libpam-winbind libnss-winbind
Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.
Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.COM, доменконтроллером которого является сервер dc.domain.com с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер1), он же DNS — dc2.domain.com с IP 192.168.0.2. Ваш же компьютер будет называться smbsrv01.
Настройка DNS
Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер2) и в качестве домена поиска — нужный домен.
Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf
на примерно такое:
domain domain.com search domain.com nameserver 192.168.0.1 nameserver 192.168.0.2
В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно.
Для получение нужного результата нужно добавить необходимые изменения в файл: /etc/resolvconf/resolv.conf.d/head
Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf
Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться «неправильный» resolv.conf’ , например присутствует только один nameserver 192.168.0.1 и не указаны domain и search. Нужно отредактировать /etc/dhcp/dhclient.conf
. Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:
supersede domain-name "domain.com";
Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:
prepend domain-name-servers 192.168.0.2;
Для применения изменений остается перезапустить службу:
/etc/init.d/networking restart
Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname
:
smbsrv01
Кроме того необходимо отредактировать файл /etc/hosts
так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:
# Имена этого компьютера 127.0.0.1 localhost 127.0.1.1 smbsrv01.domain.com smbsrv01
Сразу нужно проверить что нормально пингуется наш контроллер домена, по короткому и полному имени, чтобы в будушем не получать ошибки что контроллер домена не найден:
ping dc ping dc.domain.com
Не обязательно, но если вы что-то поменяете — перезагрузите компьютер для применения изменений.
Настройка синхронизации времени
Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos.
Для единовременной синхронизации можно воспользоваться командой:
sudo net time set dc
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd
, это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo aptitude install ntp
Теперь исправьте файл /etc/ntp.conf
, добавив в него информацию о вашем сервере времени:
# You do need to talk to an NTP server or two (or three). server dc.domain.com
После чего перезапустите демон ntpd
:
sudo /etc/init.d/ntp restart
Теперь пора настраивать непосредственно взаимодействие с доменом.
Настройка авторизации через Kerberos
Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf
. В общем случае он выглядит так:
[libdefaults] default_realm = DOMAIN.COM kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] DOMAIN.COM = { kdc = dc kdc = dc2 admin_server = dc default_domain = DOMAIN.COM } [domain_realm] .domain.com = DOMAIN.COM domain.com = DOMAIN.COM [login] krb4_convert = false krb4_get_tickets = false
Вам, конечно, нужно изменить domain.com
на ваш домен и dc
и dc2
на ваши доменконтроллеры. Кстати, возможно вам понадобится написать полные имена доменконтроллеров dc.domain.com
и dc2.domain.com
. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.
Обратите особое внимание на регистр написания имени домена — везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.
Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.
Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду
kinit username@DOMAIN.COM
Вместо username естественно стоит вписать имя существующего пользователя домена.
Имя домена необходимо писать заглавными буквами!
Если вы не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.
Убедиться в том, что билет получен, можно выполнив команду
klist
Удалить все билеты (они вам вообще говоря не нужны) можно командой
kdestroy
Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit
.
Распространённые ошибки kinit
kinit(v5): Clock skew too great while getting initial credentials
Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).
kinit(v5): Preauthentication failed while getting initial credentials
Вы ввели неверный пароль.
kinit(v5): KDC reply did not match expectations while getting initial credentials
Самая странная ошибка. Убедитесь, что имя realm в krb5.conf
, а так же домен в команде kinit
введены большими буквами:
DOMAIN.COM = { # ...
kinit username@DOMAIN.COM
kinit(v5): Client not found in Kerberos database while getting initial credentials
Указанного пользователя не существует в домене.
Настройка Samba и вход в домен
Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf
. На данном этапе вас должны интересовать только некоторые опции из секции [global]
. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:
[global] # Эти две опции нужно писать именно в заглавном регистре, причём workgroup без # последней секции после точки, а realm - полное имя домена workgroup = DOMAIN realm = DOMAIN.COM # Эти две опции отвечают как раз за авторизацию через AD security = ADS encrypt passwords = true # Просто важные dns proxy = no socket options = TCP_NODELAY # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе, # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде domain master = no local master = no preferred master = no os level = 0 domain logons = no # Отключить поддержку принтеров load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes
После того, как вы отредактируете smb.conf
выполните команду
testparm
Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:
# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:
net ads join -U username -D DOMAIN
И в случае успеха вы увидите что-то похожее на:
# net ads join -U username -D DOMAIN Enter username's password: Using short domain name -- DOMAIN Joined 'SMBSRV01' to realm 'domain.com'
Используемые параметры команды net
-U username%password
: Обязательный параметр, вместо username
необходимо подставить имя пользователя с правами администратора домена, и указать пароль.
-D DOMAIN
: DOMAIN
— собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать — хуже не будет.
-S win_domain_controller
: win_domain_controller
, можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.
createcomputer=«OU/OU/…»
: В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».
Если больше никаких сообщений нет — значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.
Так же можно набрать команду:
net ads testjoin
Если все хорошо, можно увидеть:
#net ads testjoin Join is OK
Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие3):
DNS update failed!
Это не очень хорошо, и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять, что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены, что всё настроили верно, а DNS всё равно не обновляется, то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно, если нет никаких других ошибок, и вы успешно вошли в домен. Однако лучше всё же разберитесь, почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером, но и с некорректной настройкой AD.
Прежде чем выяснять, почему же не обновляется DNS, не забудьте перезагрузить компьютер после введения в домен! Вполне возможно, что это решит проблему.
Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient
:
sudo aptitude install smbclient
Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation
:
smbclient -k -L workstation
Вы должны увидеть список общих ресурсов на этом компьютере.
Настройка Winbind
Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf
. Добавьте в секцию [global]
следующие строки:
# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind. # Диапазоны идентификаторов для виртуальных пользователей и групп. idmap uid = 10000 - 40000 idmap gid = 10000 - 40000 # Эти опции не стоит выключать. winbind enum groups = yes winbind enum users = yes # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп # будут использоваться с доменом, т.е. вместо username - DOMAINusername. # Возможно именно это вам и нужно, однако обычно проще этот параметр включить. winbind use default domain = yes # Если вы хотите разрещить использовать командную строку для пользователей домена, то # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false template shell = /bin/bash # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку winbind refresh tickets = yes
Параметры :
idmap uid = 10000 — 40000
idmap gid = 10000 — 40000
в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm
будет выдваться предупреждение:
WARNING: The «idmap uid» option is deprecated
WARNING: The «idmap gid» option is deprecated
Чтобы убрать предупреждения нужно заменить эти строки на новые:
idmap config * : range = 10000-20000
idmap config * : backend = tdb
Теперь перезапустите демон Winbind и Samba в следующем порядке:
sudo /etc/init.d/winbind stop sudo smbd restart sudo /etc/init.d/winbind start
Запускаем
sudo testparm
Смотрим есть ли ошибки или предупреждения, если появится:
«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»
Без перезагрузки можно устранить так:
ulimit -n 16384
Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf
# Добавить в конец файла строки: * - nofile 16384 root - nofile 16384
После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:
# wbinfo -t checking the trust secret for domain DCN via RPC calls succeeded
А так же, что Winbind увидел пользователей и группы из AD командами4):
wbinfo -u wbinfo -g
Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN
, либо без него — в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf
.
Итак, Winbind работает, однако в систему он ещё не интегрирован.
Добавление Winbind в качестве источника пользователей и групп
Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf
:
passwd: compat group: compat
добавив к ним в конец winbind
:
passwd: compat winbind group: compat winbind
также рекомендую привести строку files в файле /etc/nsswitch.conf
к виду:
files: dns mdns4_minimal[NotFoud=return] mdns4
ubuntu server 14.04, файл /etc/nsswitch.conf
не содержал строку
«files: dns mdns4_minimal[NotFoud=return] mdns4»
вместо неё было:
«hosts: files mdns4_minimal [NOTFOUND=return] dns wins»
Которую я преобразовал в:
«hosts: dns mdns4_minimal[NotFoud=return] mdns4 files»
после чего всё заработало
Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив
getent passwd getent group
Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd
, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf
диапазона. Вторая должна сделать тоже самое для групп.
Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.
Авторизация в Ubuntu через пользователей домена
Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.
Он-лайн авторизация
Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session
, т.к. PAM и так неплохо справляется с авторизацией:
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/
снизу добавить строку:
greeter-show-manual-login=true
Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 — он тоже работает):
Последовательность строк в файлах имеет значение!
/etc/pam.d/common-auth
auth required pam_env.so auth sufficient pam_unix.so likeauth nullok try_first_pass auth sufficient pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE auth required pam_deny.so
/etc/pam.d/common-account
account sufficient pam_winbind.so account required pam_unix.so
/etc/pam.d/common-session
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077 session optional pam_ck_connector.so nox11 session required pam_limits.so session required pam_env.so session required pam_unix.so
/etc/pam.d/common-password
password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow password sufficient pam_winbind.so password required pam_deny.so
И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:
sudo bash -c "for i in 2 3 4 5; do mv /etc/rc$i.d/S20winbind /etc/rc$i.d/S99winbind; done"
Что эквивалентно запуску для каждого уровня (в примере — 4) команды:
mv /etc/rc4.d/S20winbind /etc/rc4.d/S99winbind
В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, вполнив команду «ls /etc/rc{2,3,4,5}.d/ | grep winbind» (без кавычек).
Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.
Офф-лайн авторизация
Часто возникает ситуация, когда домен-контроллер недоступен по различным причинам — профилактика, отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее.
Добавьте в секцию [global]
файла /etc/samba/smb.conf
следующие строки:
[global] # Возможность оффлайн-авторизации при недоступности доменконтроллера winbind offline logon = yes # Период кэширования учетных записей, по умолчанию равен 300 секунд winbind cache time = 300 # Необязательная настройка, но избавляет от нудных пауз, указываем контроллер домена dc, # можно указать и ip, но это является плохим тоном password server = dc
Обычно этого достаточно. Если же возникают ошибки, то необходимо создать файл /etc/security/pam_winbind.conf
со следующим содержанием5):
Внимание! При использовании советов ниже может возникать совершенно случайная ошибка «Сбой аутентификации»! Поэтому все что Вы делаете, Вы делаете на свой страх и риск!
# # pam_winbind configuration file # # /etc/security/pam_winbind.conf # [global] # turn on debugging debug = no # request a cached login if possible # (needs "winbind offline logon = yes" in smb.conf) cached_login = yes # authenticate using kerberos krb5_auth = yes # when using kerberos, request a "FILE" krb5 credential cache type # (leave empty to just do krb5 authentication but not have a ticket # afterwards) krb5_ccache_type = FILE # make successful authentication dependend on membership of one SID # (can also take a name) ;require_membership_of = silent = yes
Файл /etc/pam.d/gnome-screensaver
в таком случае принимает вид:
auth sufficient pam_unix.so nullok_secure auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so
А также изменяется файл /etc/pam.d/common-auth
:
auth optional pam_group.so auth sufficient pam_unix.so nullok_secure use_first_pass auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so
Ссылки
Прочитано:
26 227
Задача: разобрать действия по организации сервиса времени для всей локальной сети дабы рабочие станции, сервера получали точное время и оно везде было одинаковым. Сервис времени организовывается на домен контроллере под управлением операционной системы Windows Server 2012 R2, также действия ниже аналогичны и для Server 2008 R2
Схема: интернет — Mikrotik — DC — Workstations
Открываю на srv-dc консоль командной строки с правами администратора:
Win + X — Command Prompt (Admin)
Определяю какой домен контроллер (Windows Server 2012 R2 Std) имеет роль PDC если домен контроллеров несколько в домене:
C:Windowssystem32>netdom query fsmo
Schema master srv-dc.polygon.local
Domain naming master srv-dc.polygon.local
PDC srv-dc.polygon.local
RID pool manager srv-dc.polygon.local
Infrastructure master srv-dc.polygon.local
The command completed successfully.
Как видно из вывода, это контроллер домена srv-dc.polygon.local, подключаюсь теперь к нему по RDP или VNC соединению для выполнения следующих команд:
C:Windowssystem32>net stop w32time
Настраиваем внешний источник времени:
C:Windowssystem32>w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org"
Cделать ваш контроллер домена PDC доступным для клиентов:
C:Windowssystem32>w32tm /config /reliable:yes
Запускаю службу времени:
C:Windowssystem32>net start w32time
Также можно изменения вносить и через реестр в ключе: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters
Чтобы после принудительно запросить получение точного времени проделываем:
C:Windowssystem32>W32tm /config /reliable:yes
The command completed successfully.
C:Windowssystem32>W32tm /config /update
The command completed successfully.
C:Windowssystem32>W32tm /resync
Sending resync command to local computer
The command completed successfully.
Вот и все, служба времени Windows начинает синхронизацию времени с внешним источником, посмотреть этот процесс можно так:
C:Windowssystem32>w32tm /query /configuration
После нужно добавить параметр в DHCP оснастку, что сервер времени это наш домен контроллер:
Win + X — Control Panel — Administrative Tools — запускаю оснастку DHCP: DHCP → srv-dc.polygon.local → IPv4 → Scope [10.10.10.0] local → и через правый клик мышью по Scope Options вызываю меню Configure Options… где добавляю опцию для всего домена: 042 NTP Servers
Теперь доменные Windows станции будут знать, что сервер времени это домен контроллер, а для моих Ubuntu системы после установке sudo apt-get install ntp -y в файле /etc/ntp.conf нужно будет в параметре server указать IP адрес этого домен контроллера и перезапустить службу времени sudo service ntp restart.
Если же у Вас DHCP сервис развернут не на Windows, то донести до всех где брать точное время можно через групповые политики GPO. Создаем GPO_NTP и предопределяем, что ориентирована она будет на текущий домен и все рабочие станции посредством WMI-фильтра.
Открываю оснастку на srv-dc управления групповыми политиками домена:
Win + X — Control Panel — Administrative Tools — Group Policy Management, открываю на редактирование: Group Policy Management → Forest: polygon.local → Domains → polygon.local → и через правый клик мышью по WMI Filters вызываю меню New…
- Name: W7
- Decription: Windows 7 x86/x64
- Queries: → Add
- Namespace: rootCIMv2
- Query: Select
* from WIN32_OperatingSystem where ((Version > "6") and
(ProductType = 1))
и
нажимаю OK, OK, Save
После перехожу к редактированию групповой политики для рабочих станции домена, через правый клик мышью по GPO_NTP вызываю меню Edit.
Computer Configuration → Policies → Administrative Tools → System → Windows Time Service → Time Providers → Configure Windows NTP Client, включаю ее Enabled и определяю настройки:
NtpServer: srv-dc.polygon.local,0x9
все остальное оставляю по умолчанию.
После нажимаю Apply & OK.
И не забываем к политике добавить WMI фильтр. В конечном итоге политика должна выглядеть так:
После когда политика применится к системам согласно WMI-фильтру можно будет проверить куда смотрит рабочая станции если ей нужно точное время:
C:Usersalektest>w32tm /query /status
Индикатор помех: 0(предупреждений нет)
Страта: 4 (вторичная ссылка - синхронизирована с помощью (S)NTP)
Точность: -6 (15.625ms за такт времени)
Задержка корня: 0.0876923s
Дисперсия корня: 7.8503892s
Идентификатор опорного времени: 0x0A0A0A02 (IP-адрес источника: 10.10.10.2)
Время последней успешной синхронизации: 30.04.2017 16:46:38
Источник: srv-dc.polygon.local
Интервал опроса: 10 (1024s)
C:Usersalektest>w32tm /monitor
srv-dc.polygon.local *** PDC ***[10.10.10.2:123]:
ICMP: 0ms задержка
NTP: +0.0000000s смещение относительно srv-dc.polygon.local
RefID: ground.corbina.net [85.21.78.91]
Страта: 3
Работает.
На замету: Если же в локальной сети появятся рабочие станции под управлением Windows 8 и выше, то нужно будет модифицировать WMI фильтр.
Но как известно, в случае чего с домен контроллером его роли можно забирать, так может произойти в случае различных проблем. Вот забрали роль PDC и время поехало во всем домене, чтобы этого не произошло нужно создать групповую политику ориентированную только на домен контроллер с ролью PDC: GPO_PDC и WMI фильтр с именем PDC следующего содержания:
Select
* from Win32_ComputerSystem where DomainRole = 5
Computer Configuration → Policies → Administrative Tools → System → Windows Time Service → Time Providers → Configure Windows NTP Client, включаю ее Enabled и определяю настройки:
NtpServer: 0.pool.ntp.org,0x9
все
остальное оставляю по умолчанию.
После нажимаю Apply & OK.
и Computer Configuration → Policies → Administrative Tools → System → Windows Time Service → Time Providers -> Enable Windows NTP Client включить Enable.
Также параметр Type вместо NT5DS можно использовать и NTP
И не забываем к политике добавить WMI фильтр ← PDC. Теперь не важно кто является домен контроллером, точное время на нем будет.
А раз так, что рабочие станции не обязательно привязывать/создавать к политике назначения точного времени, ведь по умолчанию рабочие станции домена, итак, забирают точное время с контроллера домена по умолчанию.
Подведу итог:
- Настраиваю GPO и привязываю ее через WMI фильтр к серверу у которого есть роль PDC
- В оснастке DHCP указываю параметр кто в домене является сервером у которого клиентским рабочим станциям запрашивать точное время.
- Если DHCP не на базе Windows, то можно настроить GPO и сделать нацеливание на определенную ось.
На заметку: Если домен контроллер развернут на виртуальной системе, то следует проверить, что время берется не с гипервизора, а через настройку этой заметки.
На заметку: если роль PDC была переназначена на другой сервер, то я советую перезагрузить домен контроллер и все остальные также.
На этом у меня все. Задача выполнена и задокументирована, с уважением автор блога Олло Александр aka ekzorchik.
Linux
26.09.201926.09.2019
1 Minute
Во первых определяем источник точного времени, как правило это один из Domain Controller. Для этого на Windows находящейся в домене выполняем команду :
netdom query DC
Получим список контроллеров домена. Либо получаем имя сервера с которого данная Windows машина обновляет время, выполняем команду :
net time
(Выполнение данной команды может занять некоторое время)
На Линукс сервере проверяем доступность полученого сервера точного времени — пингуем его.
Далее в файле /etc/systemd/timesyncd.conf раскомментируем строку NTP и добавляем в нее IP сервера времени :
[Time]
NTP=<IP Domain Controller>
Закомментируем строку с FallbackNTP
Добавляем в файл /etc/ntp.conf строку :
pool
<IP Domain Controller>
prefer
закомментируем остальные строки начинающиеся с pool …
перезапускаем службу ntp:
sudo systemctl ntp restart
Проверяем работу ntp выполнив команду :
ntpq -np
.
будет выведена таблица, где:
- remote — имя ntp сервера
- refid — ip вышестоящего NTP сервера
- st — stratum — уровент данного ntp сервера , может быть число от 1 до 16
- t — Тип удаленного сервера
- when — как давно было последнее обновление времени
- poll — период опроса сервера в секундах
- reach — успешность выполнения предыдущих попыток 377 — все попытки были успешными
- delay — задержка ответов от сервера
- offset — разница во времени между локальным и удаленным сервером. Чем меньше данное значение тем лучше.
- jitter — дисперсия отклонения удаленных часов относительно локальных.
Активируем синхронизацию времени по NTP, для этого выполняем:
sudo timedatectl set-ntp true
проверяем что NTP sync активировано:
sudo timеdatectl status
Синхронизация времени закончена.
Опубликовано
26.09.201926.09.2019
Синхронизация времени — важный и во многом достаточно критичный аспект работы Active Directory, особенно сегодня, когда широко используется взаимодействие с внешними системами и работа с сотрудниками, которые могут находиться в различных часовых поясах. Применение систем виртуализации вносит дополнительные особенности, которые также следует учитывать. Поэтому данный вопрос может оказаться не столь простым, как кажется, а синхронизация с внешним источником точного времени становится одной из актуальных задач.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Прежде всего вспомним, как происходит синхронизация времени в Active Directory. В качестве эталона времени выступает контроллер, владеющий ролью эмулятора PDC. Это FSMO-роль и эмулятором PDC может являться только один контроллер в каждом домене. С ним синхронизируют время остальные контроллеры домена. Доменные ПК и рядовые серверы сверяют часы с ближайшим контроллером домена.
Сам эмулятор PDC в качестве источника точного времени может использовать либо аппаратные часы материнской платы, либо внешний источник точного времени, при нахождении в виртуальной среде также может быть использовано время хоста виртуализации.
О последней поговорим более подробно. Раньше все было довольно просто, источником времени в домене обычно служили аппаратные часы эмулятора PDC, ну отстали или убежали на пару минут, в конце концов можно и подвести. Когда добавилось требование взаимодействия с внешними системами критичными к точному времени (например, использующих криптографию), то в качестве источника времени стал выступать внешний сервер. От него получал время эмулятор PDC, с ним синхронизировались контроллеры, а от них точное время расходилось на остальных участников домена.
С приходом виртуализации все изменилось, появился еще один источник времени — время хоста виртуализации. Многие гипервизоры по умолчанию имеют включенной настройку синхронизации времени гостевых систем и при попадании в виртуальную среду контроллера может возникнуть следующая коллизия: контроллер синхронизирует время с хостом, но сам хост, являясь членом домена, в свою очередь синхронизируется с контроллером.
Еще хуже, если в виртуальную среду попадает эмулятор PDC, в силу особенностей таймера виртуальных машин, время внутри может достаточно сильно плавать, поэтому виртуальный эмулятор PDC всегда должен синхронизировать время с внешним источником, а синхронизация времени с хостом должна быть отключена, последнее касается и всех остальных виртуальных членов домена.
Давайте перейдем от теории к практике. Начнем с того, что выясним кто из контроллеров является эмулятором PDC и эталоном времени для домена. Это можно сделать на любом контроллере домена командой:
netdom query fsmo
В выводе будут показаны все хозяева операций, нас интересует только эмулятор PDC.
Затем перейдем на указанный контроллер и узнаем источник времени для него, для этого выполните команду:
w32tm /query /source
Если в выводе вы увидите:
Local CMOS Clock
то источником времени являются аппаратные часы. А если там будет:
VM IC Time Synchronization Provider
то вы имеете дело с виртуальной машиной, которая синхронизирует время с хостом.
Данную настройку следует исправить, это можно сделать в настройках виртуальной машины, отключив синхронизацию времени с хостом, либо в самой системе, для этого откройте ветвь реестра:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersVMICTimeProvider
и установите для параметра Enabled значение 0.
После данного изменения следует перезапустить Службу времени Windows или перезагрузить компьютер.
Следующим шагом будет настройка нашего эмулятора PDC на работу с внешними источниками точного времени. Все изменения также будут вноситься через реестр. Прежде всего изменим тип сервера на NTP, для этого откроем ветку
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters
и для параметра Type укажем строковое значение NTP. А для параметра NtpServer зададим адреса серверов точного времени, после каждого из которых, через запятую укажем 0x8, если мы хотим работать как стандартный NTP-клиент или 0x1 если будем использовать собственные параметры, например:
0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1
После чего в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer
Параметр Enabled установим в значение 1.
Затем перейдем в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
и установим для параметра AnnounceFlags значение A.
Следующие параметры будут работать, только если мы при указании серверов добавили 0x1, иначе будут использоваться настройки, предлагаемые сервером. Чтобы задать период синхронизации откройте ветку
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient
и для параметра SpecialPollInterval укажите десятичное значение в секундах.
Вернемся в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
и зададим максимальное время опережения и отставания часов, после которых синхронизация производиться не будет. Для этого используются параметры MaxPosPhaseCorrection (опережение) и MaxNegPhaseCorrection (отставание) для которых также следует задать десятичное значение в секундах. По умолчанию стоит 48 часов. Это значит, что если время на эмуляторе PDC уйдет от точного источника более чем на 48 часов в любую сторону, то синхронизация производиться не будет.
Если вы хотите, чтобы время синхронизировалось всегда, то установите в оба параметра шестнадцатеричное значение FFFFFFFF.
Выполнив настройки перезапустите Службу времени Windows, это также можно сделать в командной строке:
net stop w32time
net start w32time
После чего еще раз выполним
w32tm /query /source
и убедимся, что источником времени для эмулятора PDC является внешний сервер.
Затем выполним данную команду на рядовых контроллерах домена, в качестве источника времени там должен быть указан эмулятор PDC, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Большинство людей следят за временем. Мы встаём вовремя, чтобы выполнить наши утренние ритуалы и отправиться на работу, сделать перерыв на обед, уложиться в сроки проекта, отметить дни рождения и праздники, сесть на самолёт и так далее.
Более того: некоторые из нас одержимы временем. Мои часы питаются от солнечной энергии и получают точное время из Национального института стандартов и технологий (NIST) в Форт-Коллинз (штат Колорадо) через длинноволновую радиостанцию WWVB. Сигналы времени синхронизируются с атомными часами, также расположенными в форте Коллинз. Мой Fitbit синхронизируется с моим телефоном, который синхронизируется с сервером NTP, который в конечном итоге синхронизируется с атомными часами.
Устройства тоже следят за временем
Есть много причин, по которым нашим устройствам и компьютерам нужно точное время. Например, в банковской сфере, на фондовых рынках и других финансовых предприятиях транзакции должны выполняться в надлежащем порядке, и для этого критически важны точные временные последовательности.
Наши телефоны, планшеты, автомобили, системы GPS и компьютеры требуют точной настройки времени и даты. Я хочу, чтобы часы на рабочем столе моего компьютера показывали правильное время. Я хочу, чтобы в моём локальном календаре напоминания появлялись в нужное время. Правильное время также гарантирует, что задания cron и systemd запускались в нужное время.
Дата и время также важны для ведения журнала, поэтому немного проще найти те или иные логи, ориентируясь по дате и времени. Например, однажды я работал в DevOps (в то время его так не называли) и занимался настройкой системы электронной почты в штате Северная Каролина. Раньше мы обрабатывали более 20 миллионов писем в день. Отслеживание электронной почты через серию серверов или определение точной последовательности событий с использованием файлов журналов на географически разнесенных хостах может быть намного проще, если соответствующие компьютеры синхронизированы по времени.
Время одно — часов много
Хосты Linux должны учитывать, что существует системное время и время RTC. RTC (Real Time Clock — часы реального времени) является немного странным и не особо точным названием для аппаратных часов.
Аппаратные часы работают непрерывно, даже когда компьютер выключен, используя аккумулятор на материнской плате системы. Основная функция RTC — хранить время, когда соединение с сервером времени недоступно. В те времена, когда нельзя было подключиться к серверу времени через интернет каждый компьютер должен был иметь точные внутренние часы. Операционные системы должны были обращаться к RTC во время загрузки, и пользователь должен был вручную установить системное время, используя аппаратный интерфейс конфигурации BIOS, чтобы убедиться, что оно правильное.
Аппаратные часы не понимают концепцию часовых поясов; в RTC хранится только время, а не часовой пояс или смещение от UTC (Всемирное координированное время, которое также известно как GMT или среднее время по Гринвичу). Вы можете установить RTC с помощью инструмента, о котором я расскажу позже в этой статье.
Системное время — это время, которое ОС отображает на часах GUI на вашем рабочем столе, в выходных данных команды date, в метках времени журналов. Это также относится ко времени создания, изменения и открытия файлов.
На странице man для rtc есть полное описание RTC и системных часов.
Что там у NTP?
Компьютеры во всем мире используют NTP (сетевой протокол времени) для синхронизации своего времени со стандартными эталонными часами через интернет с помощью иерархии серверов NTP. Основные серверы времени находятся на уровне 1, и они напрямую подключены к различным национальным службам времени на уровне 0 через спутник, радио или даже модемы по телефонным линиям. Службы времени на уровне 0 могут быть атомными часами, радиоприёмником, который настроен на сигналы, передаваемые атомными часами, или приёмником GPS, использующим высокоточные сигналы часов, передаваемые спутниками GPS.
На подавляющем большинстве эталонных серверов открыто несколько тысяч общедоступных серверов NTP stratum 2, которые доступны для всех. Многие организации и пользователи (включая меня) с большим количеством хостов, которым требуется NTP-сервер, предпочитают устанавливать свои собственные серверы времени, поэтому только один локальный хост обращается к stratum 2 или 3. Затем они настраивают оставшиеся узлы в сети для использования локального сервера времени. В случае моей домашней сети это сервер уровня 3.
Различные реализации NTP
Первоначальная реализация NTP — это ntpd. Затем к ней присоединились две более новых, chronyd и systemd-timesyncd. Все три синхронизируют время локального хоста с сервером времени NTP. Служба systemd-timesyncd не так надёжна, как chronyd, но этого достаточно для большинства целей. Если RTC не синхронизирован, она может постепенно корректировать системное время, чтобы синхронизироваться с NTP-сервером, когда локальное системное время немного смещается. Служба systemd-timesync не может использоваться в качестве сервера времени.
Chrony — это реализация NTP, содержащая две программы: демон chronyd и интерфейс командной строки под названием chronyc. У Chrony есть некоторые функции, которые во многих случаях просто незаменимы:
- Chrony может синхронизироваться с сервером времени намного быстрее, чем старый сервис ntpd. Это хорошо для ноутбуков или настольных компьютеров, которые не работают постоянно.
- Он может компенсировать колебания тактовых частот, например, когда хост переключается в спящий режим или входит в спящий режим, или когда тактовая частота изменяется из-за скачкообразного изменения частоты, которое замедляет тактовые частоты при низких нагрузках.
- Он решает проблемы со временем, связанные с нестабильным сетевым соединением или перегрузкой сети.
- Он регулирует задержки в сети.
- После начальной временной синхронизации Chrony никогда не останавливает часы. Это обеспечивает стабильные и согласованные временные интервалы для многих системных служб и приложений.
- Chrony может работать даже без подключения к сети. В этом случае локальный хост или сервер можно обновить вручную.
- Chrony может выступать в качестве NTP-сервера.
Ещё раз: NTP — это протокол, который может быть реализован на хосте Linux с использованием Chrony или systemd-timesyncd.
RPM-пакеты NTP, Chrony и systemd-timesyncd доступны в стандартных репозиториях Fedora. RPM systemd-udev — это менеджер событий ядра, который в Fedora установлен по умолчанию, но не является обязательным для использования.
Вы можете установить все три и переключаться между ними, но это создаст лишнюю головную боль. Так что лучше не стоит. Современные релизы Fedora, CentOS и RHEL перешли на Chrony как стандартную реализацию, и кроме того, у них есть systemd-timesyncd. Я считаю, что Chrony работает хорошо, обеспечивает лучший интерфейс, чем служба NTP, предоставляет гораздо больше информации и повышает контроль, что безусловно понравится системным администраторам.
Отключение служб NTP
Возможно, на вашем хосте уже запущена служба NTP. Если это так, вам нужно отключить её перед переключением на что-то другое. У меня был запущен chronyd, поэтому я использовал следующие команды, чтобы остановить и отключить его. Запустите соответствующие команды для любого демона NTP, который вы используете на своем хосте:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#
Проверьте, что служба остановлена и отключена:
[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:chronyd(8)
man:chrony.conf(5)
[root@testvm1 ~]#
Проверка статуса перед запуском
Статус системной синхронизации часов позволяет определить, запущена ли служба NTP. Поскольку вы ещё не запустили NTP, команда timesync-status намекнёт на это:
[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.
Прямой запрос статуса даёт важную информацию. Например, команда timedatectl без аргумента или параметров выполняет подкоманду status по умолчанию:
[root@testvm1 ~]# timedatectl status
Local time: Fri 2020-05-15 08:43:10 EDT
Universal time: Fri 2020-05-15 12:43:10 UTC
RTC time: Fri 2020-05-15 08:43:08
Time zone: America/New_York (EDT, -0400)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: yes
Warning: The system is configured to read the RTC time in the local time zone.
This mode cannot be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#
Так вы получите местное время для вашего хоста, время UTC и время RTC. В данном случае системное время установлено на часовой пояс America / New_York (TZ), RTC установлено на время в местном часовом поясе, а служба NTP не активна. Время RTC начало немного отклоняться от системного времени. Это нормально для систем, часы которых не были синхронизированы. Величина смещения на хосте зависит от времени, прошедшего с момента последней синхронизации системы.
Мы также получили предупреждение об использовании местного времени для RTC — это относится к изменениям часового пояса и настройкам летнего времени. Если компьютер выключен в тот момент, когда необходимо внести изменения, время RTC не изменится. Но для серверов или других хостов, которые работают круглосуточно, это вообще не проблема. Кроме того, любая служба, которая обеспечивает синхронизацию времени NTP, будет корректировать время хоста ещё на начальном этапе запуска, поэтому после завершения запуска время вновь станет правильным.
Установка часового пояса
Обычно вы указываете часовой пояс во время процедуры установки, и у вас нет задачи менять его в дальнейшем. Однако бывают случаи, когда необходимо изменить часовой пояс. Есть несколько инструментов, которые могут помочь. Для определения местного часового пояса хоста Linux использует файлы часовых поясов. Эти файлы находятся в каталоге /usr/share/zoneinfo. По умолчанию для моего часового пояса система прописывает вот это: /etc/ localtime -> ../usr/share/zoneinfo/America/New_York. Но вам не нужно знать такие тонкости, чтобы изменить часовой пояс.
Главное — знать официальное название часового пояса для вашего местоположения и соответствующую команду. Скажем, вы хотите изменить часовой пояс на Лос-Анджелес:
[root@testvm2 ~]# timedatectl list-timezones | column
<SNIP>
America/La_Paz Europe/Budapest
America/Lima Europe/Chisinau
America/Los_Angeles Europe/Copenhagen
America/Maceio Europe/Dublin
America/Managua Europe/Gibraltar
America/Manaus Europe/Helsinki
<SNIP>
Теперь вы можете установить часовой пояс. Я использовал команду date для проверки изменений, но вы также можете использовать timedatectl:
[root@testvm2 ~]# date
Tue 19 May 2020 04:47:49 PM EDT
[root@testvm2 ~]# timedatectl set-timezone America/Los_Angeles
[root@testvm2 ~]# date
Tue 19 May 2020 01:48:23 PM PDT
[root@testvm2 ~]#
Теперь вновь можете изменить часовой пояс своего хоста на местное время.
systemd-timesyncd
Демон systemd timesync предоставляет реализацию NTP, которой легко управлять в контексте systemd. Он устанавливается по умолчанию в Fedora и Ubuntu. Однако запускается он по умолчанию только в Ubuntu. Я не уверен насчёт других дистрибутивов. Вы можете проверить у себя сами:
[root@testvm1 ~]# systemctl status systemd-timesyncd
Конфигурирование systemd-timesyncd
Файл конфигурации для systemd-timesyncd — это /etc/systemd/timesyncd.conf. Это простой файл с меньшим количеством включенных опций, чем в старых сервисах NTP и chronyd. Вот содержимое этого файла (без дополнительных изменений) на моей виртуальной машине с Fedora:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.
[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
Единственный раздел, который он содержит, кроме комментариев, это [Time]. Все остальные строки закомментированы. Это значения по умолчанию, их не нужно менять (если у вас нет для этого причин). Если у вас нет сервера времени NTP, определенного в строке NTP =, по умолчанию в Fedora используется резервный сервер времени Fedora. Я обычно добавляю свой сервер времени:
NTP=myntpserver
Запуск timesync
Запустить и сделать systemd-timesyncd активным можно так:
[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Created symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service → /usr/lib/systemd/system/systemd-timesyncd.service.
[root@testvm2 ~]# systemctl start systemd-timesyncd.service
[root@testvm2 ~]#
Установка аппаратных часов
Вот как выглядит ситуация после запуска timesyncd:
[root@testvm2 systemd]# timedatectl
Local time: Sat 2020-05-16 14:34:54 EDT
Universal time: Sat 2020-05-16 18:34:54 UTC
RTC time: Sat 2020-05-16 14:34:53
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Изначально разница между RTC и местным временем (EDT) не превышает секунды, и расхождение возрастает ещё на пару секунд в течение следующих нескольких дней. Поскольку в RTC нет понятия часовых поясов, команда timedatectl должна выполнить сравнение, чтобы определить нужный часовой пояс. Если время RTC точно не соответствует местному времени, то значит, оно не соответствует и местному часовому поясу.
В поисках дополнительной информации я проверил состояние systemd-timesync и обнаружил вот что:
[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-05-16 13:56:53 EDT; 18h ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 822 (systemd-timesyn)
Status: "Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org)."
Tasks: 2 (limit: 10365)
Memory: 2.8M
CPU: 476ms
CGroup: /system.slice/systemd-timesyncd.service
└─822 /usr/lib/systemd/systemd-timesyncd
May 16 09:57:24 testvm2.both.org systemd[1]: Starting Network Time Synchronization...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: System clock time unset or jumped backwards, restoring from recorded timestamp: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: Started Network Time Synchronization.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#
Обратите внимание на сообщение журнала, в котором говорится, что системное время не установлено или сброшено назад. Служба Timesync устанавливает системное время на основе временной метки. Метки времени поддерживаются демоном timesync и создаются при каждой успешной синхронизации.
Команда timedatectl не имеет возможности взять значение аппаратных часов из системных часов. Она может установить время и дату только из значения, введённого в командной строке. Вы можете установить RTC на то же значение, что и системное время, используя команду hwclock:
[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
Local time: Mon 2020-05-18 13:56:46 EDT
Universal time: Mon 2020-05-18 17:56:46 UTC
RTC time: Mon 2020-05-18 13:56:46
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: yes
Опция —localtime говорит о том, что аппаратные часы показывают местное время, а не UTC.
Зачем вам вообще RTC?
Любая реализация NTP установит системные часы во время запуска. И зачем тогда RTC? Это не совсем так: это произойдет только в случае, если у вас есть сетевое соединение с сервером времени. Однако многие системы не имеют постоянного доступа к сетевому соединению, поэтому аппаратные часы полезны для того, чтобы Linux мог на их основе установить системное время. Это лучше, чем установка времени вручную, даже если оно может отклоняться от реального времени.
Заключение
В этой статье рассмотрены некоторые инструменты для управления датой, временем и часовыми поясами. Инструмент systemd-timesyncd предоставляет NTP-клиента, который может синхронизировать время на локальном хосте с NTP-сервером. Однако systemd-timesyncd не предоставляет серверную службу, поэтому, если вам нужен NTP-сервер в вашей сети, вы должны использовать что-то ещё — например, Chrony, для работы в качестве сервера.
Я предпочитаю иметь единственную реализацию для любой служб в моей сети, поэтому использую Chrony. Если вам не нужен локальный NTP-сервер или если вы не против использовать Chrony в качестве сервера и systemd-timesyncd в качестве SNTP-клиента. Ведь нет необходимости использовать дополнительные возможности Chrony как клиента, если вас устраивает функционал systemd-timesyncd.
Еще одно замечание: вы не обязаны использовать инструменты systemd для реализации NTP. Вы можете использовать старую версию ntpd, Chrony или другую реализацию NTP. Ведь systemd состоит из большого количества сервисов; многие из них являются необязательными, поэтому их можно отключить и использовать вместо них что-то ещё. Это не огромный монолитный монстр. Можно не любить systemd или его части, но вы должны принять обоснованное решение.
Мне нравится реализация NTP в systemd, но я предпочитаю Chrony, потому что он лучше отвечает моим потребностям. Это Linux, детка -)
На правах рекламы
VDSina предлагает серверы под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата. Напомним, у нас есть вечные серверы, которые точно неподвластны времени
Всем привет.
Синхронизация времени — важный и во многом достаточно критичный аспект работы Active Directory, особенно сегодня, когда широко используется взаимодействие с внешними системами и работа с сотрудниками, которые могут находиться в различных часовых поясах. Применение систем виртуализации вносит дополнительные особенности, которые также следует учитывать. Поэтому данный вопрос может оказаться не столь простым, как кажется, а синхронизация с внешним источником точного времени становится одной из актуальных задач.
Прежде всего вспомним, как происходит синхронизация времени в Active Directory. В качестве эталона времени выступает контроллер, владеющий ролью эмулятора PDC. Это FSMO-роль и эмулятором PDC может являться только один контроллер в каждом домене. С ним синхронизируют время остальные контроллеры домена. Доменные ПК и рядовые серверы сверяют часы с ближайшим контроллером домена.
Сам эмулятор PDC в качестве источника точного времени может использовать либо аппаратные часы материнской платы, либо внешний источник точного времени, при нахождении в виртуальной среде также может быть использовано время хоста виртуализации.
С приходом виртуализации все изменилось, появился еще один источник времени — время хоста виртуализации. Многие гипервизоры по умолчанию имеют включенной настройку синхронизации времени гостевых систем и при попадании в виртуальную среду контроллера может возникнуть следующая коллизия: контроллер синхронизирует время с хостом, но сам хост, являясь членом домена, в свою очередь синхронизируется с контроллером.
Еще хуже, если в виртуальную среду попадает эмулятор PDC, в силу особенностей таймера виртуальных машин, время внутри может достаточно сильно плавать, поэтому виртуальный эмулятор PDC всегда должен синхронизировать время с внешним источником, а синхронизация времени с хостом должна быть отключена, последнее касается и всех остальных виртуальных членов домена.
Давайте перейдем от теории к практике. Моделируем ситуацию когда PDC крутиться на Hyper-V. Начнем с того, что выясним кто из контроллеров является эмулятором PDC и эталоном времени для домена. Это можно сделать на любом контроллере домена командой:
netdom query fsmo
В выводе будут показаны все хозяева операций, нас интересует только эмулятор PDC.
Затем перейдем на указанный контроллер и узнаем источник времени для него, для этого выполните команду:
w32tm /query /source
Если в выводе вы увидите:
Local CMOS Clock
то источником времени являются аппаратные часы. Это может быть справедливо для самого сервера Hyper-V, но для сервера PDC это таже эмуляция. Это та самая коллизия, про которую писали выше.
Если в выводе вы увидите:
Free running system clock
то источником времени являются.., непонятно кто. Тут как минимум необходим перезапуск службы w32time, а возможно и ее полная перерегистрация.
Ну а если там будет:
VM IC Time Synchronization Provider
то вы имеете дело с виртуальной машиной, которая синхронизирует время с хостом, т.е. с сервером Hyper-V. Здесь уже важно как синхронизируется время самого сервера Hyper-V. Будем полагать что он является членом домена где рулит PDC.
Поэтому далее будем править настройки самого PDC.
Настройку можно исправить в настройках виртуальной машины, отключив синхронизацию времени с хостом (смотрим выше), либо в самой системе, для этого откройте ветвь реестра:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersVMICTimeProvider
и установите для параметра Enabled значение 0.
После данного изменения следует перезапустить Службу времени Windows (net stop w32time, net start w32time) или перезагрузить компьютер.
Получить список всех VM с HyperV-сервера, к примеру, srv-hyperv01, которые нуждаются в перенастройке можно так:
$Hyper = «srv-hyperv01»
$servers = Get-VM -ComputerName $Hyper | Where-Object {$_.State -eq ‘Running’}
foreach ($server in $servers)
{ Get-VMIntegrationService -ComputerName $Hyper -VMName $Server.Name -Name ‘Синхронизация времени’ | Where-Object {($_.Enabled -eq $True)} | Select VMName,Enabled | fl }
Следующим шагом будет настройка нашего эмулятора PDC на работу с внешними источниками точного времени. Все изменения также будут вноситься через реестр. Прежде всего изменим тип сервера на NTP, для этого откроем ветку
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters
и для параметра Type укажем строковое значение NTP. Для клиентов домена лучше ставить значение NT5DS. Ежели наблюдаете проблемы, то можете начать с AllSync. А для параметра NtpServer зададим адреса серверов точного времени, после каждого из которых, через запятую укажем 0x8, если мы хотим работать как стандартный NTP-клиент или 0x1 если будем использовать собственные параметры, например:
0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1
После чего в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer
Параметр Enabled установим в значение 1.
Затем перейдем в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
и установим для параметра AnnounceFlags значение A.
Следующие параметры будут работать, только если мы при указании серверов добавили 0x1, иначе будут использоваться настройки, предлагаемые сервером. Чтобы задать период синхронизации откройте ветку
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient
и для параметра SpecialPollInterval укажите десятичное значение в секундах.
Вернемся в
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
и зададим максимальное время опережения и отставания часов, после которых синхронизация производиться не будет. Для этого используются параметры MaxPosPhaseCorrection (опережение) и MaxNegPhaseCorrection (отставание) для которых также следует задать десятичное значение в секундах. По умолчанию стоит 48 часов. Это значит, что если время на эмуляторе PDC уйдет от точного источника более чем на 48 часов в любую сторону, то синхронизация производиться не будет.
Если вы хотите, чтобы время синхронизировалось всегда, то установите в оба параметра шестнадцатеричное значение FFFFFFFF.
Выполнив настройки перезапустите Службу времени Windows, это также можно сделать в командной строке:
net stop w32time
net start w32time
После чего еще раз выполним
w32tm /query /source
и убедимся, что источником времени для эмулятора PDC является внешний сервер.
Затем выполним данную команду на рядовых контроллерах домена, в качестве источника времени там должен быть указан эмулятор PDC, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Правку параметров синхронизации можно выполнить и одной строкой:
w32tm /config /manualpeerlist:»0.ru.pool.ntp.org» /syncfromflags:manual /reliable:yes /update
или через GPO:
Как лучше, смотрите по результатам работы, но обязательно проверяйте чтобы не было накладок где, к примеру, вы правите значения вручную, а следом или после ребута прибегает GPO.
Удачи.
Содержание
- Astra linux синхронизация времени с сервером
- Панель инструментов
- Боковая панель
- «Сервер»
- «Клиент»
- «Общее»
- Синхронизация времени на AstraLinux в Windows домене
- Сервис времени высокой точности PTP (Precision Time Protocol)
- Проверка оборудования
- Установка пакета
- Настройка службы timemaster
- Включение службы домена точного времени (ptp_domain)
- Включение и настройка службы ntp
- Настройка автоматического запуска timemaster
- Настройка службы ptp4l
- Настройка службы phc2sys
- Запуск всех служб
Astra linux синхронизация времени с сервером
Программа предназначена для настройки и управления сервером ntpd, позволяет сразу же применить сделанные настройки путем сохранения их в конфигурационный файл и перезапуском сервера ntpd. Также существует возможность полностью управлять сервером, т.е. осуществлять его запуск, перезапуск, останов и получать информацию о текущем состоянии. Запускается в режиме администратора. Для вызова привилегированных действий запрашивается авторизация.
Главное окно программы (рис. 1) содержит меню (Меню), панель инструментов (Панель инструментов) и боковую панель (Боковая панель) с рабочей панелью справа.
- Меню программы содержит следующие пункты:
- «Файл»:
- «Выход» — работа программы завершается;
- «Сервер»:
- «Пуск» — запуск сервера;
- «Останов» — остановка сервера;
- «Перезапуск» — перезапуск сервера;
- «Справка»:
- «Содержание» — вызов окна справки;
- «О программе. » — вызов окна с краткой информацией о программе.
Панель инструментов
На панели инструментов (см. рис. 1) располагаются кнопки [Пуск], [Останов] и [Перезапуск], которые повторяют аналогичные пункты меню «Сервер» (см. Меню).
Боковая панель
На боковой панели (см. рис. 1) в виде дерева содержится список функциональных категорий и разделов настройки. Двойным щелчком любой кнопки мыши на названии категории или одним щелчком любой кнопки мыши на знаке в вершине рядом с этим названием вершина дерева сворачивается, и знак в вершине изменяется. Повторением щелчков на названии или щелчка на знаке в вершине дерево снова разворачивается, а знак в вершине возвращается к первоначальному виду
Щелчком любой кнопки мыши на названии раздела этот раздел выделяется. На рабочей панели справа панели справа появляются элементы управления для установки значений параметров настройки, входящих в этот функциональнйы раздел. Разделы функциональных категорий настройки: «Сервер» («Сервер»), «Клиент» («Клиент»), «Общее» («Общее»).
«Сервер»
- Категория «Сервер» содержит разделы:
- «Широковещательный режим» (рис. 2) — рабочая панель содержит элементы для настройки широковещательных NTP-сообщений:
- поле «Режим работы» — кнопки-переключатели «Только клиент» и «Клиент и сервер» включают для широковещательных NTP-сообщений режим, соответственно, приема или приема и рассылки;
- в табличном виде отображается список установленных широковещательных режимов. Щелчком левой кнопки мыши элемент списка выделяется. Щелчком правой кнопки мыши открывается контекстное меню:
- [Добавить] — открывается окно «Настройки широковещания» (рис. 3) для установки нового элемента списка.
В окне устанавливаются значения параметров: IP-адрес сети (в строке ввода), минимальный интервал обновления (в числовом поле в сек.), время жизни (в числовом поле в сек.) и номер версии NTP (в числовом поле). После подтверждения или отмены окно закрывается и новый элемент, соответственно, устанавливается или не устанавливается в таблице;
- [Изменить] — открывается окно «Настройки широковещания» (см. рис. 3) для правки значений настройки выделенного элемента списка. После подтверждения или отмены окно закрывается и новые значения, соответственно, устанавливаются или не устанавливаются в таблице;
- [Удалить] — выделенный элемент списка удаляется;
- флаг «Использовать калибровку драйвера» — включает использование калибровки драйвера;
- в табличном виде отображается список установленных внешних источников. Щелчком левой кнопки мыши элемент списка выделяется. Щелчком правой кнопки мыши открывается контекстное меню:
- [Добавить] — открывается окно «Аппаратные часы» (рис. 5) для установки нового элемента списка.
В окне устанавливаются значения параметров для настройки часов и драйверов. Для часов: тип устройства (из списка), метка предпочтительного источника (флагом), порядковый номер устройства (в числовом поле), номер режима работы устройства (в числовом поле) и минимальный и максимальный интервалы (в числовых полях). Для драйверов: номер слоя (в числовом поле), константа смещения (в стоке ввода), константа драйвера (в стоке ввода), идентификатор(в стоке ввода) и флаги 1-4. После подтверждения или отмены окно закрывается и новый элемент, соответственно, устанавливается или не устанавливается в таблице;
- [Изменить] — открывается окно «Аппаратные часы» (см. рис. 5) для правки значений настройки выделенного элемента списка. После подтверждения или отмены окно закрывается и новые значения, соответственно, устанавливаются или не устанавливаются в таблице;
- [Удалить] — выделенный элемент списка удаляется;
- в табличном виде отображается список установленных режимов доступа. Щелчком левой кнопки мыши элемент списка выделяется. Щелчком правой кнопки мыши открывается контекстное меню:
- [Изменить] — открывается окно «Настройки доступа» (см. рис. 7) для правки значений настройки выделенного элемента списка. После подтверждения или отмены окно закрывается и новые значения, соответственно, устанавливаются или не устанавливаются в таблице;
- [Удалить] — выделенный элемент списка удаляется;
- [Добавить] — открывается окно «Настройки доступа» (рис. 7) для установки нового элемента списка.
В окне устанавливаются значения параметров сети и доступа. Для сети во вкладке «Адрес и маска» (см. рис. 7): IP-адрес и маска (в строках ввода) и флаг включения остальных. Для доступа во вкладке «Режим доступа и флаги» (рис. 8): кнопками переключателями устанавливается свободный, запрещенный (с флагом включения отправления kod-пакета) или специальный (с флагами включения из списка) режимы.
После подтверждения или отмены окно закрывается и новый элемент, соответственно, устанавливается или не устанавливается в таблице;
«Клиент»
- Категория «Клиент» содержит разделы:
- «Синхронизация с сервером» (рис. 9) — рабочая панель содержит элементы для настройки синхронизации с удаленным сервером в режиме «Клиент-сервер» и задания настроек для этого режима:
- в табличном виде отображается список установленных удаленных серверов. Щелчком левой кнопки мыши элемент списка выделяется. Щелчком правой кнопки мыши открывается контекстное меню:
- [Изменить] — открывается окно «Настройки синхронизации» (см. рис. 3) для правки значений настройки выделенного элемента списка. После подтверждения или отмены окно закрывается и новые значения, соответственно, устанавливаются или не устанавливаются в таблице;
- [Удалить] — выделенный элемент списка удаляется;
- [Добавить] — открывается окно «Настройки синхронизации» (рис. 10) для установки нового элемента списка.
В окне устанавливаются значения параметров настройки сервера: адрес (из списка), минимальный и максимальный интервалы (в числовых полях), пакетный режим (флагами включения «burst» и «iburst» технологий передачи данных ), метка предпочтительного сервера (флагом) и номер версии сервера NTP (в числовом поле). После подтверждения или отмены окно закрывается и новый элемент, соответственно, устанавливается или не устанавливается в таблице;
«Общее»
- Категория «Общее» содержит разделы:
- «Журналирование сообщений» (рис. 11) — рабочая панель содержит элементы для настройки процесса сбора, хранения и просмотра сообщений, записываемых в общий системный журнал:
- вкладки «Сообщения часов», «Сообщения соседей», «Сообщения системы» и «Сообщения синхронизации» — флагами устанавливаются регистрируемые сообщения, получаемые, соответственно, от часов, соседей, системы и сообщения синхронизации. Включается регистрация сообщений:
- флаг «Все сообщения» — всех;
- флаг «Информационные сообщения» — информационных;
- флаг «Сообщения о событиях» — о событиях;
- флаг «Сообщения статистики» — статистики;
- флаг «Сообщения о статусе синхронизации» — о статусе синхронизации;
- «Путь к каталогу с файлами статистики» — в строке или из диалогового окна устанавливается путь к каталогу с файлами статистики. Диалоговое окно открывается кнопкой [. ] (справа от строки). После подтверждения или отмены окно закрывается, и установленный путь, соответственно, отображается или не отображается в строке;
- вкладки «Модификация локальных часов», «Взаимодействие с соседями», «Драйвер локальных часов» и «Временные метки NTP» — устанавливаются параметры настройки для журналов ведения статистики, соответственно, модификации локальных часов, взаимодействия с соседями, драйверов локальных часов и временных меток NTP:
- флаги «Включено», «Link», «Разрешить запись в файл» — включают запись, соответственно, включения, соединения и записи в файл;
- «Правила генерации файлов» — из списка устанавливается правило генерации файла с журналом;
- «Сообщения о событиях» — о событиях;
- «Имя создаваемого файла (без расширения)» — в строке устанавливается имя файла с журналом. [Просмотр. ] (справа от строки) — просмотр журнала;
- «Использовать альтернативный файл журнала» — в строке или из диалогового окна устанавливается маршрутное имя альтернативного файла, который будет использоваться вместо системного. Диалоговое окно открывается кнопкой [. ] (справа от строки). После подтверждения или отмены окно закрывается, и установленный путь, соответственно, отображается или не отображается в строке;
- «Коррекция сетевой задержки» — в числовом поле устанавливается значение сетевой задержки, если оно не было определено автоматически.
Источник
Синхронизация времени на AstraLinux в Windows домене
Во первых определяем источник точного времени, как правило это один из Domain Controller. Для этого на Windows находящейся в домене выполняем команду :
netdom query DC
Получим список контроллеров домена. Либо получаем имя сервера с которого данная Windows машина обновляет время, выполняем команду :
(Выполнение данной команды может занять некоторое время)
На Линукс сервере проверяем доступность полученого сервера точного времени — пингуем его.
Далее в файле /etc/systemd/timesyncd.conf раскомментируем строку NTP и добавляем в нее IP сервера времени :
Закомментируем строку с FallbackNTP
Добавляем в файл /etc/ntp.conf строку :
закомментируем остальные строки начинающиеся с pool …
перезапускаем службу ntp:
sudo systemctl ntp restart
Проверяем работу ntp выполнив команду :
будет выведена таблица, где:
- remote — имя ntp сервера
- refid — ip вышестоящего NTP сервера
- st — stratum — уровент данного ntp сервера , может быть число от 1 до 16
- t — Тип удаленного сервера
- when — как давно было последнее обновление времени
- poll — период опроса сервера в секундах
- reach — успешность выполнения предыдущих попыток 377 — все попытки были успешными
- delay — задержка ответов от сервера
- offset — разница во времени между локальным и удаленным сервером. Чем меньше данное значение тем лучше.
- jitter — дисперсия отклонения удаленных часов относительно локальных.
Активируем синхронизацию времени по NTP, для этого выполняем:
Источник
Сервис времени высокой точности PTP (Precision Time Protocol)
Данная статья применима к:
В стандартные дистрибутивы и репозитории Astra Linux Common Edition включены следующие службы точного времени:
- Серверная служба NTP (ntpd) (представлена пакетами ntp и ntpdate);
- Серверная служба OpenNTP (openntpd) (представлена пакетом openntp);
- Клиентская служба timedatectl / systemd-timesyncd.service.
Подробнее про них можно прочитать по ссылке. Кроме того, по той же ссылке можно ознакомиться с базовыми терминами, связанными с организацией служб времени в компьютерах.
Начиная с версии Astra Linux Common Edition 2.12.10 помимо указанных выше служб в репозитории стал доступен пакет linuxptp, содержащий следующие службы:
- ptp4l — служба протокола времени высокой точности, реализующая работу по протоколу времени высокой точности PTP (Precision Time Protocol) в соответствии со стандартом IEEE 1588. Точность протокола зависит от того, как устанавливаются метки времени в пакетах IEEE 1588. При установке отметок времени программным путём, когда на точность влияют прерывания, загрузка процессора, и иные факторы, обеспечивается точность 1-100 микросекунд. Аппаратная поддержка обеспечивает точность до единиц микросекунд;
- phc2sys — служба синхронизации часов;
- timemaster — служба координации, обеспечивающая совместную работу традиционной службы времени ntp и службы времени высокой точности ptp.
Проверка оборудования
Пакет ориентирован на использование аппаратных средств точного времени, в частности, аппаратных возможностей сетевых карт (аппаратные отметки времени).
Пакет можно настроить и запустить и без сетевых карт, поддерживающих аппаратные возможности, что повлечёт некоторое снижение точности. Настройка пакета для работы без аппаратной поддержки описана ниже.
Проверить, поддерживает ли сетевая карта аппаратные отметки времени можно из командной строки с помощью команды ethtool из пакета ethtool (пакет ethtool придётся установить, если он не был установлен ранее):
Установка пакета
Пакет linuxptp доступен в репозитории Astra Linux Common Edition начиная с версии 2.12.10 и может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
Настройка службы timemaster
Конфигурация службы timemaster находится в файле /etc/linuxptp/timemaster.conf.
Подробно возможные параметры настройки описаны в электронной справочной системе:
Включение службы домена точного времени (ptp_domain)
Для включения службы времени высокой точности ptp4l раскомментировать в файле настроек /etc/linuxptp/timemaster.conf секцию [ptp_domain 0] (в примере — настройка домена точного времени, использующего интерфейс eth0):
[ptp_domain 0]
interfaces eth0
delay 10e-6
Домен точного времени обслуживается сервисом ptp4l, настройка этого сервиса описана ниже.
Включение и настройка службы ntp
Для включения службы ntp в файле настроек /etc/linuxptp/timemaster.conf в секции [timemaster] нужно указать службу ntpd вместо cronyd:
[timemaster]ntp_program chronyd
ntp_program ntpd
После внесения этих изменений служба timemaster сможет самостоятельно запускать службу ntpd под своим контролем, поэтому самостоятельный запуск службы ntpd следует отключить:
Настройка автоматического запуска timemaster
Кроме настройки конфигурационного файла нужно разрешить автоматический запуск службы timemaster при старте системы:
Настройка службы ptp4l
Служба ptp4l представляет собой реализацию протокола времени высокой точности и по умолчанию настроена на работу с сетевыми картами, поддерживающими аппаратные отметки времени (time stamping).
Как проверить наличие в сетевой карте аппаратной поддержки описано выше.
Конфигурация службы ptp4l хранится в файле /etc/linuxptp/ptp4l.conf, описание которого доступно в справочной системе:
Настройка службы phc2sys
Служба phc2sys настроек не требует, и если в системе имеется с чем синхронизировать системные часы RTC (имеется сетевая карта с аппаратными часами), phc2sys запустится автоматически с нужными параметрами. При работе с сетевыми картами, не поддерживающими аппаратные отметки времени служба phc2sys не запускается.
Запуск всех служб
После завершения настройки запуск всех служб осуществляется командой
Служба timemaster сама запустит запустит все остальные сервисы, в итоге статус нормально и полностью запущенной службы при наличии аппаратной поддержки выглядит примерно так:
Источник
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC).
Устаревшая инструкция: Ввод в домен на базе Windows 2003
Внимание! Если Ваш домен имеет суффикс .local — необходимо отключить avahi-daemon (подробнее ниже, пункт 2 примечаний).
Параметры домена
Параметр | Значение |
---|---|
Имя домена | SCHOOL.ALT |
Рабочая группа | SCHOOL |
Имя компьютера в Netbios | WS |
Имя пользователя-администратора | Administrator |
Пароль администратора | Pa$$word |
Подготовка
Установка пакетов
Внимание! Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через task-auth-ad-sssd.
С версии alterator-auth-0.31-alt1
apt-get install task-auth-ad-sssd
Примечание: Для старых версий:
apt-get install alterator-auth sssd-ad samba-common-tools
Требуемые версии:
- pam-config >= 1.7.0-alt1
- alterator-auth >= 0.26-alt1
Возможно, следует обновить установленный дистрибутив из репозитория.
Синхронизация времени
С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.
Для более ранних версий:
Способ 1: Через net time
net time set -S <имя домена>
Способ 2: По протоколу RFC 867
На сервере включается через xinetd daytime-tcp [1]:
# chkconfig --list | grep daytime-tcp daytime-tcp: вкл
А на клиенте — служба settime-rfc867:
chkconfig settime-rfc867 on service settime-rfc867 start
Способ 3: Через Центр управления системой → Дата и время
Включите флажок «Получать точное время с NTP-сервера» и укажите в поле справа pool.ntp.org. После этого нажмите кнопку «Применить».
Способ 4: Через ntpdate
ntpdate pool.ntp.org
Ввод в домен в Центре управления системой
Для ввода компьютера в Active Directory потребуется установить пакет task-auth-ad-sssd и все его зависимости.
В Центре управления системой перейдите в раздел Пользователи → Аутентификация. Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
Ввод в домен в командной строке
# system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word' [--windows2003] [--createcomputer="ou=COMPUTEROU"] Joined 'HOST-15' to dns domain 'school.alt'
Настройка SSSD
См. статью SSSD/AD, Настройки SSSD в Alterator
Проверка работы
# getent passwd ivan ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash # net ads info LDAP server: 192.168.1.1 LDAP server name: c228.school.alt Realm: SCHOOL.ALT Bind Path: dc=SCHOOL,dc=ALT LDAP port: 389 Server time: Ср, 22 апр 2015 16:22:47 MSK KDC server: 192.168.1.1 Server time offset: -1 # net ads testjoin Join is OK
Примечание: Вы не увидите пользователей из AD с помощью команды # getent passwd
на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку на серверы. Поэтому для проверки необходимо указать точное имя пользователя # getent passwd имя_пользователя
. Список пользователей можно посмотреть на сервере командой # samba-tool user list
Примечания
- Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен
- При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon —
# chkconfig avahi-daemon off; reboot
(доменная зона «local.» используется в технологии zeroconf). - Следите за синхронизацией времени на клиенте и сервере.
- Для предотвращения кэширования имён пользователя отключите службу nscd.
- В новых версиях Samba до запуска службы winbind должна запускаться служба smb.
- Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
rm -f /etc/krb5.conf cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf
- Если у вас домен Windows 2003 (не R2), то в директивы default_tgs_enctypes, default_tkt_enctypes и preferred_enctypes файла /etc/krb5.conf добавьте ещё DES3-CBC-SHA1.
- Для возможности входа в ОС под доменным пользователем при его недоступности можно включить опцию кэширования учетных данных в конфиге SSSD (подробнее тут, опция cache_credentials)
Настройка окна входа
Настройка LightDM
В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults]:
greeter-hide-users=true
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите:
show-language-selector=false
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
show-indicators=~a11y;~power
Полный перечень доступных кнопок:
show-indicators=~a11y;~power;~session;~language
Примечание: В lightdm-gtk-greeter, начиная с версии 2.0.7-alt2, можно настроить автоматическое заполнение поля «Имя пользователя» именем последнего пользователя входившего в систему. Для этого в файле /etc/lightdm/lightdm-gtk-greeter.conf (группа [greeter]) необходимо указать:
Отображение глобальных групп на локальные
Примечание: Первые два пункта данного раздела выполняются автоматически, если АРМ вводится в домен с помощью task-auth-ad-sssd.
Установка модуля ролей
apt-get install libnss-role
Настройка ролей и привилегий
Добавляем роль локальных администраторов:
# groupadd -r localadmins
Примечание: Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA.
Создаём привилегию на право удалённого доступа (по протоколу ssh):
# groupadd -r remote
Включаем удалённый доступ только для группы remote:
# control sshd-allow-groups enabled # sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config
Настраиваем список привилегий для пользователей (для роли users):
# roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse
Настраиваем список привилегий для администраторов (для роли admins):
# roleadd localadmins wheel remote vboxusers
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
# roleadd 'Domain Users' users
или
# roleadd 'Пользователи домена' users
Далее
# roleadd 'Domain Admins' localadmins
или
# roleadd 'Администраторы домена' localadmins
Просматриваем список назначенных ролей и привилегий:
# rolelst # id ivan
Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене.
Дополнительные роли
Соответственно, если надо выдать права администраторов АРМ пользователям, которые не являются Domain Admins,
то нужно завести новую группу в AD (например, PC Admins), добавить туда необходимых пользователей.
Затем на АРМ добавить роль для данной группы:
# roleadd 'PC Admins' localadmins # rolelst users: cdwriter cdrom audio video proc radio camera floppy xgrp scanner uucp vboxusers fuse tsusers localadmins: wheel domain users: users domain admins: localadmins pc admins: localadmins
После этого (и после разрешения sudo для группы wheel) под пользователем входящим в группу PC Admins
можно запускать команду повышения прав sudo.
user@alt8 ~ $ su - petrov Password: petrov@alt8 ~ $ id uid=445010929(petrov) gid=445000513(domain users) группы=445000513(domain users),10(wheel),14(uucp),19(proc), 22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),100(users),458(tsusers), 459(localadmins),466(fuse),468(video), 480(camera),492(vboxusers),498(xgrp),499(scanner),445010930(pc admins) petrov@alt8 ~ $ sudo apt-get update Пароль: Получено: 1 http://ftp.altlinux.org p8/branch/x86_64 release [880B] Получено: 2 http://ftp.altlinux.org p8/branch/x86_64-i586 release [537B] Получено: 3 http://ftp.altlinux.org p8/branch/noarch release [673B] Получено 2090B за 0s (36,9kB/s). Найдено http://ftp.altlinux.org p8/branch/x86_64/classic pkglist Найдено http://ftp.altlinux.org p8/branch/x86_64/classic release Найдено http://ftp.altlinux.org p8/branch/x86_64-i586/classic pkglist Найдено http://ftp.altlinux.org p8/branch/x86_64-i586/classic release Найдено http://ftp.altlinux.org p8/branch/noarch/classic pkglist Найдено http://ftp.altlinux.org p8/branch/noarch/classic release Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено
Подключение файловых ресурсов
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Через gio
Примечание: Способ актуален для дистрибутивов, использующих gio (ранее — gvfs) (например, Кентавр, Simply Linux, Basealt Workstation, СПТ).
Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.
1. Устанавливаем необходимые пакеты (с правами root):
apt-get install fuse-gvfs gvfs-backend-smb libgio
2. Включаем пользователя в группу fuse (с правами root):
gpasswd -a <пользователь> fuse
Внимание! Начиная с p9 членства в группе fuse недостаточно, требуется разрешить для всех доступ к fuse под root:
control fusermount public
3. Входим доменным пользователем.
4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс смонтирован по пути /var/run/<uid_пользователя>/gvfs или /var/run/user/<uid_пользователя>/gvfs/smb-share:server=сервер,share=ресурс
Другой вариант (полезно для скриптов в автозапуске):
gio mount smb://server/sysvol/
Примечание: Если необходимо открывать что-то с ресурса в WINE, в winecfg добавьте диск с путём /var/run/<uid_пользователя>/gvfs.
Заданный файловый ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount:
apt-get install pam_mount
Если осуществляется подключение файловых ресурсов по протоколу CIFS (SMB), то установите cifs-utils:
apt-get install cifs-utils
Внимание! Для того, чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, установите пакет systemd-settings-enable-kill-user-processes и перезагрузите систему:
apt-get install systemd-settings-enable-kill-user-processes
2. Прописываем pam_mount в схему аутентификации по умолчанию. В конец файла (/etc/pam.d/system-auth) добавьте строки
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet session optional pam_mount.so disable_interactive
Параметр disable_interactive нужен для того, чтобы pam_mount не спрашивал пароль. Первая строка предназначена для того, чтобы не монтировать дважды при запуске systemd —user. Подробнее: https://wiki.archlinux.org/title/pam_mount#Login_manager_configuration
Пример файла /etc/pam.d/system-auth при аутентификации доменного пользователя под SSSD:
#%PAM-1.0 auth [success=4 perm_denied=ignore default=die] pam_localuser.so auth [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet auth [default=1] pam_permit.so auth substack system-auth-sss-only auth [default=1] pam_permit.so auth substack system-auth-local-only auth substack system-auth-common account [success=4 perm_denied=ignore default=die] pam_localuser.so account [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet account [default=1] pam_permit.so account substack system-auth-sss-only account [default=1] pam_permit.so account substack system-auth-local-only account substack system-auth-common password [success=4 perm_denied=ignore default=die] pam_localuser.so password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet password [default=1] pam_permit.so password substack system-auth-sss-only password [default=1] pam_permit.so password substack system-auth-local-only password substack system-auth-common session [success=4 perm_denied=ignore default=die] pam_localuser.so session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet session [default=1] pam_permit.so session substack system-auth-sss-only session [default=1] pam_permit.so session substack system-auth-local-only session substack system-auth-common session [success=1 default=ignore] pam_succeed_if.so service = systemd-user session optional pam_mount.so disable_interactive
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml:
<volume uid="10000-2000200000" fstype="cifs" server="c253.test.alt" path="sysvol" mountpoint="~/share" options="sec=krb5i,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
где
- uid=»10000-2000200000″ — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
- server=»c253.test.alt» — имя сервера с ресурсом;
- path=»sysvol» — имя файлового ресурса;
- mountpoint=»~/share» — путь монтирования в домашней папке пользователя.
Опционально можно добавить:
- sgrp=»group_name» — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Внимание! Обязательно указывайте настоящее имя сервера в параметре server, а не имя домена
Параметр sec=krb5i более безопасный, но требует больше вычислительных ресурсов. Вместо него можно указать sec=krb5.
Пример файла /etc/security/pam_mount.conf.xml:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd"> <!-- See pam_mount.conf(5) for a description. --> <pam_mount> <!-- debug should come before everything else, since this file is still processed in a single pass from top-to-bottom --> <debug enable="0" /> <!-- Volume definitions --> <volume uid="10000-2000200000" fstype="cifs" server="c253.test.alt" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /> <!-- pam_mount parameters: General tunables --> <!-- <luserconf name=".pam_mount.conf.xml" /> --> <!-- Note that commenting out mntoptions will give you the defaults. You will need to explicitly initialize it with the empty string to reset the defaults to nothing. --> <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" /> <!-- <mntoptions deny="suid,dev" /> <mntoptions allow="*" /> <mntoptions deny="*" /> --> <mntoptions require="nosuid,nodev" /> <!-- requires ofl from hxtools to be present --> <logout wait="0" hup="no" term="no" kill="no" /> <!-- pam_mount parameters: Volume-related --> <mkmountpoint enable="1" remove="true" /> </pam_mount>
Для отладки подключения замените в файле /etc/security/pam_mount.conf.xml
<debug enable="0" />
на
<debug enable="1" />
При этом отладочные сообщения будут показываться в журнале Journald.
Вы можете сменить механизм монтирования отдав его на откуп systemd. Для этого в pam_mount.xml.conf можно задатьпереопределить опции cifsmount, umount
<cifsmount>systemd-mount -A -G -q -t cifs %(COMBOPATH) %(MNTPT) -o uid=%(USERUID),gid=%(USERGID),username=%(USER),%(OPTIONS)</cifsmount> <umount>systemd-mount -u %(MNTPT)</umount>
Через autofs
В этом случае заданный ресурс подключается автоматически при каждом обращении пользователя. И отключается после определенного времени бездействия (определяется конфигуацией Autofs).
Основная статья AutoFS
https://www.altlinux.org/Autofs
Для дистрибутивов c KDE
1. Устанавливаем kde5-autofs-shares:
apt-get install kde5-autofs-shares
2. Следуем инструкции по подключению в разделе Альт_Рабочая_станция_К_8_советы.
Групповые политики
Групповые политики (GPO) на Linux применяются только контроль входа через SSSD и средства Centrify.
SSSD
SSSD имеет внутреннюю поддержку следующих групповых политик:
Политика |
---|
Allow log on locally |
Allow log on through Remote Desktop Services |
Access this computer from the network |
Allow log on as a batch job |
Allow log on as a service |
Примечание: Планируется поддержка других групповых политик средствами подключаемых модулей
- ↑ Cм получение прав root:
Примечание: Получение прав root см. root
Ссылки по групповым политикам
- https://fedoraproject.org/wiki/Changes/SssdGpoBasedAccessControl
- http://wiki.eri.ucsb.edu/stadm/AD_Samba4
- http://centrifying.blogspot.ru/2014/01/basics-using-group-policy-on-unixlinux.html
- https://www.youtube.com/watch?v=2cJWnUZ8qLI
Ссылки
- https://wiki.archlinux.org/index.php/Active_Directory_Integration
- Ввод в домен на базе Windows 2003
- https://fedorahosted.org/sssd/wiki/Configuring_sssd_with_ad_server
- https://wiki.samba.org/index.php/Setup_Samba_as_an_AD_Domain_Member
Синхронизация времени в установленных операционных системах Linux
- На машине Linux войдите как root.
- Запустите ntpdate -u команда для обновления машинных часов. Например, ntpdate -u ntp-time. …
- Откройте файл / etc / ntp. conf и добавьте NTP-серверы, используемые в вашей среде. …
- Запустите команду service ntpd start, чтобы запустить службу NTP и внести изменения в конфигурацию.
Как мне исправить Windows и Linux, показывающие разное время?
По умолчанию Windows предполагает, что время хранится в местном времени, в то время как Linux предполагает, что время хранится в формате UTC, и применяет смещение. Это приводит к тому, что одна из ваших операционных систем показывает неправильное время в ситуации двойной загрузки. Чтобы исправить это, у вас есть два варианта: заставить Linux использовать местное время или заставить Windows использовать время UTC.
Как Windows Server синхронизирует время?
Метод 2:
- а. Нажмите на часы и выберите «Изменить настройки даты и времени».
- б. Щелкните вкладку «Время в Интернете».
- c. Убедитесь, что он установлен на «синхронизировать время с time.windows.com»
- d. Если этот параметр выбран, нажмите «Изменить настройки», чтобы установить флажок «Синхронизировать с сервером времени в Интернете».
- е. Щелкните ОК.
Как синхронизирует время NTP-сервер?
Альтернативный метод синхронизации часов вашего компьютера с сервером времени IU
- Перейдите к командной строке с повышенными привилегиями. …
- В командной строке введите: w32TM / config / syncfromflags: manual /manualpeerlist:ntp.indiana.edu.
- Введите: w32tm / config / update.
- Введите: w32tm / resync.
- В командной строке введите exit, чтобы вернуться в Windows.
12 колода 2019 г.
Как узнать, работает ли Windows NTP?
Чтобы проверить список серверов NTP:
- Щелкните по кнопке Windows.
- В поле «Искать программы и файлы» введите cmd и нажмите Enter.
- При необходимости выберите cmd из списка результатов поиска.
- В окне командной строки введите w32tm / query / peers.
- Убедитесь, что запись отображается для каждого из серверов, перечисленных выше.
Как узнать, установлен ли NTP в Linux?
Чтобы убедиться, что ваша конфигурация NTP работает правильно, выполните следующее:
- Используйте команду ntpstat, чтобы просмотреть состояние службы NTP в экземпляре. [ec2-user ~] $ ntpstat. …
- (Необязательно) Вы можете использовать команду ntpq -p, чтобы просмотреть список одноранговых узлов, известных серверу NTP, и сводку их состояния.
Как исправить время в Linux?
Установите время, дату и часовой пояс в Linux из командной строки или Gnome | Используйте ntp
- Установить дату в командной строке date +% Y% m% d -s «20120418»
- Установите время в командной строке date +% T -s «11:14:00»
- Установите время и дату в командной строке date -s «19 APR 2012 11:14:00»
- Дата проверки Linux из даты командной строки. …
- Установите аппаратные часы.
19 апр. 2012 г.
Как сделать Windows Time UTC?
2. Сделайте так, чтобы Microsoft Windows использовала UTC:
- перейдите в меню «Пуск», найдите и запустите cmd от имени администратора.
- Когда откроется командная консоль, вставьте команду ниже, чтобы создать значение DWORD в реестр: Reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 1.
Как изменить время загрузки при двойной загрузке?
6 ответы
- Нажмите Alt + F2.
- Введите команду gksu gedit / etc / default / grub.
- измените значение GRUB_TIMEOUT на 15 или 20 по мере необходимости. (значение в секундах) или Установка тайм-аута на -1 заставит GRUB ждать бесконечно, пока вы вручную не выберете запись и не нажмете клавишу ввода. Это должно выглядеть так. GRUB_TIMEOUT = 10.
- сохрани это. Закройте gedit.
Как исправить время синхронизации Windows?
Как исправить ошибку синхронизации time.windows.com?
- Проверьте, запущена ли служба времени Windows.
- Используйте другой сервер.
- Перезапустите службу времени Windows.
- Используйте командную строку.
- Отключите сторонний брандмауэр.
- Измените интервал обновления по умолчанию.
- Добавьте больше серверов в реестр.
- Измените значения реестра.
Как мне повторно синхронизировать время моего контроллера домена?
Выполните на клиенте следующие действия:
- Убедитесь, что для службы времени Windows установлено значение «Автоматически» и что она работает.
- Чтобы синхронизировать время с контроллером домена, выполните следующие команды в административном командном окне: w32tm / resync. чистое время DC / set.
23 февраля. 2021 г.
Как мне синхронизировать часы моего компьютера?
Как изменить сервер времени в Windows 10
- Откройте панель управления.
- Щелкните «Часы», «Язык» и «Регион».
- Щелкните Дата и время.
- Щелкните вкладку Интернет-время.
- Нажмите кнопку «Изменить настройки».
- Убедитесь, что выбран параметр «Синхронизировать с сервером времени в Интернете».
- Используйте раскрывающееся меню, чтобы выбрать другой сервер.
25 юл. 2017 г.
Как узнать, синхронизируются ли мои часы?
Чтобы проверить, запущен ли w32time, сделайте следующее: перейдите в Панель управления-> Администрирование-> Службы. Прокрутите до функции «Время Windows» и проверьте ее «Статус», которая должна быть «запущена». Также проверьте «Тип запуска» и, если возможно, установите для него «Автоматический» или «Ручной».
Может ли Windows 10 быть NTP-сервером?
Чтобы настроить NTP, вам все равно нужно использовать классический апплет панели управления. Чтобы настроить сервер NTP в Windows 10, сделайте следующее. Откройте Панель управления.