Работа с основными параметрами среды#
Настройка даты и времени#
Точный хронометраж обеспечивается NTP-протоколом с помощью демона, работающим в пользовательском пространстве. Демон пользовательского пространства обновляет системные часы, работающие в ядре. Системные часы могут показывать время, используя различные источники синхронизации.
SberLinux OS использует демон chronyd синхронизировать время с серверами NTP. Подробнее про chronyd смотрите в разделе «Утилита chronyd».
Отображение текущей даты и времени#
Чтобы отобразить текущую дату и время, выполните любой следующих шагов:
Используйте команду
date:
date
Пример вывода команды:
Mon Mar 30 16:02:59 CEST 2020
Чтобы увидеть более подробную информацию, используйте команду
timedatectl:
timedatectl
Пример вывода команды:
Local time: Mon 2024-03-30 16:04:42 CEST
Universal time: Mon 2024-03-30 14:04:42 UTC
RTC time: Mon 2024-03-30 14:04:41
Time zone: Europe/Moscow (CEST, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Смена часового пояса**#
Для смены часового пояса используйте команду:
timedatectl set-timezone "Europe/Moscow"
В приведенном примере часовой пояс меняется на Europe/Moscow.
Смена времени#
Для изменения времени используйте команду:
timedatectl set-time 15:58:30
Настройка локали системы#
Общесистемные настройки локали хранятся в файле /etc/locale.conf, который считывается при ранней загрузке демоном systemd. Каждая служба или пользователь наследует настройки локали, указанные в /etc/locale.conf, если только отдельные программы или отдельные пользователи не переопределяют их.
В этом разделе описывается, как управлять языковым стандартом системы:
Чтобы вывести список доступных языковых настроек системы, используйте команду:
localectl list-locales
Пример вывода команды:
C.utf8
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
...
Чтобы отобразить текущий статус настроек системных локалей, используйте команду:
localectl status
Чтобы установить или изменить настройки локали системы по умолчанию, используйте команду
localectl set-localeот имени пользователя c административными полномочиями:
localectl set-locale LANG=en_US
Настройка раскладки клавиатуры#
Настройки раскладки клавиатуры управляют раскладкой, используемой в текстовой консоли:
Чтобы получить список доступных раскладок, используйте команду:
localectl list-keymaps
Пример вывода команды:
ANSI-dvorak
al
al-plisi
amiga-de
amiga-us
...
Чтобы отобразить текущий статус настроек раскладки клавиатуры, введите:
localectl status
Пример вывода команды:
...
VC Keymap: us
...
Для установки или изменения системной раскладки по умолчанию используйте команду:
localectl set-keymap us
Настройка и управление сетевым доступом#
В этом разделе описываются различные варианты добавления соединений Ethernet.
Настройка статического соединения Ethernet с помощью утилиты nmcli#
Ниже приведен пример процедуры, которая описывает добавление соединения Ethernet с помощью утилиты nmcli:
В приведенном примере используются следующие значения:
Статический адрес IPv4 —
<IPv4_ADDRESS>с /24 маской подсетиСтатический адрес IPv6 —
<IPv6_ADDRESS>с /64 маской подсетиШлюз IPv4 по умолчанию —
<IPv4_GATEWAY>Шлюз IPv6 по умолчанию —
<IPv6_GATEWAY>DNS-сервер IPv4 —
<IPv4_DNS>DNS-сервер IPv6 —
<IPv6_DNS>Домен поиска DNS —
example.ru
Сценарий#
Добавьте новый профиль подключения NetworkManager для подключения Ethernet:
nmcli connection **Add** con-name Example-Connection ifname enp7s0 type ethernetДальнейшие шаги изменяют созданный профиль подключения
Example-Connection.Установите IPv4-адрес:
nmcli connection modify Example-Connection ipv4.addresses <IPv4_ADDRESS>/24Установите IPv6-адрес:
nmcli connection modify Example-Connection ipv6.addresses <IPv6_ADDRESS>/64Установите способ подключения
manual:Для IPv4:
nmcli connection modify Example-Connection ipv4.method manualДля IPv6:
nmcli connection modify Example-Connection ipv6.method manual
Установите шлюзы по умолчанию:
Для IPv4:
nmcli connection modify Example-Connection ipv4.gateway <IPv4_GATEWAY>Для IPv6:
nmcli connection modify Example-Connection ipv6.gateway <IPv6_GATEWAY>
Задайте адреса DNS-серверов:
Для IPv4:
nmcli connection modify Example-Connection ipv4.dns "<IPv4_DNS>"Для IPv6:
nmcli connection modify Example-Connection ipv6.dns "<IPv6_DNS>"
Чтобы задать несколько DNS-серверов, укажите их через пробел и заключите в кавычки.
Установите домен поиска DNS:
Для IPv4:
nmcli connection modify Example-Connection ipv4.dns-search example.ruДля IPv6:
nmcli connection modify Example-Connection ipv6.dns-search example.ru
Активируйте профиль подключения:
nmcli connection up Example-ConnectionПример вывода команды:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
Проверка#
Проверьте отображение состояния устройств и подключений:
nmcli device statusПример вывода команды:
DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-ConnectionОтобразите все настройки профиля подключения:
nmcli connection show Example-ConnectionПример вывода команды:
connection.id: Example-Connection connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: enp7s0 ...Используйте команду
ping, чтобы убедиться, что этот хост может отправлять пакеты другим хостам в той же подсети и в удаленной подсети.Если выполнение команды завершилось с ошибкой, проверьте параметры IP и подсети.
Используйте команду
host, чтобы убедиться, что разрешение имен работает:host client.example.ru
Если команда возвращает ошибку, например, connection timed out или no servers could be reached, проверьте настройки DNS.
Действия по устранению неполадок#
Если соединение не установлено, воспользуйтесь следующими рекомендациями:
Убедитесь, что сетевой кабель подключен к хосту и коммутатору.
Проверьте, существует ли сбой связи только на этом хосте или также на других хостах, подключенных к тому же коммутатору, к которому подключен сервер.
Убедитесь, что сетевой кабель и сетевой интерфейс работают должным образом. Выполните действия по диагностике оборудования и замените неисправные кабели и сетевые карты.
Настройка динамического соединения Ethernet с помощью nmtui#
Данная утилита представляет собой текстовый пользовательский интерфейс и может использоваться для настройки и конфигурирования. Используйте nmtui для настройки соединения Ethernet с динамическим IP-адресом на хосте.
Сценарий#
Если имя сетевого устройства, которое хотите использовать в соединении, неизвестно, отобразите доступные устройства:
nmcli device statusПример вывода команды:
DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- ...Введите команду
nmtui:nmtuiВыберите Edit a connection и нажмите Enter.
Нажмите кнопку Add.
Выберите Ethernet из списка типов сети и нажмите Enter.
При необходимости введите имя создаваемого профиля NetworkManager.
Введите имя сетевого устройства в поле Device.
Нажмите кнопку OK, чтобы создать и автоматически активировать новое соединение.
Нажмите Back кнопку, чтобы вернуться в главное меню.
Выберите Quit и нажмите Enter, чтобы закрыть утилиту
nmtui.
Проверка#
Отобразите и проверьте состояния устройств и подключений:
nmcli device statusПример вывода команды:
DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-ConnectionОтобразите и проверьте все настройки профиля подключения:
nmcli connection show Example-ConnectionПример вывода команды:
connection.id: Example-Connection connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: enp7s0 ...
Настройка статического соединения Ethernet с помощью nmtui#
Утилита nmtui предоставляет текстовый пользовательский интерфейс. Используйте nmtui для настройки соединения Ethernet со статическим IP-адресом на хосте без графического интерфейса.
Сценарий#
Если имя сетевого устройства, которое хотите использовать в соединении, неизвестно, отобразите доступные устройства:
nmcli device statusПример вывода команды:
DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- ...Запустите
nmtui:nmtuiВыберите Edit a connection и нажмите Enter.
Нажмите Add кнопку.
Выберите
Ethernetиз списка типов сети и нажмите Enter.Необязательно: введите имя создаваемого профиля NetworkManager.
Введите имя сетевого устройства в поле Device.
Настройте параметры адресов IPv4 и IPv6 в областях IPv4 configuration и IPv6 configuration:
Нажмите кнопку Automatic и выберите
Manualиз отображаемого списка.Нажмите кнопку Show рядом с протоколом, чтобы отобразить дополнительные поля.
Нажмите Add кнопку рядом с Addresses и введите IP-адрес и маску подсети в формате бесклассовой междоменной маршрутизации (CIDR). Если маска подсети не указана, NetworkManager установит маску подсети
/32для адресов IPv4 и/64для адресов IPv6.Введите адрес шлюза по умолчанию.
Нажмите Add кнопку рядом с DNS servers и введите адрес DNS-сервера.
Нажмите Add кнопку рядом с Search domains и введите домен поиска DNS.
Нажмите OK кнопку, чтобы создать и автоматически активировать новое соединение.
Нажмите Back кнопку, чтобы вернуться в главное меню.
Выберите Quit и нажмите Enter, чтобы закрыть
nmtui.
Проверка#
Отобразятся состояния устройств и подключений:
nmcli device statusПример вывода команды:
DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-ConnectionОтобразите все настройки профиля подключения:
nmcli connection show Example-ConnectionПример вывода команды:
connection.id: Example-Connection connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: enp7s0 ...
Запуск служб systemd во время загрузки#
Для управления службами используется утилита systemctl для управления демоном systemd и диспетчером служб.
Включение или отключение служб#
Пользователь с административными полномочиями может включить или отключить запуск конкретной службы при загрузке ОС. Любые изменения будут применены после перезапуска системы.
Если для какой-либо службы не настроено автоматическое включение при загрузке ОС, будет необходимо запустить ее вручную.
Чтобы службу было невозможно запустить вручную, можно использовать маскировку. Маскировка — это способ отключения службы, делающий ее не доступной для использования, пока не будет задействована команда unmask.
Предварительные условия#
Права пользователя с административными полномочиями.
Служба, которую хотите включить, не должна быть замаскирована. Если есть замаскированный сервис, необходимо сначала использовать следующую команду:
systemctl unmask service_name
Сценарий#
Включите запуск службы при загрузке:
systemctl enable service_nameЗамените
service_nameна службу, которую хотите включить.Также можно включить и запустить службу с помощью одной команды:
systemctl enable --now service_nameОтключите запуск службы при загрузке:
systemctl disable service_nameЗамените
service_nameна службу, которую хотите отключить.Замаскируйте службу, чтобы сделать службу непригодной для использования навсегда:
systemctl mask service_name
Настройка безопасности системы#
Компьютерная безопасность — это защита компьютерных систем и их аппаратного обеспечения, программного обеспечения, информации и услуг от кражи, повреждения, нарушения работы и неправильного направления. Обеспечение компьютерной безопасности является важной задачей, особенно на предприятиях, которые обрабатывают конфиденциальные данные и осуществляют бизнес-транзакции.
В этом разделе рассматриваются только основные функции безопасности, которые можно настроить после установки операционной системы.
Включение службы межсетевого экрана firewalld#
Межсетевой экран — это система сетевой безопасности, которая отслеживает и контролирует входящий и исходящий сетевой трафик в соответствии с настроенными правилами безопасности. Межсетевой экран обычно устанавливает барьер между надежной защищенной внутренней сетью и другой внешней сетью.
Утилита firewalld, обеспечивающая межсетевой экран в SberLinux OS, автоматически включается во время установки.
Сценарий#
Чтобы включить службу firewalld, выполните следующий сценарий.
Отобразите текущее состояние
firewalld:systemctl status firewalldПример вывода команды:
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) ...Если
firewalldне включена и не запущена, запустите утититу и включите ее автоматический запуск после перезагрузки системы:systemctl enable --now firewalld
Проверка#
Убедитесь, что утилита
firewalldзапущена и включена:systemctl status firewalldПример вывода команды:
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) ...
Настройка правил для межсетевого экрана firewalld#
Правила для межсетевого экрана firewalld настраиваются с помощью утилиты firewall-cmd. Подробнее об этой утилите можно прочесть в разделе «Утилита firewall-cmd».
Чтобы правила применить, используйте команду:
firewall-cmd --reloadЧтобы добавить порты, откройте порт
80:firewall-cmd --permanent --add-port=80/tcpГде ключ
--permanentдобавляет постоянное правило, которое будет действовать после перезагрузки.Чтобы добавить правило для определенной зоны:
Пропишите:
firewall-cmd --permanent --zone=external --add-port=80/tcpДобавьте диапазон портов:
firewall-cmd --permanent --add-port=6500-6700/udpДобавьте несколько правил одной командой:
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
Добавление сервиса#
Использование служб вместо портов может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.
Посмотрите список доступных служб:
firewall-cmd --get-servicesРазрешите порт, например, для сервиса
ntp:firewall-cmd --permanent --add-service=ntpСоздайте собственную службу:
firewall-cmd --permanent --new-service=name-serviceГде
name-service— это произвольное имя создаваемой службы.Добавьте порт, например
TCP 2200к службе:firewall-cmd --permanent --service=name-service --add-port=2200/tcpЗадайте описание для удобства, используя следующие команды:
firewall-cmd --permanent --service=name-service --set-short="Service With This Name"Затем:
firewall-cmd --permanent --service=name-service --set-description="Long Description For Service With This Name"Информацию о созданном сервисе можно получить командой:
firewall-cmd --info-service=name-serviceТеперь созданную службу можно использовать для создания правил, например:
firewall-cmd --permanent --add-service=name-service
Правило Rich-Rule#
Правило Rich-Rule позволяет создавать правила с условиями. Например:
Разрешите службу
httpс условием, что запросы будут с определенных IP-адресов:firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="<IP-ADDRESS>/24" service name="http" accept'Или разрешите службу для конкретного порта:
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="<IP-ADDRESS/24" port port="5038" protocol="tcp" accept'Чтобы заблокировать подсеть, воспользуйтесь командой:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='<IP-ADDRESS/24' reject"Список правил с условиями отобразите командой:
firewall-cmd --list-rich-rules
Удаление правил#
Аналогично созданию, но вместо add введите remove, например: --remove-port (удалить порт) или --remove-service (удалить службу).
Удалите правило для открытия 80-го порта:
firewall-cmd --permanent --remove-port=80/tcp
Управление зонами#
Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если необходимо для разных сетевых адаптеров создать разные по строгости правила.
Просмотрите список всех имеющихся зон:
firewall-cmd --list-all-zonesПросмотрите список используемых зон:
firewall-cmd --get-active-zones
Информация о конкретной зоне#
Введите:
firewall-cmd --list-all --zone=publicСоздайте правило для зоны public:
firewall-cmd --permanent --zone=public --add-port=80/tcpДобавьте сетевой интерфейс в зону, используя следующие команды:
firewall-cmd --permanent --zone=public --remove-interface=ens34Затем:
firewall-cmd --permanent --zone=internal --add-interface=ens34Перед этим необходимо удалить адаптер из текущей зоны.
Задайте действие по умолчанию для зоны:
firewall-cmd --permanent --zone=public --set-target=DROPСоздайте новую зону, используя следующие команды:
firewall-cmd --permanent --new-zone=custom_zoneЗатем:
firewall-cmd --reloadВнимание
Чтобы система увидела новую зону
custom_zone, командаreloadобязательна.
Пример настройки NAT (шлюза)#
Включите
masquerade:firewall-cmd --permanent --zone=dmz --add-masquerade
Примечание
Без указания зон, masquerade будет включен для public и external.
Правило systemctl restart firewalld#
Важно
Чтобы сервер заработал в качестве шлюза, также необходимо настроить ядро.
Для просмотра созданных данным способом правил используйте команду:
firewall-cmd --direct --get-all-rules
Проброс портов#
Проброс настраивается со следующим синтаксисом:
firewall-cmd --add-forward-port=port=<порт прослушивания>:proto=tcp|udp|sctp|dccp:toport=<порт назначения>:toaddr=<куда перенаправить>
Например:
firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=000.000.0.15
В примере выше осуществляются запросы на порту 25 и переводятся на узел 000.000.0.15 и порт 8025.
Запрещение или разрешение трафика между интерфейсами#
Например, существуют два внутренних сетевых интерфейса ens35 и ens36, поэтому необходимо контролировать трафик между ними.
Чтобы запретить трафик между интерфейсами:
Правило применяется в случаях, когда на сервере включен
FORWARD, но необходимо блокировать трафик между определенными сегментами сети.Введите следующую команду:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROPЗатем:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROPЧтобы разрешить трафик между интерфейсами:
Правило применяется в случаях, когда интерфейсы находятся в зонах, где по умолчанию трафик блокируется.
Введите следующую команду:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPTЗатем:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPTЧтобы разрешить трафик в одном направлении:
Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводите одну команду:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT
Возможные проблемы при работе с firewalld#
Ошибка
command not found- команда не найдена.Возможные причины: не установлен пакет или не запущена служба.
Выполните установку пакета
firewalld:dnf install firewalld firewall-configЗапустите службу:
systemctl start firewalld
Не применяются правила.
Причина: не введена команда перезапуска правил.
Перечитайте правила:
firewall-cmd --reloadПерезапустите систему со сбросом подключений:
firewall-cmd --complete-reloadИли перезапустите сетевые службы:
systemctl restart networkПерезагрузите машину:
shutdown -r now
Работа с SELinux#
Для защиты базы данных пользователей используется защита SELinux.
SELinux работает в одном из трех режимов:
Enforcing — строгое соблюдаются политики безопасности.
Permissive — допускается нарушение ограничений, в журнале делается соответствующая пометка.
Disabled — политики безопасности не действуют.
Узнать в каком режиме находится SELinux можно с помощью следующей команды:
getenforce
Пример вывода команды:
Permissive
Чтобы перейти в режим строгого соблюдения политики безопасности, используйте параметр enforcing или 1. Для включения режима, допускающего нарушение ограничений, используйте параметр permissive или 0.
setenforce enforcing
Или:
setenforce 1
Также изменить режим можно, отредактировав файл /etc/selinux/config. Пример вывода содержимого файла с помощью команды cat:
# Данный файл управляет режимом SELinux
# SELINUX= может принимать одно из следующих трех значений:
# enforcing - соблюдаются строгие политики безопасности SELinux.
# permissive - SELinux выводит предупреждения при нарушении ограничений.
# disabled - политики безопасности SELinux не действуют.
SELINUX=enforcing
# SELINUXTYPE= может принимать одно из следующих трех значений:
# targeted - целевые процессы защищены.
# minimum - изменение целевой политики. Защищены только выбранные процессы.
# mls - многоуровневая защита безопасности.
SELINUXTYPE=targeted
Разница с setenfoce в том, что при загрузке операционной системы режим SELinux будет выставлен в соответствии со значением параметра SELINUX конфигурационного файла. Помимо того, изменения enforcing <=> disabled вступают в силу только через правку файла /etc/selinux/config и после перезагрузки.
Изменение конфигурации доступов#
Используйте команду semodule, чтобы загружать модули SELinux, добавлять и удалять их.
Команда semanage login -a -s связывает пользователя SELinux с пользователем операционной системы:
semanage login -a -s user_u karol
Следующая команды выводит список пользователей:
semanage login -l
Пример вывода команды:
Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
Команда semanage user используется для управления отображений между пользователями и ролями SELinux.
Параметр команды -l выводит список соответствия пользователей и ролей:
semanage user -l
Пример вывода команды:
Labeling MLS/ MLS/
SELinux User Prefix MCS Level MCS Range SELinux Roles
guest_u user s0 s0 guest_r
staff_u staff s0 s0-s0:c0.c1023 staff_r sysadm_r
...
user_u user s0 s0 user_r
xguest_u user s0 s0 xguest_r
Параметры команды:
-a— добавление пользовательской записи соответствия ролей;-d— удаление пользовательской записи соответствия ролей;-R— отображение списка ролей, прикрепленных к пользователю.
Использование пакета Chrony для настройки NTP#
Точное хронометрирование важно по ряду причин. Например, в сети требуются точные временные метки в пакетах и журналах. В системах Linux NTP протокол реализуется демоном, работающим в пользовательском пространстве.
Демон пользовательского пространства обновляет системные часы, запущенные в ядре. Системные часы могут отслеживать время с помощью различных источников синхронизации. Обычно используется счетчик отметок времени (TSC). TSC - это регистр процессора, который подсчитывает количество циклов с момента последнего сброса. Он работает очень быстро, имеет высокое разрешение и не имеет никаких перебоев.
NTP-протокол реализуется демоном chronyd, доступным в пакете chrony.
В следующих разделах описано, как использовать chrony suite для настройки NTP.
Использование chronyc для управления chronyd#
В этом разделе описывается, как управлять chronyd с помощью утилиты командной строки chronyc.
Чтобы внести изменения в локальный экземпляр
chronydиспользования утилиты командной строкиchronycв интерактивном режиме, введите следующую команду как пользователь с административными полномочиями:chronycУтилита
chronycдолжна выполняться так, как если бы пользователь с административными полномочиями использовал некоторые из ограниченных команд. Командная строкаchronycбудет отображаться следующим образом:chronyc>Чтобы перечислить все команды, введите
help.Альтернативно, утилита также может быть вызвана в неинтерактивном командном режиме, если вызывается вместе с командой следующим образом:
chronyc command
Важно
Изменения, внесенные с помощью chronyc, не являются постоянными, они будут потеряны после перезагрузки chronyd. Для постоянных изменений внесите изменения в /etc/chrony.conf.
Использование Chrony#
В следующих разделах описано, как установить, запустить и остановить chronyd, а также проверить, синхронизирован ли он. В разделах также описывается, как вручную настроить системные часы.
Управление chrony#
Следующая процедура описывает, как установить, запустить, остановить и проверить состояние chronyd.
Чтобы убедиться, что
chrony suiteустановлен, выполните следующую команду:dnf install chronyРасположение по умолчанию для демона
chrony-/usr/sbin/chronyd. Утилита командной строки будет установлена в/usr/bin/chronyc.Чтобы проверить состояние
chronyd, выполните следующую команду:systemctl status chronyd chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)< Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h agoДля запуска
chronydвыполните следующую команду:systemctl start chronydЧтобы обеспечить автоматический запуск
chronydпри запуске системы, выполните следующую команду:systemctl enable chronydЧтобы остановить
chronyd, выполните следующую команду:systemctl stop chronydЧтобы предотвратить автоматический запуск
chronydпри запуске системы, выполните следующую команду:systemctl disable chronyd
Проверка синхронизации chrony#
Следующая процедура описывает, как проверить, синхронизируется ли chrony при использовании команд tracking, sources и sourcestats.
Чтобы проверить
chrony tracking, выполните следующую команду:chronyc tracking Reference ID : CB00710F (foo.example.net) Stratum : 3 Ref time (UTC) : Fri Jan 27 09:49:17 2017 System time : 0.000006523 seconds slow of NTP time Last offset : -0.000006747 seconds RMS offset : 0.000035822 seconds Frequency : 3.225 ppm slow Residual freq : 0.000 ppm Skew : 0.129 ppm Root delay : 0.013639022 seconds Root dispersion : 0.001100737 seconds Update interval : 64.2 seconds Leap status : NormalКоманда отображает информацию о текущих источниках времени, которые доступны
chronyd.Чтобы проверить
chrony sources, выполните следующую команду:chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS0 0 4 377 11 -479ns[ -621ns] /- 134ns ^? a.b.c 2 6 377 23 -923us[ -924us] +/- 43ms ^ d.e.f 1 6 377 21 -2629us[-2619us] +/- 86msДополнительно, можно задать параметр
-v, который означает большую детализацию отчета (verbose). В этом случае дополнительные строки заголовка отображаются как напоминание о значениях столбцов.Команда
sourcestatsотображает информацию о процессе оценки скорости дрейфа и смещения для каждого из источников, которые в данный момент исследуютсяchronyd. Чтобы проверить исходную статистику, выполните следующую команду:chronyc sourcestats 210 Number of sources = 1 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev =============================================================================== abc.def.ghi 11 5 46m -0.001 0.045 1us 25usДополнительно, можно задать параметр
-v, который означает большую детализацию отчета (verbose). В этом случае дополнительные строки заголовка отображаются как напоминание о значениях столбцов.
Ручная настройка системных часов#
Следующая процедура описывает, как вручную настроить системные часы.
Чтобы немедленно перевести системные часы в иное значение, минуя любые текущие настройки, выполните следующую команду, как пользователь с административными полномочиями:
chronyc makestep
Если используется директива rtcfile, то часы реального времени не следует настраивать вручную.
Настройка chrony для системы в изолированной сети#
Для сети, которая не подключается к интернету, одна машина выбирается в качестве главного сервера времени. Остальные являются либо прямыми клиентами ведущего, либо клиентами клиентов. На главном сервере файл дрейфа должен быть установлен вручную со средней скоростью дрейфа системных часов. Если мастер будет перезагружен, он получит время от окружающих систем и вычислит среднее значение для установки своих системных часов. После этого он возобновляет применение корректировок на основе файла дрейфа. Файл дрейфа будет обновляться автоматически, когда используется команда settime.
Следующая процедура описывает, как настроить chrony для asystem в изолированной сети.
В системе, выбранной в качестве основной, используя текстовый редактор, запущенный с административными полномочиями, отредактируйте
/etc/chrony.confследующим образом:driftfile /var/lib/chrony/drift commandkey 1 keyfile /etc/chrony.keys initstepslew 10 client1 client3 client6 local stratum 8 manual allow nn.nn.nn.nnГде находится адрес сети или подсети
nn.nn.nn.nn, с которого клиентам разрешено подключаться.В системах, выбранных в качестве прямых клиентов ведущего, используя текстовый редактор, работающий с административными полномочиями, отредактируйте
/etc/chrony.confследующим образом:server master driftfile /var/lib/chrony/drift logdir /var/log/chrony log measurements statistics tracking keyfile /etc/chrony.keys commandkey 24 local stratum 10 initstepslew 20 master allow hh.hh.hh.hh
Где hh.hh.hh.hh - это адрес ведущего устройства, а master - имя хоста ведущего устройства. Клиенты с такой конфигурацией будут повторно синхронизировать мастер, если он перезапустится.
В клиентских системах, которые не должны быть прямыми клиентами ведущего, файл /etc/chrony.conf должен быть таким же, за исключением того, что директивы localand allow должны быть опущены.
В изолированной сети можно использовать директиву local, которая включает локальный ссылочный режим и позволяет chronyd работать в качестве NTP-сервера, синхронизированного с реальным временем, даже если он никогда не был синхронизирован или последнее обновление часов произошло давно.
Чтобы разрешить нескольким серверам в сети использовать одну и ту же локальную конфигурацию и синхронизироваться друг с другом, не вводя в заблуждение клиентов, опрашивающих более одного сервера, используйте опцию orphan директивы local, которая включает режим orphan mode. Каждый сервер должен быть настроен для опроса всех других серверов local. Это гарантирует, что локальная ссылка активна только на сервере с наименьшим идентификатором ссылки, а другие серверы синхронизированы с ним. Когда сервер выйдет из строя, его заменит другой.
Chrony с отметкой времени HW#
Аппаратная временная метка - это функция, поддерживаемая некоторыми контроллерами сетевых интерфейсов (NIC), которая обеспечивает точную временную метку входящих и исходящих пакетов. NTP временные метки обычно создаются ядром и chronyd с использованием системных часов. Однако, когда включена временная метка HW, сетевой адаптер использует свои собственные часы для генерации временных меток, когда пакеты входят или выходят из канального уровня или физического уровня. При использовании с NTP аппаратными временными метками можно значительно повысить точность синхронизации. Для достижения наилучшей точности, как NTP-серверы, так и NTP-лиенты должны использовать аппаратные временные метки. В идеальных условиях может быть возможна точность в несколько микросекунд.
Другим протоколом для синхронизации времени, использующим аппаратную временную метку, является PTP.
В отличие от NTP, PTP полагается на помощь в сетевых коммутаторах и маршрутизаторах. Если необходимо достичь наилучшей точности синхронизации, используйте PTP в сетях, где есть коммутаторы и маршрутизаторы с PTP-поддержкой, и отдавайте предпочтение NTP-сетям, в которых таких коммутаторов и маршрутизаторов нет.
Проверка поддержки аппаратной временной метки#
Чтобы проверить, что аппаратная временная метка с NTP поддерживается интерфейсом, используйте ethtool -T команду. Интерфейс может быть использован для аппаратных временных меток с NTP ethtool, если перечисляет SOF_TIMESTAMPING_TX_HARDWARESOF_TIMESTAMPING_TX_SOFTWARE и возможности, а также режим фильтрации HWTSTAMP_FILTER_ALL.
Включение аппаратной отметки времени#
Чтобы включить аппаратную временную метку, используйте директиву hwtimestamp в файле /etc/chrony.conf. Директива может либо указывать один интерфейс, либо использовать подстановочный знак для включения аппаратных временных меток на всех интерфейсах, которые его поддерживают. Используйте спецификацию подстановочных знаков в случае, если никакое другое приложение не использует аппаратную временную метку в интерфейсе. В файле hwtimestamp конфигурации chrony допускается наличие нескольких директив.
Пример включения аппаратной временной метки с помощью директивы hwtimestamp:
hwtimestamp eth0
hwtimestamp eth1
hwtimestamp *
Настройка интервала опроса клиентов#
Диапазон интервала опроса по умолчанию (64-1024 секунды) рекомендуется для серверов в интернете. Для локальных серверов и аппаратных временных меток необходимо настроить более короткий интервал опроса, чтобы минимизировать смещение системных часов.
Следующая директива в /etc/chrony.conf указывает локальный NTP-сервер, использующий интервал опроса в одну секунду:
server ntp.local minpoll 0 maxpoll 0 xleave
Включение режима чередования#
NTP-серверы, которые не являются аппаратными NTP-устройствами, а скорее - компьютерами общего назначения, где выполняется программная NTP-реализация, например chrony, получат метку времени аппаратной передачи только после отправки пакета. Такое поведение не позволяет серверу сохранять временную метку в пакете, которому она соответствует. Чтобы разрешить NTP-клиентам получать временные метки передачи, которые были сгенерированы после передачи, настройте клиентов на использование режима NTP-чередования, добавив опцию xleave в директиву сервера /etc/chrony.conf:
server ntp.local minpoll 0 maxpoll 0 xleave
Настройка сервера для большого количества клиентов#
Конфигурация сервера по умолчанию позволяет использовать режим чередования одновременно не более чем нескольким тысячам клиентов. Чтобы настроить сервер для большего числа клиентов, увеличьте директиву clientloglimit в /etc/chrony.conf. Эта директива определяет максимальный размер памяти, выделяемой для ведения журнала доступа клиентов на сервере:
clientloglimit 100000000
Проверка временных меток оборудования#
Чтобы убедиться, что интерфейс успешно включил аппаратную временную метку, проверьте системный журнал. Журнал должен содержать сообщение от для каждого интерфейса с успешно включенной аппаратной временной меткой.
Пример зарегистрированных сообщений для интерфейсов с включенной аппаратной временной меткой
chronyd[4081]: Enabled HW timestamping on eth0
chronyd[4081]: Enabled HW timestamping on eth1
Если chronyd настроен как NTP-клиент или одноранговый узел, можно указать режимы передачи и приема временных меток, а также режим чередования, сообщаемый для каждого NTP-источника chronyc командой ntpdata.
Пример отчетность о стабильности измерений NTP:
chronyc sourcestats
При включенной аппаратной временной метке стабильность NTP-измерений должна составлять десятки или сотни наносекунд при нормальной нагрузке. Об этой стабильности сообщается в столбце Std Dev выходных данных команды chronyc sourcestats:
Выходные данные:
210 Number of sources = 1
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
ntp.local 12 7 11 +0.000 0.019 +0ns 49ns
Настройка моста PTP-NTP#
Если высокоточный протокол точного времени (PTP) grandmaster доступен в сети, в которой нет коммутаторов или маршрутизаторов с PTP-поддержкой, машина может быть выделена для работы в качестве PTP slave и stratum-1 NTP. Такая машина должен иметь два или более сетевых интерфейса и находиться рядом с ведущим устройством PTP (grandmaster PTP) или иметь прямое подключение к нему. Это обеспечит высокоточную синхронизацию в сети.
Настройте
ptp4lиphc2sysдля использования одного интерфейса для синхронизации системных часов с помощью PTP.Настройте
chronyd, чтобы указать системное время, используя другой интерфейс:
Пример настройки chronyd для предоставления системного времени с использованием другого интерфейса:
bindaddress hh.hh.hh.hh
hwtimestamp eth1
local stratum 1
Пространства имен#
Пространства имен — один из наиболее важных методов организации и идентификации программных объектов.
Пространство имен заключает глобальный системный ресурс (например, точку монтирования, сетевое устройство или имя хоста) в абстракцию, благодаря которой для процессов внутри пространства имен кажется, что у них есть собственный изолированный экземпляр глобального ресурса. Одной из наиболее распространенных технологий, использующих пространства имен, являются контейнеры.
Изменения конкретного глобального ресурса видны только процессам в этом пространстве имен и не влияют на остальную часть системы или другие пространства имен.
Чтобы проверить, членом каких пространств имен является процесс, Можно проверить символические ссылки в каталоге /proc/<PID>/ns/.
В следующей таблице показаны поддерживаемые пространства имен и ресурсы, которые они изолируют:
Пространство имен |
Ресурсы |
|---|---|
Mount |
Точки монтирования |
UTS |
Имя хоста и доменное имя NIS |
IPC |
System V IPC, очереди сообщений POSIX |
PID |
Идентификаторы процессов |
Network |
Сетевые устройства, стеки, порты и т. д. |
User |
Идентификаторы пользователей и групп |
Control groups |
Корневой каталог группы управления |