Статья содержит порядок подготовки сервера с ОС Astra Linux Special Edition для установки платформы и настройки узлов кластера.

Если на сервере уже установлена ОС Astra Linux, переустановите ОС и выполните её настройку по инструкциям из этой статьи.

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

Установка ОС


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

При установке операционной системы:

  1. На шаге Установка базовой системы выберите Ядро для установки — linux-5.15-generic или linux-6.1-generic.
  2. На шаге Выбор программного обеспечения:
    1. Выберите следующие компоненты:
      1. Средства Виртуализации.
      2. Консольные утилиты.
      3. Средства удаленного подключения SSH.

    2. Убедитесь, что остальные компоненты отключены.
  3. На шаге  Дополнительные настройки ОС:
    1. Выберите уровень защищенности "Орел" или "Воронеж".
    2. Убедитесь, что отключены опции:
      1. Замкнутая программная среда.
      2. Запрет установки бита исполнения.
      3. Запрет исполнения скриптов пользователя

        Если вы выбрали уровень защищённости "Воронеж", рекомендуем отключить опцию "Очистка освобождаемой внешней памяти". Эта опция значительно увеличивает нагрузку на CPU и время выполнения некоторых операций. 

Настройка ОС на сервере с платформой


  1. Перейдите в режим суперпользователя: 

    sudo su -
    BASH
  2. Настройте список источников в файле /etc/apt/sources.list:

    • для установки в закрытом контуре укажите только источник cdrom. Остальные источники должны быть удалены или закомментированы:

      Пример файла для Astra Linux Special Edition 1.7.5

      deb cdrom:[OS Astra Linux 1.7.5 1.7_x86-64 DVD]/ 1.7_x86-64 contrib main non-free
      CODE
    • для установки в открытом контуре у кажите только источники из поддерева Frozen для нужной версии ОС. Остальные источники должны быть удалены или закомментированы: 

      Пример файла для Astra Linux Special Edition 1.7.4 base (1.7.4-24.04.2023_14.23.iso)

      deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-main/ 1.7_x86-64 main contrib non-free
      deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-update/ 1.7_x86-64 main contrib non-free
      deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-base/ 1.7_x86-64 main contrib non-free
      deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-extended/ 1.7_x86-64 main contrib non-free
      CODE

      Пример файла для Astra Linux Special Edition 1.7.4 uu1 (installation-1.7.4.11-23.06.23_17.13.iso)

      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/uu/last/repository-base/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/uu/last/repository-extended/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/uu/last/repository-main/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/uu/last/repository-update/ 1.7_x86-64 main contrib non-free
      CODE

      Пример файла для Astra Linux Special Edition 1.7.5

      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/repository-base/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/repository-extended/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/repository-main/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/repository-update/ 1.7_x86-64 main contrib non-free
      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/uu/last/repository-update/ 1.7_x86-64 main contrib non-free
      CODE
  3. В файле /etc/network/interfaces настройте сетевую конфигурацию со статическим IP-адресом: 

    Пример конфигурации

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
        address   192.168.1.10
        netmask   255.255.255.0
        gateway   192.168.1.254
    
    CODE
  4. Если платформа будет использоваться в открытом информационном контуре (с доступом к Интернет), создайте файл /etc/resolv.conf и укажите в нём настройки DNS-серверов:

    Пример настройки

    nameserver 77.88.8.8
    nameserver 1.1.1.1
    options timeout:1
    options attempts:2
    CODE
  5. Перезапустите службу networking

    sudo systemctl restart networking
    BASH
  6. Проверьте доступность сети.

Настройка системного времени


Открытый контур

На сервере платформы и узлах кластера настройте синхронизацию системного времени с NTP-сервером. Подробнее см. в документации Astra Linux

Закрытый контур

Настройте NTP-сервер на сервере с платформой и NTP-клиенты на узлах кластера. 

Настройка NTP-сервера

  1. Установите пакеты ПО NTP: 
    sudo apt-get update 
    CODE
    sudo apt-get install ntp
    CODE
  2. В конфигурационном файле /etc/ntp.conf:
    1. Отключите синхронизацию с внешними NTP-серверами. Для этого закомментируйте все строки, начинающиеся с pool или server.
    2. Подключите локальный NTP-сервер. Для этого добавьте строку: 
      server 127.127.1.0 fudge 127.127.1.0 stratum 8
      CODE
    3. Разрешите сетевые подключения к локальному NTP-серверу. Для этого добавьте строки вида: 
      restrict <адрес_подсети> mask <маска_подсети> nomodify notrap
      CODE
  3. Перезапустите службу ntp
    sudo /etc/init.d/ntp restart
    CODE
  4. Проверьте работу NTP-сервера: 
    ntpq -p
    CODE

    Пример вывода

         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *LOCAL(0)        .LOCL.           5 l   38   64  177    0.000   +0.000   0.000
    CODE

Настройка NTP-клиентов

  1. Установите пакеты ПО NTP: 
    sudo apt-get update 
    CODE
    sudo apt-get install ntp
    CODE
  2. В конфигурационном файле /etc/ntp.conf:
    1. Отключите синхронизацию с внешними NTP-серверами. Для этого закомментируйте все строки, начинающиеся с pool или server.
    2. Включите синхнронизацию с локальным NTP-сервером. Для этого добавьте строку вида: 
      server <IP-адрес_или_hostname_NTP-сервера> iburst
      CODE
  3. Перезапустите службу ntp
    sudo /etc/init.d/ntp restart
    CODE
  4. Проверьте работу NTP-сервера: 
    ntpq -p
    CODE

    Пример вывода

         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     172.31.52.41    .INIT.          16 u   29   64    0    0.000   +0.000   0.000
    CODE
  5. Подождите несколько минут и проверьте, совпадает ли время на серверах: 
    date
    CODE

Настройка сети на узлах кластера


  1. В файле /etc/network/interfaces настройте сетевую конфигурацию. Примеры конфигураций: 

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
        address   192.168.1.10
        netmask   255.255.255.0
        gateway   192.168.1.254
    CODE
    auto lo
    iface lo inet loopback
    
    auto eth0 vmbr0 vmbr1
    iface eth0 inet manual
    
    auto eth0.111
    iface eth0.111 inet manual
        vlan_raw_device eth0
    
    auto eth0.112
    iface eth0.112 inet manual
        vlan_raw_device eth0
    
    iface vmbr0 inet static
     address 1.1.111.10
     netmask 255.255.255.0
     gateway 1.1.111.1
     bridge_ports eth0.111
     bridge_stp off
    
    iface vmbr1 inet static
     address 1.1.112.10
     netmask 255.255.255.0
     gateway 1.1.112.1
     bridge_ports eth0.112
     bridge_stp off
    CODE
    auto lo
    iface lo inet loopback
    
    auto eth0 eth1 bond0 bond0.118 vmbr0
    iface eth0 inet manual
    iface eth1 inet manual
    
    iface bond0 inet manual
     pre-up modprobe bonding mode=active-backup
     post-down rmmod bonding
     bond-mode active-backup
     bond-primary eth0
     bond-miimon 100
     bond-downdelay 200
     bond-updelay 150
     bond-slaves eth0 eth1
    
    iface bond0.118 inet manual 
        vlan-raw-device bond0
    
    iface vmbr0 inet static
     address 172.22.18.74
     netmask 255.255.255.0
     gateway 172.22.18.1
     bridge_ports bond0.118
     bridge_stp off
    CODE
    auto lo 
    iface lo inet loopback
    
    auto eth2 eth3 bond0 bond0.772 vmbr0
    
    iface eth2 inet manual
    iface eth3 inet manual
    
    iface bond0 inet manual
        bond-mode 6
        bond-miimon 100
        bond-slaves eth2 eth3
    
    iface bond0.772 inet manual 
        vlan-raw-device bond0
    
    iface vmbr0 inet static
        address 10.77.2.20/24
        gateway 10.77.2.1
        bridge_ports bond0.772
        bridge_stp off
    CODE
    auto lo
    iface lo inet loopback
    
    auto eth0 eth1 bond0 vmbr0
    iface eth0 inet manual
    iface eth1 inet manual
    
    iface bond0 inet manual
     bond-mode 802.3ad
     bond-miimon 100
     bond-downdelay 200
     bond-updelay 200
     bond-xmit-hash-policy 1 
     bond-slaves eth0 eth1
    
    iface vmbr0 inet static
     address 172.22.18.74
     netmask 255.255.255.0
     gateway 172.22.18.1
     bridge_ports bond0
     bridge_stp off
    CODE
    auto lo
    iface lo inet loopback
    
    auto eth0 eth1 bond0 bond0.118 vmbr0
    iface eth0 inet manual
    iface eth1 inet manual
    
    iface bond0 inet manual
     bond-mode 802.3ad
     bond-miimon 100
     bond-downdelay 200
     bond-updelay 200
     bond-xmit-hash-policy 1 
     bond-slaves eth0 eth1
    
    iface bond0.118 inet manual 
        vlan-raw-device bond0
    
    iface vmbr0 inet static
     address 172.22.18.74
     netmask 255.255.255.0
     gateway 172.22.18.1
     bridge_ports bond0.118
     bridge_stp off
    CODE

    Подробнее о сетевых настройках см. в статьях Настройки сети на узле кластера, Режимы работы бондов.

  2. Перезапустите службу networking

    sudo systemctl restart networking
    BASH
  3. Проверьте настройки сети: 

    ip -c a
    BASH
  4. Проверьте доступность узла со стороны сервера с платформой.

При добавлении узла платформа:

  1. Импортирует настройки сетевых интерфейсов из файла /etc/network/interfaces в сервис NetworkManager.
  2. Отправляет ICMP-запросы на проверочный IP-адрес, заданный в настройках кластера:
    • если IP-адрес недоступен, возвращает исходные сетевые настройки;
    • если проверка прошла успешно, выполняет настройку сети.

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

После настройки сети в файле /etc/network/interfaces остаётся только конфигурация loopback-интерфейса (lo). Дальнейшую настройку сети на узле кластера рекомендуется выполнять через интерфейс платформы или утилиту nmcli. При добавлении записей в файл /etc/network/interfaces возможен конфликт сетевых настроек.

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

Если узел был добавлен в платформе с версией ниже 2023.07.1, то его конфигурация будет перенесена в NetworkManager только после изменения настроек сети (например, добавления интерфейса) через интерфейс платформы.

Настройка подключения к узлам кластера


Корректное подключение узла гарантируется только при использовании учётной записи, отличной от root.

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

Уровень защищённости "Орёл"

  1. Добавьте публичный SSH-ключ сервера с платформой в файл /home/<username>/.ssh/authorized_keys, где <username> — имя пользователя, под которым платформа будет подключаться к серверу. Содержимое публичного ключа можно посмотреть в интерфейсе платформы на форме добавления узла кластера: раздел Узлы → кнопка Подключить узел → кнопка Хочу использовать публичный ssh-ключ.   
  2. Установите права для файла /home /<username>/.ssh/authorized_keys:

    sudo chmod 600 /home/<username>/.ssh/authorized_keys
    BASH
    sudo chown <username> /home/<username>/.ssh/authorized_keys
    BASH

    <username> — имя пользователя для подключения

  3. Проверьте права доступа на файл /home/<username>/.ssh/authorized_keys. Файл должен быть доступен на чтение и запись для пользователя, под которым платформа будет подключаться к серверу.

  4. В файле /etc/sudoers разрешите выполнение команд от имени суперпользователя: 

    %astra-admin ALL=(ALL:ALL) NOPASSWD: ALL
    %sudo ALL=(ALL:ALL) NOPASSWD: ALL
    CODE
  5. Подключите узел кластера по инструкции из статьи Управление серверами кластера.
  6. Настройте права пользователя для подключения: 

    sudo usermod -a -G astra-admin,kvm,libvirt,libvirt-qemu,libvirt-admin <username>
    BASH

    <username> — имя пользователя для подключения

Уровень защищённости "Воронеж"

Для создания ВМ с ОС Windows платформа использует директорию /opt/ispsystem/vm/tmp. В этой директории создаётся временный конфигурационный файл для установки ОС. После установки ОС файл удаляется.

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

  1. Убедитесь, что службы astra-sudo-control, astra-nochmodx-lock, astra-interpreters-lock отключены: 

    sudo astra-sudo-control disable
    
    BASH
    sudo astra-nochmodx-lock disable
    
    BASH
    sudo astra-interpreters-lock disable
    BASH
  2. Создайте директорию для хранения ВМ (например, /vm) и установите для неё мандатные атрибуты

    sudo mkdir /vm && sudo pdpl-file 0:63:0:ccnr /vm
    BASH

    /vm — имя директории

  3. Добавьте в файл /home/<username>/.ssh/authorized_keys публичный SSH-ключ сервера с платформой. Содержимое публичного ключа можно посмотреть в интерфейсе платформы на форме добавления узла кластера: Узлы Подключить узел → кнопка Хочу использовать публичный ssh-ключ

  4. Установите права для файла /home /<username>/.ssh/authorized_keys:

    sudo chmod 600 /home/<username>/.ssh/authorized_keys
    BASH
    sudo chown <username> /home/<username>/.ssh/authorized_keys
    BASH

    <username> — имя пользователя для подключения

  5. Проверьте права доступа на файл /home/<username>/.ssh/authorized_keys. Файл должен быть доступен на чтение и запись для пользователя, под которым платформа будет подключаться к серверу.

  6. В файле /etc/sudoers разрешите выполнение команд от имени суперпользователя: 

    %astra-admin ALL=(ALL:ALL) NOPASSWD: ALL
    %sudo ALL=(ALL:ALL) NOPASSWD: ALL
    CODE
  7. Подключите узел кластера по инструкции из статьи Управление серверами кластера.
  8. Настройте права пользователя для подключения: 

    sudo usermod -a -G astra-admin,kvm,libvirt,libvirt-qemu,libvirt-admin <username>
    BASH
    sudo pdpl-user -i 63 <username>
    BASH

    <username> — имя пользователя для подключения