Работа с основными параметрами среды#

Настройка даты и времени#

Точный хронометраж обеспечивается NTP-протоколом с помощью демона, работающего в пользовательском пространстве. Демон пользовательского пространства обновляет системные часы в ядре, которые могут показывать время, используя различные источники синхронизации.

SberLinux OS Server использует демона chronyd для синхронизации времени с серверами NTP. Подробнее про chronyd смотрите в разделе «База знаний» → «Демон chronyd».

Отображение текущей даты и времени#

Чтобы отобразить текущую дату и время, выполните любой из следующих шагов:

  1. Введите команду date:

    date
    

    Пример вывода команды:

    Mon Mar 30 16:02:59 CEST 2024
    
  2. Чтобы увидеть более подробную информацию, используйте команду 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:

    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
    

Средства антивирусной защиты#

SberLinux OS Server не предоставляет антивирусного программного обеспечения. Необходимое программное обеспечение пользователь устанавливает самостоятельно.

SberLinux OS Server обеспечивает высокий уровень безопасности операционной системы и пакетов. По мере обнаружения проблем с безопасностью в различных приложениях SberLinux OS Server предоставляет обновленные пакеты таким образом, чтобы свести потенциальный риск к минимуму.

Настройка и управление сетевым доступом#

В этом разделе описываются различные варианты добавления соединений Ethernet.

Внимание

Все адреса хостов и доменные имена, использованные в этом разделе, приведены для примера. При выполнении команд замените все адреса и имена из примера в соответствии со структурой сети. Обратите внимание, что вывод команд также изменится.

Настройка сети и имени хоста в графическом режиме установки#

Для настройки сети и имени хоста выполните следующие шаги:

  1. В окне Installation Summary нажмите [Network and Host Name].

  2. В списке на левой панели выберите интерфейс. Детали отображаются на правой панели.

  3. Переключите переключатель [ВКЛ/ВЫКЛ], чтобы включить или отключить выбранный интерфейс.

    Важно

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

  4. Нажмите +, чтобы добавить виртуальный сетевой интерфейс, который может быть: Team, Bond, Bridge или VLAN.

  5. Нажмите - для удаления виртуального интерфейса.

  6. Нажмите Configure, чтобы изменить такие параметры, как IP-адреса, DNS-серверы или конфигурацию маршрутизации для существующего интерфейса (как виртуального, так и физического).

  7. Введите имя хоста для системы в поле Host Name.

    Примечание

    Имя хоста может быть либо полным доменным именем (FQDN) в формате hostname.domainname, либо коротким именем хоста без имени домена. Во многих сетях есть служба протокола динамической конфигурации хоста (DHCP), которая автоматически предоставляет подключенным системам доменное имя. Чтобы разрешить службе DHCP назначить доменное имя этому компьютеру, укажите только короткое имя хоста. Это значение localhost означает, что конкретное статическое имя хоста для целевой системы не настроено, а фактическое имя хоста установленной системы настраивается во время обработки конфигурации сети, например, с NetworkManager помощью DHCP или DNS.

NetworkManager#

Профили nm-initrd-generator имеют более низкий приоритет, чем профили автоматического подключения. Утилита nm-initrd-generator в NetworkManager генерирует и настраивает профили подключений с помощью экземпляра NetworkManager, запущенного на инициализированном диске оперативной памяти initrd-загрузчика. Сгенерированные утилитой nm-initrd-generator профили имеют более низкий приоритет автоматического подключения, чем приоритет автоматического подключения по умолчанию. Это позволяет сгенерированным сетевым профилям в initrd сосуществовать с пользовательской конфигурацией в учетной записи пользователя с административными полномочиями по умолчанию.

NetworkManager представляет следующие возможности:

  • сохраняет адреса, добавленные извне, с помощью утилиты nm-cloud-setup;

  • вычисляет сроки истечения срока действия для элементов, настроенных на основе сообщений обнаружения соседей IPv6;

  • автоматически обновляет файл /etc/resolv.conf при изменении конфигурации;

  • не устанавливает несуществующие интерфейсы в качестве основных при активации связи;

  • настраивает основной интерфейс, даже если интерфейс не существует при активации привязки;

  • не печатает повторяющиеся записи, используя команду --print-config ;

  • считывает профили подключения InfiniBand P-Key без явного имени интерфейса при помощи подключаемого модуля ifcfg-rh;

  • удаляет профиль подключения к порту связи из соединения, используя утилиту nmcli;

  • отклоняет заявки на аренду DHCPv6, если на всех адресах не удается обнаружить дублирующийся адрес IPv6 (DAD);

  • ожидает подключения интерфейсов, прежде чем пытаться разрешить системное имя хоста на этих интерфейсах из DNS;

  • настраивает параметры DNS на управляемых узлах с целью подавления запросов записей AAAA, вызванных stub resolver, при помощи параметра no-aaaa. Записи AAAA содержат полное доменное имя, время жизни пакета данных (TTL) и IP-адрес;

  • отключает IPv6, используя утилиту nmcli.

Также:

  • Имена хостов могут содержать только буквенно-цифровые символы и «-» или «.». Имена хостов не могут начинаться или заканчиваться символами «-» и «.».

  • Нажмите Apply, чтобы применить имя хоста к среде установщика.

  • Кроме того, в окне Network and Hostname существует возможность выбрать параметр Wireless option. Для этого нажмите Select network на правой панели, чтобы выбрать подключение Wi-Fi, при необходимости введите пароль и нажмите Done.

Настройка статического соединения Ethernet с помощью утилиты nmcli#

Ниже приведен пример процедуры, которая описывает добавление соединения Ethernet с помощью утилиты nmcli (подробнее см. «База знаний» → «Утилита 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.

Для настройки статического соединения Ethernet с помощью утилиты nmcli выполните приведенный ниже сценарий:

  1. Добавьте новый профиль подключения NetworkManager для подключения Ethernet:

    nmcli connection **Add** con-name Example-Connection ifname enp7s0 type ethernet
    

    Дальнейшие шаги изменяют созданный профиль подключения Example-Connection.

  2. Установите IPv4-адрес:

    nmcli connection modify Example-Connection ipv4.addresses <IPv4_ADDRESS>/24
    
  3. Установите IPv6-адрес:

    nmcli connection modify Example-Connection ipv6.addresses <IPv6_ADDRESS>/64
    
  4. Установите способ подключения manual:

    • Для IPv4:

      nmcli connection modify Example-Connection ipv4.method manual
      
    • Для IPv6:

      nmcli connection modify Example-Connection ipv6.method manual
      
  5. Установите шлюзы по умолчанию:

    • Для IPv4:

      nmcli connection modify Example-Connection ipv4.gateway <IPv4_GATEWAY>
      
    • Для IPv6:

      nmcli connection modify Example-Connection ipv6.gateway <IPv6_GATEWAY>
      
  6. Задайте адреса DNS-серверов:

    • Для IPv4:

      nmcli connection modify Example-Connection ipv4.dns "<IPv4_DNS>"
      
    • Для IPv6:

      nmcli connection modify Example-Connection ipv6.dns "<IPv6_DNS>"
      

    Чтобы задать несколько DNS-серверов, укажите их через пробел и заключите в кавычки.

  7. Установите домен поиска DNS:

    • Для IPv4:

      nmcli connection modify Example-Connection ipv4.dns-search example.ru
      
    • Для IPv6:

      nmcli connection modify Example-Connection ipv6.dns-search example.ru
      
  8. Активируйте профиль подключения:

    nmcli connection up Example-Connection
    

    Пример вывода команды:

    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
    

Для проверки настройки статического соединения Ethernet с помощью утилиты nmcli выполните приведенный ниже сценарий:

  1. Проверьте отображение состояния устройств и подключений:

    nmcli device status
    

    Пример вывода команды:

    DEVICE TYPE STATE CONNECTION
    enp7s0 ethernet connected Example-Connection
    
  2. Выведите все настройки профиля подключения:

    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
    ...
    
  3. Используйте команду ping, чтобы убедиться, что хост может отправлять пакеты другим хостам в той же подсети и в удаленной подсети.

    Если выполнение команды завершилось с ошибкой, проверьте параметры IP и подсети.

  4. Используйте команду host, чтобы убедиться, что разрешение имен работает:

    host client.example.ru
    

Если команда возвращает ошибку, например, connection timed out или no servers could be reached, проверьте настройки DNS.

Действия по устранению неполадок#

Если соединение не установлено, воспользуйтесь следующими рекомендациями:

  • Убедитесь, что сетевой кабель подключен к хосту и коммутатору.

  • Проверьте, существует ли сбой связи только на этом хосте или также на других хостах, подключенных к тому же коммутатору, к которому подключен сервер.

  • Убедитесь, что сетевой кабель и сетевой интерфейс работают должным образом. Выполните действия по диагностике оборудования и замените неисправные кабели и сетевые карты.

Настройка динамического соединения Ethernet с помощью nmtui#

Утилита nmtui представляет собой текстовый пользовательский интерфейс и может использоваться для настройки и конфигурирования. Используйте данную утилиту для настройки соединения Ethernet с динамическим IP-адресом на хосте.

Для настройки динамического соединения Ethernet с помощью утилиты nmtui выполните приведенный ниже сценарий:

  1. Если имя сетевого устройства, которое хотите использовать в соединении, неизвестно, отобразите доступные устройства:

    nmcli device status
    

    Пример вывода команды:

    DEVICE     TYPE      STATE                   CONNECTION
    enp7s0     ethernet  unavailable             --
    ...
    
  2. Введите команду nmtui:

    nmtui
    
  3. Выберите Edit a connection и нажмите Enter.

  4. Нажмите кнопку Add.

  5. Выберите Ethernet из списка типов сети и нажмите Enter.

  6. При необходимости введите имя создаваемого профиля NetworkManager.

  7. Введите имя сетевого устройства в поле Device.

  8. Нажмите кнопку OK, чтобы создать и автоматически активировать новое соединение.

    Новое соединение

    Рисунок. Новое соединение

  9. Нажмите кнопку Back, чтобы вернуться в главное меню.

  10. Выберите Quit и нажмите Enter, чтобы закрыть утилиту nmtui.

Для проверки настройки динамического соединения Ethernet с помощью утилиты nmcli выполните приведенный ниже сценарий:

  1. Отобразите и проверьте состояния устройств и подключений:

    nmcli device status
    

    Пример вывода команды:

    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
    
  2. Отобразите и проверьте все настройки профиля подключения:

    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 предоставляет текстовый пользовательский интерфейс. Используйте данную утилиту для настройки соединения Ethernet со статическим IP-адресом на хосте без графического интерфейса.

Для настройки статического соединения Ethernet с помощью утилиты nmcli выполните приведенный ниже сценарий (подробнее в разделе «База знаний» → «Утилита nmcli»):

  1. Если имя сетевого устройства, которое хотите использовать в соединении, неизвестно, отобразите доступные устройства:

    nmcli device status
    

    Пример вывода команды:

    DEVICE     TYPE      STATE                   CONNECTION
    enp7s0     ethernet  unavailable             --
    ...
    
  2. Запустите nmtui:

    nmtui
    
  3. Выберите Edit a connection и нажмите Enter.

  4. Нажмите кнопку Add.

  5. Выберите Ethernet из списка типов сети и нажмите Enter.

  6. Необязательно: введите имя создаваемого профиля NetworkManager.

  7. Введите имя сетевого устройства в поле Device.

  8. Настройте параметры адресов 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.

    Пример соединения Ethernet со статическими настройками IP-адреса

    Рисунок. Пример соединения Ethernet со статическими настройками IP-адреса

  9. Нажмите кнопку OK, чтобы создать и автоматически активировать новое соединение.

  10. Нажмите кнопку Back, чтобы вернуться в главное меню.

  11. Выберите Quit и нажмите Enter, чтобы закрыть nmtui.

Для проверки настройки статического соединения Ethernet с помощью утилиты nmcli выполните приведенный ниже сценарий:

  1. Отобразите состояния устройств и подключений:

    nmcli device status
    

    Пример вывода команды:

    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
    
  2. Отобразите все настройки профиля подключения:

    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
    ...
    

Управление сетью с помощью системных ролей SberLinux OS Server#

network - с помощью этой роли можно настроить сетевые подключения на нескольких целевых машинах.

Роль network позволяет настраивать следующие типы интерфейсов:

  • Ethernet;

  • Bridge;

  • Bonded;

  • VLAN;

  • MacVLAN;

  • Infiniband.

Необходимые сетевые подключения для каждого хоста представлены в виде списка внутри переменной network_connections.

Внимание

Роль network обновляет или создает все профили подключения в целевой системе точно так, как указано в переменной network_connections. Поэтому роль network удаляет параметры из указанных профилей, если параметры присутствуют только в системе, но не в переменной network_connections.

В следующем примере показано, как применить роль, чтобы убедиться, что соединение Ethernet с требуемыми параметрами существует:

SPDX-License-Identifier: BSD-3-Clause
---
- hosts: network-test
  vars:
    network_connections:

      # Create one ethernet profile and activate it.
      # The profile uses automatic IP addressing
      # and is tied to the interface by MAC address.
      - name: prod1
        state: up
        type: ethernet
        autoconnect: yes
        mac: "00:00:5e:00:53:00"
        mtu: 1450

  roles:
    - sberlinux-system-roles.network

Запуск служб systemd во время загрузки#

Для управления службами используется утилита systemctl (подробнее см. «База знаний» → «Утилита systemctl») для управления демоном systemd и диспетчером служб.

Включение или отключение служб#

Пользователь с административными полномочиями может включить или отключить запуск конкретной службы при загрузке ОС. Любые изменения будут применены после перезапуска системы.

Если для какой-либо службы не настроено автоматическое включение при загрузке ОС, будет необходимо запустить ее вручную.

Чтобы службу было невозможно запустить вручную, можно использовать маскировку. Маскировка — это способ отключения службы, делающий ее не доступной для использования, пока не будет задействована команда unmask.

Предварительные условия

- Права пользователя с административными полномочиями

- Служба, которую хотите включить, не должна быть замаскирована. Если есть замаскированный сервис, необходимо сначала использовать следующую команду: systemctl unmask service_name

Для включения или отключения служб выполните приведенный ниже сценарий:

  1. Включите запуск службы при загрузке:

    systemctl enable service_name
    
  2. Замените service_name на службу, которую хотите включить.

    Также можно включить и запустить службу с помощью одной команды:

    systemctl enable --now service_name
    
  3. Отключите запуск службы при загрузке:

    systemctl disable service_name
    

    Замените service_name на службу, которую хотите отключить.

    Замаскируйте службу, чтобы сделать службу непригодной для использования навсегда:

    systemctl mask service_name
    

Настройка безопасности системы#

Компьютерная безопасность — это защита компьютерных систем и их аппаратного обеспечения, программного обеспечения, информации и услуг от кражи, повреждения, нарушения работы и неправильного направления. Обеспечение компьютерной безопасности является важной задачей, особенно на предприятиях, которые обрабатывают конфиденциальные данные и осуществляют бизнес-транзакции.

В этом разделе рассматриваются только основные функции безопасности, которые можно настроить после установки операционной системы.

Включение службы межсетевого экрана firewalld#

Межсетевой экран — это система сетевой безопасности, которая отслеживает и контролирует входящий и исходящий сетевой трафик в соответствии с настроенными правилами безопасности. Межсетевой экран обычно устанавливает барьер между надежной защищенной внутренней сетью и другой внешней сетью.

Утилита firewalld, обеспечивающая работу межсетевого экрана в SberLinux OS Server, автоматически включается во время установки (подробнее см. «База знаний» → «Утилита firewalld»).

Чтобы включить firewalld, выполните следующий сценарий:

  1. Отобразите текущее состояние 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)
    ...
    
  2. Если firewalld не включена и не запущена, запустите утититу и включите ее автоматический запуск после перезагрузки системы:

    systemctl enable --now firewalld
    
  3. Опционально. Убедитесь, что утилита 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 добавляет постоянное правило, которое будет действовать после перезагрузки.

  • Чтобы добавить правило для определенной зоны:

    1. Пропишите:

      firewall-cmd --permanent --zone=external --add-port=80/tcp
      
    2. Добавьте диапазон портов:

      firewall-cmd --permanent --add-port=6500-6700/udp
      
    3. Добавьте несколько правил одной командой:

      firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
      

Добавление сервиса#

Использование служб вместо портов может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.

  1. Посмотрите список доступных служб:

    firewall-cmd --get-services
    
  2. Разрешите порт, например, для сервиса ntp:

    firewall-cmd --permanent --add-service=ntp
    
  3. Создайте собственную службу:

    firewall-cmd --permanent --new-service=name-service
    

    Где name-service — это произвольное имя создаваемой службы.

  4. Добавьте порт, например TCP 2200 к службе:

    firewall-cmd --permanent --service=name-service --add-port=2200/tcp
    
  5. Задайте описание для удобства, используя следующие команды:

    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
    
  6. Теперь созданную службу можно использовать для создания правил, например:

    firewall-cmd --permanent --add-service=name-service
    

Правило Rich-Rule#

Правило Rich-Rule позволяет создавать правила с условиями. Например:

  1. Разрешите службу http с условием, что запросы будут с определенных IP-адресов:

    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="<IP-ADDRESS>/24" service name="http" accept'
    
  2. Или разрешите службу для конкретного порта:

    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="<IP-ADDRESS/24" port port="5038" protocol="tcp" accept'
    
  3. Чтобы заблокировать подсеть, воспользуйтесь командой:

    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 могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Используйте, если необходимо для разных сетевых адаптеров создать разные по строгости правила.

  1. Просмотрите список всех имеющихся зон:

    firewall-cmd --list-all-zones
    
  2. Просмотрите список используемых зон:

    firewall-cmd --get-active-zones
    

Для просмотра информации о конкретной зоне выполните следующий сценарий:

  1. Введите команду:

    firewall-cmd --list-all --zone=public
    
  2. Создайте правило для зоны public:

    firewall-cmd --permanent --zone=public --add-port=80/tcp
    
  3. Добавьте сетевой интерфейс в зону, используя следующие команды:

    firewall-cmd --permanent --zone=public --remove-interface=ens34
    

    Затем:

    firewall-cmd --permanent --zone=internal --add-interface=ens34
    

    Перед этим необходимо удалить адаптер из текущей зоны.

  4. Задайте действие по умолчанию для зоны:

    firewall-cmd --permanent --zone=public --set-target=DROP
    
  5. Создайте новую зону, используя следующие команды:

    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=<listening_port>:proto=tcp|udp|sctp|dccp:toport=<destination_port>:toaddr=<redirect_address>

Где:

  • <listening_port> — порт, на котором слушается трафик;

  • <destination_port> — порт назначения, куда перенаправляется трафик;

  • <redirect_address> — адрес, куда перенаправляется трафик.

Например:

firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=<IP_address>

В примере выше осуществляются запросы на порту 25 и переводятся на узел <IP_address> и порт 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.

Знакомство с chrony#

chrony - это реализация Network Time Protocol (NTP). Используйте chrony:

  • для синхронизации системных часов с NTP-серверами;

  • для синхронизации системных часов с эталонными часами, например, с GPS-приемником;

  • для синхронизации системных часов с ручным вводом времени;

  • в качестве NTPv4(RFC 5905) сервера или однорангового узла для предоставления службы времени другим компьютерам в сети.

chrony состоит из chronyd демона (запускается в пространстве пользователя) и программы командной строки chronyc (используется для мониторинга производительности chronyd и изменения различных рабочих параметров во время ее запуска).

Демоны chrony, chronyd могут контролироваться и управляться утилитой командной строки chronyc. Эта утилита предоставляет командную строку, которая позволяет вводить ряд команд для запроса текущего состояния chronyd и внесения изменений в его конфигурацию. По умолчанию chronyd принимает только команды от локального экземпляра chronyc, но его можно настроить для приема команд мониторинга также от удаленных хостов. Удаленный доступ должен быть ограничен.

Использование chronyc для управления chronyd#

В этом разделе описывается, как управлять chronyd с помощью утилиты командной строки chronyc. Подробнее про chronyc смотрите в разделе «База знаний» → «Утилита chronyc».

  1. Чтобы внести изменения в локальный экземпляр chronyd использования утилиты командной строки chronyc в интерактивном режиме, от имени пользователя с административными полномочиями введите следующую команду:

    chronyc
    
  2. Утилита chronyc должна выполняться так, как если бы пользователь с административными полномочиями использовал некоторые из ограниченных команд. Командная строка chronyc будет отображаться следующим образом:

    chronyc>
    
  3. Чтобы перечислить все команды, введите help.

  4. Альтернативно, утилита также может быть вызвана в неинтерактивном командном режиме, если вызывается вместе с командой следующим образом:

    chronyc command
    

Важно

Изменения, внесенные с помощью chronyc, не являются постоянными, они будут потеряны после перезагрузки chronyd. Для постоянных изменений внесите изменения в /etc/chrony.conf.

Переход на chrony#

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

Соответствующие названия программ, файлов конфигурации и служб при переходе с NTP на chrony#

Имя NTP

Имя chrony

/etc/ntp.conf

/etc/chrony.conf

/etc/ntp/keys

/etc/chrony.keys

ntpd

chronyd

ntpq

chronyc

ntpd.service

chronyd.service

ntp-wait.service

chrony-wait.service

Утилиты ntpdate и sntp, которые включены в дистрибутив NTP, можно заменить chronyd с помощью опции -q или опции -t. Конфигурация может быть задана в командной строке, чтобы избежать чтения /etc/chrony.conf. Например, вместо запуска ntpdate ntp.example.ru chronyd можно было бы запустить как:

chronyd -q 'server ntp.example.ru iburst'
2018-05-18T12:37:43Z chronyd version 3.3 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2018-05-18T12:37:43Z Initial frequency -2.630 ppm<
2018-05-18T12:37:48Z System clock wrong by 0.003159 seconds (step)
2018-05-18T12:37:48Z chronyd exiting

Утилита ntpstat, которая ранее была включена в NTP пакет и поддерживалась только ntpd, поддерживает оба ntpd и chronyd. Она доступна в ntpstat пакете.

Скрипт миграции#

Вызываемый скрипт Python ntp2chrony.py включен в документацию chrony-пакета (/usr/share/doc/chrony). Скрипт автоматически преобразует существующую NTP конфигурацию в chrony. Он поддерживает наиболее распространенные директивы и параметры в ntp.conf файле. Любые строки, которые игнорируются при преобразовании, включаются в качестве комментариев в сгенерированный chrony.conf файл для проверки. Ключи, которые указаны в файле ntp, но не помечены как доверенные ключи в ntp.conf, включаются в сгенерированный файл chrony.keys в качестве комментариев.

По умолчанию скрипт не перезаписывает никаких файлов. Если /etc/chrony.conf или /etc/chrony.keys уже существует, параметр -b можно использовать для переименования файла в качестве резервной копии. Скрипт поддерживает и другие опции. Опция --help выводит все поддерживаемые параметры.

Примером вызова скрипта со значением по умолчанию ntp.conf, указанным в NTP пакете, является следующий скрипт:

python3 /usr/share/doc/chrony/ntp2chrony.py -b -v
Reading /etc/ntp.conf
Reading /etc/ntp/crypto/pw
Reading /etc/ntp/keys
Writing /etc/chrony.conf
Writing /etc/chrony.keys

Сгенерированный файл chrony.conf обычно включает в себя ряд директив allow, соответствующих строкам ограничения ntp.conf. Если нет необходимости запускать chronyd от NTP имени сервера, удалите все директивы allow с chrony.conf.

Использование сhrony#

В следующих разделах описано, как установить, запустить и остановить chronyd, а также проверить его синхронизациию. В разделах также описывается, как вручную настроить системные часы.

Следующая процедура описывает, как установить, запустить, остановить и проверить состояние chronyd:

  1. Чтобы убедиться, что chrony suite установлен, выполните следующую команду:

    dnf install chrony
    

    Расположение по умолчанию для демона chrony - /usr/sbin/chronyd. Утилита командной строки будет установлена в /usr/bin/chronyc.

  2. Чтобы проверить состояние 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
    
  3. Для запуска chronyd выполните следующую команду:

    systemctl start chronyd
    

    Чтобы обеспечить автоматический запуск chronyd при запуске системы, выполните следующую команду:

    systemctl enable chronyd
    
  4. Чтобы остановить chronyd, выполните следующую команду:

    systemctl stop chronyd
    
  5. Чтобы предотвратить автоматический запуск chronyd при запуске системы, выполните следующую команду:

    systemctl disable chronyd
    

Данный сценарий описывает, как проверить, синхронизируется ли chrony при использовании команд tracking, sources и sourcestats.

  1. Чтобы проверить 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.

  2. Чтобы проверить 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). В этом случае дополнительные строки заголовка отображаются как напоминание о значениях столбцов.

  3. Команда 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 в изолированной сети.

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

  2. В системах, выбранных в качестве прямых клиентов ведущего, используя текстовый редактор, работающий с административными полномочиями, отредактируйте /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 <IP_address>
    

Где <IP_address> - это адрес ведущего устройства, а master - имя хоста ведущего устройства. Клиенты с такой конфигурацией будут повторно синхронизировать мастер, если он перезапустится.

В клиентских системах, которые не должны быть прямыми клиентами ведущего, файл /etc/chrony.conf должен быть таким же, за исключением того, что директивы localand allow должны быть опущены.

В изолированной сети можно использовать директиву local, которая включает локальный ссылочный режим и позволяет chronyd работать в качестве NTP-сервера, синхронизированного с реальным временем, даже если он никогда не был синхронизирован или последнее обновление часов произошло давно.

Чтобы разрешить нескольким серверам в сети использовать одну и ту же локальную конфигурацию и синхронизироваться друг с другом, не вводя в заблуждение клиентов, опрашивающих более одного сервера, используйте опцию orphan директивы local, которая включает режим orphan mode. Каждый сервер должен быть настроен для опроса всех других серверов local. Это гарантирует, что локальная ссылка активна только на сервере с наименьшим идентификатором ссылки, а другие серверы синхронизированы с ним. Когда сервер выйдет из строя, его заменит другой.

Настройка удаленного доступа к мониторингу#

chronyc может получить доступ chronyd двумя способами:

  • Интернет-протокол, IPv4 или IPv6.

  • Доменный сокет Unix, который доступен локально с помощью прав пользователя с административными полномочиями или chrony.

По умолчанию, chronyc подключается к доменному сокету Unix. Путь по умолчанию таков /var/run/chrony/chronyd.sock. Если соединение не удается установить, такое может произойти, когда chronyc работает под управлением пользователя без прав пользователя с административными полномочиями, то chronyc попытается подключиться к адресу локального хоста 127.0.0.1, а затем к петлевому адресу ::1.

Из сети разрешены только следующие команды мониторинга, которые не влияют на поведение chronyd:

  • activity

  • manual list

  • rtcdata

  • smoothing

  • sources

  • sourcestats

  • tracking

  • waitsync

Набор хостов, с которых chronyd принимаются эти команды, может быть настроен со cmdallow помощью директивы в файле конфигурации chronyd или cmdallow команды в chronyc. По умолчанию команды принимаются только с локального хоста (127.0.0.1 или ::1).

Все остальные команды разрешены только через доменный сокет Unix. При отправке по сети chronyd выдает сообщение об ошибке Not authorised, даже если оно отправлено с локального хоста.

Следующая процедура описывает, как получить удаленный доступ к chronyd с помощью chronyc:

  1. Разрешите доступ как с IPv4, так и с IPv6-адресов, добавив в файл /etc/chrony.conf следующее:

    bindcmdaddress <IP_address>
    

    или

    bindcmdaddress :
    
  2. Разрешите команды с удаленного IP-адреса, сети или подсети с помощью cmdallow директивы.

  3. Добавьте в файл /etc/chrony.conf следующее содержимое:

    cmdallow nn.nn.nn.nn/mm
    
  4. Откройте порт 323 в межсетевом экране для подключения из удаленной системы:

    firewall-cmd --zone=public --add-port=323/udp
    

    При необходимости откройте порт 323 для постоянного подключения, используя –permanent опцию:

    firewall-cmd --permanent --zone=public --add-port=323/udp
    
  5. Если постоянно открыли порт 323, перезагрузите конфигурацию межсетевого экрана:

    firewall-cmd --reload
    

Управление синхронизацией времени с помощью системных ролей SberLinux OS Server#

Можно управлять синхронизацией времени на нескольких целевых машинах, используя роль timesync. Роль timesync устанавливает и настраивает реализацию NTP или PTP для работы в качестве клиента NTP или подчиненного устройства PTP, чтобы синхронизировать системные часы с серверами NTP или ведущими устройствами PTP (grandmaster PTP) в доменах PTP.

Обратите внимание, что использование роли timesync также облегчает переход на chrony, поскольку можно использовать один и тот же playbook во всех версиях SberLinux OS Server, независимо от того, использует ли система NTP или chrony для реализации протокола NTP.

Внимание

Роль timesync заменяет конфигурацию заданной или обнаруженной службы поставщика на управляемом узле. Предыдущие настройки будут потеряны, даже если они не указаны в переменных роли. Единственная сохраненная настройка - это выбор поставщика, если переменная timesync_ntp_provider не определена.

В следующем примере показано, как применить роль timesync в ситуации только с одним пулом серверов.

Сборник задач, применяющий роль синхронизации времени для одного пула серверов:

---
- hosts: timesync-test
vars:
timesync_ntp_servers:
- hostname: 2.sberlinux.pool.ntp.ru
pool: yes
iburst: yes
roles:
- sberlinux-system-roles.timesync

сhrony с отметкой времени 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) или иметь прямое подключение к нему. Это обеспечит высокоточную синхронизацию в сети.

  1. Настройте ptp4l и phc2sys для использования одного интерфейса для синхронизации системных часов с помощью PTP.

  2. Настройте chronyd, чтобы указать системное время, используя другой интерфейс:

Пример настройки chronyd для предоставления системного времени с использованием другого интерфейса:

bindaddress <IP_address>
hwtimestamp eth1
local stratum 1

Namespace#

Namespace — один из наиболее важных методов организации и идентификации программных объектов.

Namespace заключает глобальный системный ресурс (например, точку монтирования, сетевое устройство или имя хоста) в абстракцию, благодаря которой для процессов внутри кажется, что у них есть собственный изолированный экземпляр глобального ресурса. Одной из наиболее распространенных технологий, использующих namespace, являются контейнеры.

Изменения конкретного глобального ресурса видны только процессам в этом namespace и не влияют на остальную часть системы или другие namespace.

Чтобы проверить, членом каких пространств имен является процесс, Можно проверить символические ссылки в каталоге /proc/<PID>/ns/.

В следующей таблице показаны поддерживаемые namespace и ресурсы, которые они изолируют.

Namespace и ресурсы#

Namespace

Ресурсы

Mount

Точки монтирования

UTS

Имя хоста и доменное имя NIS

IPC

System V IPC, очереди сообщений POSIX

PID

Идентификаторы процессов

Network

Сетевые устройства, стеки, порты и т. д.

User

Идентификаторы пользователей и групп

Control groups

Корневой каталог группы управления