понедельник, 8 сентября 2025 г.

ALT Linux: Настройка VMware VM Customization Specifications для ОС ALT Linux

К сожалению, при использовании "VM Customization Specifications" при развертывании ОС ALT Linux скрипты "open-vm-toos" не могут корректно сконфигурировать такие параметры как имя хоста, сетевые настройки и т.д. для данной системы.
Чтобы решить эту проблему, применим скрипт, который возьмет на себя функционал, не корректно работающий в самих тулзах.

Выполним следующие шаги для настройки "VM Customization Specifications":

1. Подготавливаем шаблон ОС ATL Linux с установкой необходимого ПО, которое уже должно быть в комплекте с новыми хостами.
2. Обязательно устанавливаем "open-vm-tools" и проверяем, что служба "vmtoolsd" находится в автозапуске:
sudo apt-get install open-vm-tools
sudo systemctl enable vmtoolsd && sudo systemctl start vmtoolsd


3. Включаем поддержку скриптов для кастомизации:
sudo vmware-toolbox-cmd config set deployPkg enable-custom-scripts true

Для проверки текущего состояния параметра выполните:
sudo vmware-toolbox-cmd config get deployPkg enable-custom-scripts

4. Далее настраиваем "VM Customization Specifications" на vCenter Server. При настройке указываем: тип ОС - Linux, правило формирования имени хоста, часовой пояс, TCP/IP настройки и добавляем следующий скрипт:

#!/bin/bash

# Функция для преобразования маски подсети в префикс CIDR
mask2cidr() {
    local mask=$1
    local n=0
    IFS=.
    for byte in $mask; do
        case $byte in
            255) n=$((n+8));;
            254) n=$((n+7));;
            252) n=$((n+6));;
            248) n=$((n+5));;
            240) n=$((n+4));;
            224) n=$((n+3));;
            192) n=$((n+2));;
            128) n=$((n+1));;
            0);;
            *) echo 24; return 1;;
        esac
    done
    echo $n
}

# Функция определения метода управления сетью
get_network_manager() {
    local interface=$1
    local options_file="/etc/net/ifaces/$interface/options"

    # Проверяем существование файла настроек
    if [ -f "$options_file" ]; then
        local nm_controlled=$(grep -E "^NM_CONTROLLED=" "$options_file" | cut -d= -f2)
        local disabled=$(grep -E "^DISABLED=" "$options_file" | cut -d= -f2)
        local systemd_controlled=$(grep -E "^SYSTEMD_CONTROLLED=" "$options_file" | cut -d= -f2)

        if [ "$nm_controlled" = "yes" ]; then
            echo "NetworkManager"
        elif [ "$disabled" = "no" ]; then
            echo "EtcNet"
        elif [ "$systemd_controlled" = "yes" ]; then
            echo "SystemD"
        else
            echo "Unknown"
        fi
    else
        # Если файл не существует, проверяем активные сервисы
        if systemctl is-active NetworkManager >/dev/null 2>&1; then
            echo "NetworkManager"
        elif systemctl is-active systemd-networkd >/dev/null 2>&1 && \
             systemctl is-active systemd-resolved >/dev/null 2>&1; then
            echo "SystemD"
        elif systemctl is-active network >/dev/null 2>&1; then
            echo "EtcNet"
        else
            echo "Unknown"
        fi
    fi
}

# Функция настройки NetworkManager
configure_networkmanager() {
    local interface=$1
    local bootproto=$2
    local ipaddr=$3
    local netmask=$4
    local gateway=$5
    local dns_servers=$6
    local domain=$7

    # Создаем или модифицируем соединение
    if [ "$bootproto" = "static" ]; then
        local prefix_length=$(mask2cidr "$netmask")
        nmcli con add type ethernet con-name "$interface" ifname "$interface" ip4 "$ipaddr/$prefix_length" gw4 "$gateway"
        if [ -n "$dns_servers" ]; then
            nmcli con mod "$interface" ipv4.dns "$dns_servers"
        fi
        if [ -n "$domain" ]; then
            nmcli con mod "$interface" ipv4.dns-search "$domain"
        fi
    else
        nmcli con add type ethernet con-name "$interface" ifname "$interface" ipv4.method auto
    fi

    # Активируем соединение
    nmcli con up "$interface"
}

# Функция настройки EtcNet
configure_etcnet() {
    local interface=$1
    local bootproto=$2
    local ipaddr=$3
    local netmask=$4
    local gateway=$5
    local dns_servers=$6
    local domain=$7

    local iface_dir="/etc/net/ifaces/$interface"

    mkdir -p "$iface_dir"

    # Обновляем файл options в зависимости от типа настройки
    if [ -f "$iface_dir/options" ]; then
        # Обновляем существующий файл options, сохраняя другие параметры
        if [ "$bootproto" = "static" ]; then
            # Удаляем старые параметры BOOTPROTO и SYSTEMD_BOOTPROTO если есть
            sed -i '/^BOOTPROTO=/d' "$iface_dir/options"
            sed -i '/^SYSTEMD_BOOTPROTO=/d' "$iface_dir/options"
            # Добавляем новые параметры
            echo "BOOTPROTO=static" >> "$iface_dir/options"
            echo "SYSTEMD_BOOTPROTO=static" >> "$iface_dir/options"
        else
            # Удаляем старые параметры BOOTPROTO и SYSTEMD_BOOTPROTO если есть
            sed -i '/^BOOTPROTO=/d' "$iface_dir/options"
            sed -i '/^SYSTEMD_BOOTPROTO=/d' "$iface_dir/options"
            # Добавляем новые параметры
            echo "BOOTPROTO=dhcp" >> "$iface_dir/options"
            echo "SYSTEMD_BOOTPROTO=dhcp4" >> "$iface_dir/options"
        fi
    else
        # Создаем новый файл options
        if [ "$bootproto" = "static" ]; then
            cat > "$iface_dir/options" <<EOF
BOOTPROTO=static
SYSTEMD_BOOTPROTO=static
EOF
        else
            cat > "$iface_dir/options" <<EOF
BOOTPROTO=dhcp
SYSTEMD_BOOTPROTO=dhcp4
EOF
        fi
    fi

    if [ "$bootproto" = "static" ]; then
        # Записываем IP-адрес с префиксом CIDR
        PREFIX_LENGTH=$(mask2cidr "$netmask")
        if [ -z "$PREFIX_LENGTH" ]; then
            PREFIX_LENGTH=24
        fi
        echo "$ipaddr/$PREFIX_LENGTH" > "$iface_dir/ipv4address"

        # Записываем маршрут по умолчанию
        if [ -n "$gateway" ]; then
            echo "default via $gateway" > "$iface_dir/ipv4route"
        fi

        # Настраиваем DNS через resolv.conf в директории интерфейса
        if [ -n "$dns_servers" ]; then
            # Создаем resolv.conf в директории интерфейса
            echo "# Generated by network configuration script" > "$iface_dir/resolv.conf"
            if [ -n "$domain" ]; then
                echo "domain $domain" >> "$iface_dir/resolv.conf"
                echo "search $domain" >> "$iface_dir/resolv.conf"
            fi

            # Добавляем DNS-серверы
            for dns in $dns_servers; do
                echo "nameserver $dns" >> "$iface_dir/resolv.conf"
            done
        fi

        # Освобождаем DHCP-аренду для интерфейса
        if command -v /sbin/dhcpcd >/dev/null 2>&1; then
            /sbin/dhcpcd -k "$interface" 2>/dev/null || true
        fi
    else
        # Для DHCP очищаем возможные предыдущие статические настройки
        rm -f "$iface_dir/ipv4address"
        rm -f "$iface_dir/ipv4route"
        rm -f "$iface_dir/resolv.conf"

        # Файл type больше не создаем, как было указано в требованиях
    fi

    # Добавляем интерфейс в порядок обработки
    local order_file="/etc/net/ifaces.order"
    if ! grep -q "^$interface$" "$order_file" 2>/dev/null; then
        echo "$interface" >> "$order_file"
    fi

    # Перезапускаем сеть
    systemctl restart network
}

# --- Функция очистки логов и временных файлов ---
clean_system() {
    # Очистка логов (с сохранением структуры каталогов)
    find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
    find /var/log -type f -name "*.gz" -delete
    find /var/log -type f -name "*.old" -delete
    find /var/log -type f -name "lastlog" -exec rm -f {} \;

    # Очистка временных файлов
    rm -rf /tmp/*
    rm -rf /var/tmp/*

    # Очистка истории команд и пользовательских данных
    for user_home in /home/*; do
        if [[ -d "$user_home" ]]; then
            user=$(basename "$user_home")
            # Очистка bash_history и других историй
            truncate -s 0 "$user_home/.bash_history" 2>/dev/null || true
            # Очистка кэшей приложений
            rm -rf "$user_home/.cache/*" 2>/dev/null || true
        fi
    done
    # Очистка root
    truncate -s 0 /root/.bash_history 2>/dev/null || true
    rm -rf /root/.cache/* 2>/dev/null || true

    # Удаление случайных seed-файлов
    rm -f /var/lib/systemd/random-seed
}

# --- Функция удаления SSH host keys ---
reset_ssh_keys() {
    rm -f /etc/ssh/ssh_host_*
    # Ключи будут сгенерированы при следующем запуске SSH-сервера
}

if [ "$1" = "precustomization" ]; then
    # Выполняем очистку системы
    clean_system
    reset_ssh_keys

    # Проверяем и создаем директорию /etc/sysconfig/network-scripts если нужно
    if [ ! -d "/etc/sysconfig/network-scripts" ]; then
        mkdir -p /etc/sysconfig/network-scripts
    fi
    # Этап предварительной настройки
    VMCUST_DIR=$(ls -d /var/run/.vmware-imgcust* 2>/dev/null | head -n 1)
    if [ -n "$VMCUST_DIR" ]; then
        CUST_CFG_PATH="$VMCUST_DIR/cust.cfg"
        if [ -f "$CUST_CFG_PATH" ]; then
            cp "$CUST_CFG_PATH" "/root/cust.cfg"
        fi
    fi
elif [ "$1" = "postcustomization" ]; then
    # Этап пост-настройки
    if [ ! -f "/root/cust.cfg" ]; then
        exit 1
    fi

    CFG_FILE="/root/cust.cfg"

    # Парсим параметры конфигурации
    BOOTPROTO=$(awk -F' = ' '/^BOOTPROTO/ {line=$2} END{print tolower(line)}' "$CFG_FILE")
    IPADDR=$(awk -F' = ' '/^IPADDR/ {line=$2} END{print line}' "$CFG_FILE")
    NETMASK=$(awk -F' = ' '/^NETMASK/ {line=$2} END{print line}' "$CFG_FILE")
    GATEWAY=$(awk -F' = ' '/^GATEWAY/ {line=$2} END{print line}' "$CFG_FILE")
    HOSTNAME=$(awk -F' = ' '/^HOSTNAME/ {line=$2} END{print line}' "$CFG_FILE")
    DOMAIN=$(awk -F' = ' '/^DOMAINNAME/ {line=$2} END{print line}' "$CFG_FILE")
    MACADDR=$(awk -F' = ' '/^MACADDR/ {line=$2} END{print tolower(line)}' "$CFG_FILE")
    DNS_SERVERS=$(awk -F' = ' '/^NAMESERVER\|[0-9]/ {print $2}' "$CFG_FILE" | tr '\n' ' ')
    DNS_FROM_DHCP=$(awk -F' = ' '/^DNSFROMDHCP/ {line=$2} END{print tolower(line)}' "$CFG_FILE")
    TIMEZONE=$(awk -F' = ' '/^TIMEZONE/ {line=$2} END{print line}' "$CFG_FILE")
    UTC=$(awk -F' = ' '/^UTC/ {line=$2} END{print tolower(line)}' "$CFG_FILE")

    # Определяем сетевой интерфейс
    INTERFACE=$(ip -o link | awk -v mac="$MACADDR" 'tolower($0) ~ mac {gsub(":", "", $2); print $2}')
    if [ -z "$INTERFACE" ]; then
        INTERFACE=$(ip route | awk '/default/ {print $5; exit}')
    fi

    # Определяем метод управления сетью
    NET_MGR=$(get_network_manager "$INTERFACE")

    case "$NET_MGR" in
        "NetworkManager")
            configure_networkmanager "$INTERFACE" "$BOOTPROTO" "$IPADDR" "$NETMASK" "$GATEWAY" "$DNS_SERVERS" "$DOMAIN"
            ;;
        "EtcNet")
            configure_etcnet "$INTERFACE" "$BOOTPROTO" "$IPADDR" "$NETMASK" "$GATEWAY" "$DNS_SERVERS" "$DOMAIN"
            ;;
        "SystemD")
            # Существующая настройка SystemD
            rm -f /etc/systemd/network/*.network
            rm -f /etc/systemd/resolved.conf.d/*.conf

            # Создаем базовую конфигурацию для loopback-интерфейса
            cat > /etc/systemd/network/00-loopback.network <<EOF
[Match]
Name=lo

[Network]
Address=127.0.0.1/8
Address=::1/128
EOF

            # Создаем конфигурацию для основного интерфейса
            CONFIG_FILE="/etc/systemd/network/alterator-${INTERFACE}.network"

            if [ "$BOOTPROTO" = "static" ]; then
                if [ -z "$IPADDR" ] || [ -z "$NETMASK" ]; then
                    exit 1
                fi

                PREFIX_LENGTH=$(mask2cidr "$NETMASK")
                if [ -z "$PREFIX_LENGTH" ]; then
                    PREFIX_LENGTH=24
                fi

                # Создаем конфиг для статического IP с DNS
                cat > "$CONFIG_FILE" <<EOF
[Match]
Name=$INTERFACE

[Network]
Address=$IPADDR/$PREFIX_LENGTH
Gateway=$GATEWAY
EOF

                # Добавляем DNS серверы, если нужно
                if { [ "$BOOTPROTO" = "static" ] || [ "$DNS_FROM_DHCP" = "no" ]; } && [ -n "$DNS_SERVERS" ]; then
                    for dns in $DNS_SERVERS; do
                        echo "DNS=$dns" >> "$CONFIG_FILE"
                    done
                fi
            else
                # Создаем конфиг для DHCP
                cat > "$CONFIG_FILE" <<EOF
[Match]
Name=$INTERFACE

[Network]
DHCP=ipv4

[DHCPv4]
UseDomains=true
UseDNS=yes
EOF

                # Добавляем DNS серверы, если указано не использовать DNS от DHCP
                if [ "$DNS_FROM_DHCP" = "no" ] && [ -n "$DNS_SERVERS" ]; then
                    for dns in $DNS_SERVERS; do
                        echo "DNS=$dns" >> "$CONFIG_FILE"
                    done
                fi
            fi

            systemctl restart systemd-networkd
            systemctl restart systemd-resolved
            ;;
        *)
            echo "Неизвестный метод управления сетью"
            exit 1
            ;;
    esac

    # Общие настройки
    hostnamectl set-hostname "$HOSTNAME"
    sed -i "/127\.0\.1\.1/d" /etc/hosts
    echo "127.0.1.1 $HOSTNAME.$DOMAIN $HOSTNAME" >> /etc/hosts

     # Настройка часового пояса
    if [ -n "$TIMEZONE" ]; then
        timedatectl set-timezone "$TIMEZONE"
    fi

    # Настройка формата времени BIOS (UTC или локальное)
    if [ -n "$UTC" ]; then
        if [ "$UTC" = "yes" ]; then
            # Устанавливаем UTC время в BIOS
            timedatectl set-local-rtc 0
        else
            # Устанавливаем локальное время в BIOS
            timedatectl set-local-rtc 1
        fi
    fi

    # Сохраняем конфигурацию
    {
        echo "CONFIG_SOURCE=$CFG_FILE"
        echo "BOOTPROTO=$BOOTPROTO"
        echo "INTERFACE=$INTERFACE"
        echo "HOSTNAME=$HOSTNAME"
        echo "DOMAIN=$DOMAIN"
        echo "TIMEZONE=$TIMEZONE"
        echo "UTC=$UTC"
        [ -n "$DNS_FROM_DHCP" ] && echo "DNS_FROM_DHCP=$DNS_FROM_DHCP"
        [ -n "$DNS_SERVERS" ] && echo "DNS_SERVERS=\"$DNS_SERVERS\""
    }

    if [ "$BOOTPROTO" = "static" ]; then
        {
            echo "IP_ADDRESS=$IPADDR"
            echo "NETMASK=$NETMASK"
            echo "PREFIX_LENGTH=$PREFIX_LENGTH"
            [ -n "$GATEWAY" ] && echo "GATEWAY=$GATEWAY"
        }
    fi
    rm -f "/root/cust.cfg"
##############################################################################################
    # МЕСТО ДЛЯ ДОПОЛНИТЕЛЬНОЙ НАСТРОЙКИ СИСТЕМЫ
    # Здесь можно добавить команды для окончательной настройки машины:
    # - Доустановка необходимого программного обеспечения
    # - Настройка через Ansible или другие системы управления конфигурациями
    # - Выполнение пользовательских скриптов
    # - Настройка мониторинга, логирования и других сервисов
##############################################################################################
fi

Данный скрипт охватывает все возможные варианты настройки сети: EtcNet, NetworkManager, Systemd-Networkd, как со статическим IP, так и с DHCP.

среда, 18 июня 2025 г.

Windows: Активация LDAP over SSL (LDAPS) при помощи стороннего центра сертификации (CA)

Рассмотрим вариант настройки протокола LDAPS (LDAP over SSL) с использованием стороннего центра сертификации для домена mydomain.local с тремя контроллерами: DC1,DC2,DC3:

1. Создадим шаблон запроса сертификата в виде файла <имя>.inf для каждого контроллера домена. Замените <имя> на FQDN контроллера (например DC1.mydomain.local):

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=DC1.mydomain.local" ; FQDN текущего контроллера
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=DC1.mydomain.local&" ; FQDN текущего
_continue_ = "dns=DC1&" ; короткое имя текущего
_continue_ = "dns=DC2.mydomain.local&" ; FQDN других контроллеров
_continue_ = "dns=DC2&"
_continue_ = "dns=DC3.mydomain.local&"
_continue_ = "dns=DC3&"
_continue_ = "dns=ldap.mydomain.local&" ; виртуальное имя для переключения
_continue_ = "dns=mydomain.local&" ; домен верхнего уровня
_continue_ = "dns=MYDOMAIN" ; NetBIOS-имя домена


Важно:
Для балансировки в раздел [Extensions] необходимо добавить FQDN домена и всех контроллеров домена, а также их NetBIOS имена. Кроме того можно дополнительно прописать отказоустойчивые DNS записи, например "ldap.mydomain.local".

Сохраните файл на каждом контроллере (например, C:\Cert\DC1.inf).

2. Сгенерируем CSR для каждого контроллера. Для этого создадим запросы на сертификаты через командную строку (на каждом контроллере):
certreq -new C:\Cert\<имя>.inf C:\Cert\<имя>.csr

3. Теперь необходимо отправить CSR в сторонний ЦС. Передайте файлы DC1.csr, DC2.csr, DC3.csr администратору внешнего ЦС и получите обратно подписанные сертификаты (DC1.cer, DC2.cer, DC3.cer или DC1.p7b, DC2.p7b, DC3.p7b) от ЦС.

4. Установим сертификаты на контроллеры домена. Для этого выполним на каждом контроллере домена команду импорта:
certreq -accept C:\Cert\<имя>.cer

Чтобы проверить установленный сертификат, откройте "mmc", добавьте оснастку "Сертификаты (локальный компьютер)". Убедитесь, что сертификат отображается в Личное → Сертификаты и имеет закрытый ключ.

5. Для завершения настройки LDAPS на контроллерах при включенном брандмауэре откройте 636 порт:
New-NetFirewallRule -DisplayName "LDAPS" -Direction Inbound -Protocol TCP -LocalPort 636 -Action Allow

6. Перезапустите службу LDAP или перезагрузите сервера:
Restart-Service NTDS -Force

7. Проверьте работу LDAPS при помощи "ldp.exe" - выполните подключение к контроллеру домена, указав порт 636 и галочку "SSL".


Отключение незашифрованного LDAP (опционально):

Откройте "Управление групповыми политиками" и выберите "Default Domain Controllers Policy".
Перейдите: "Конфигурация компьютера → Политики → Конфигурация Windows → Параметры безопасности → Контроллер домена: требование цифровой подписи для LDAP-сервера".
Установите параметр: "Требуется цифровая подпись".
Перегрузите контроллеры домена для применения изменений.

понедельник, 26 мая 2025 г.

Windows: Удаление раздела восстановления с диска

Иногда такой раздел мешает в виртуальной среде расширить системный диск с ОС Windows. Для удаления запустите консоль с повышенными привилегиями и выполните:

1. Сначала отключите среду восстановления:
reagentc /disable

2. Затем запустите:
diskpart
list volume


Обратите внимание на номер тома для раздела восстановления, запомните его.

3. Удалите раздел:
select volume N
delete volume override
exit


где N - номер вашего раздела восстановления.

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

пятница, 23 мая 2025 г.

Windows: Отключение Azure Arc Setup в Windows Server 2022 и выше

С конца 2024 года вместе с обновлениями Windows приходит новый компонент "Azure Arc Setup", предназначенный для управления Azure ресурсами. Если вы не используете данный функционал, рекомендуется его отключить. Для этого откройте консоль PowerShell с повышенными привилегиями и выполните:

Для Windows 2022:
Disable-WindowsOptionalFeature -Online -FeatureName AzureArcSetup
(Также для Windows 2022 можно отключить данную функцию через выключение компонентов в "Диспетчере серверов")

Для Windows 2025:
DISM /online /Remove-Capability /CapabilityName:AzureArcSetup~~~~

После этого необходимо будет перезагрузить хост.

вторник, 20 мая 2025 г.

ALT Linux: Различные методы настройки синхронизации времени по протоколу NTP

Точная синхронизация времени критична для работы распределенных систем, журналирования событий, безопасности и других задач. В ALT Linux доступны следующие методы настройки NTP (Network Time Protocol): chrony, systemd-timesyncd, ntpd. Перед конфигурированием убедитесь, что другие сервисы синхронизации времени остановлены и отключены.


Настройка Chrony:

Chrony — современное решение для синхронизации с поддержкой работы в условиях нестабильных сетей. В ALT Linux включен по умолчанию. Для настройки выполните следующие шаги:

1. Установите пакет, настройте автозагрузку и запустите сервис:
sudo apt-get update && sudo apt-get install chrony
sudo systemctl enable --now chronyd


2. Откройте файл "/etc/chrony.conf" и укажите NTP-серверы или пулы:
server ntp1.example.com iburst
server ntp2.example.com iburst


или
pool pool.ntp.org iburst

где:
iburst — ускорение начальной синхронизации;
server — использование отдельных серверов;
pool — использование пула серверов.

3. Перезапустите сервис:
sudo systemctl restart chronyd

4. Выполните проверку статуса и просмотрите лог:
chronyc sources -v
chronyc tracking
journalctl -u chronyd



Настройка systemd-timesyncd:

systemd-timesyncd — это легковесный клиент, интегрированный в systemd. Для настройки выполните следующие шаги:

1. Установите пакет:
sudo apt-get update && sudo apt-get install systemd-timesyncd

2. Активируйте сервис:
sudo timedatectl set-ntp true

3. Отредактируйте "/etc/systemd/timesyncd.conf":
[Time]
NTP=ntp1.example.com ntp2.example.com


4. Примените изменения:
sudo systemctl restart systemd-timesyncd

5. Выполните проверку:
timedatectl show-timesync


Настройка ntpd (устаревший метод):

NTPd — это классическая реализация NTP. Для настройки этого метода выполните следующие шаги:

1. Установите пакет:
sudo apt-get update && sudo apt-get install ntp

2. Отредактируйте конфигурационный файл "/etc/ntp.conf":
server ntp1.example.com
server ntp2.example.com


3. Настройте автозагрузку и запустите сервис:
sudo systemctl enable ntpd && sudo systemctl start ntpd

4. Выполните проверку:
ntpq -p

четверг, 15 мая 2025 г.

ALT Linux: Настройка подключения по SSH для пользователя "root"

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

1. Установите или проверьте, что установлен пакет "openssh":
sudo apt-get install openssh

2. Отредактируйте конфигурационный файл:
sudo nano /etc/openssh/sshd_config
Раскомментируйте и установите значение в "yes" параметра "PermitRootLogin".

3. Перезапустите демон:
sudo systemctl restart sshd

Если служба была не запущена - включите и запустите:
sudo systemctl enable --now sshd

4. Пробуйте установить подключение по SSH пользователем "root".

четверг, 10 апреля 2025 г.

ALT Linux: Различные способы настройки сетевых интерфейсов

Для просмотра драйверов сетевых адаптеров выполните:
lspci -k | grep -A2 Ethernet
Список сетевых интерфейсов можно увидеть командой:
ls /sys/class/net
Допустим наш интерфейс называется "ens33".


Настройки интерфейсов с помощью утилиты "ip".

ip link show   #Просмотр сетевых подключений
ip -s l   #Просмотр статистики по отправленным/полученным пакетам
ip address show   #Просмотр конфигурации TCP/IP
ip link set dev ens33 up   #Включение интерфейса, если он был выключен
ip address flush dev ens33   #Сброс конфигурации интерфейса
ip addr add 192.168.0.5/24 broadcast + dev ens33   #Установка IP и маски
ip addr del 192.168.0.5/24 dev ens33   #Удаление IP и маски (в случае ошибки)
ip route show   #Просмотр таблицы маршрутизации
ip route add default via 192.168.0.1 dev ens33   #Установка шлюза по умолчанию
ip route delete default   #Удаление шлюза по умолчанию
ip route add 192.168.10.0/24 via 192.168.0.254 dev ens33   #Добавление маршрута
ip route del 192.168.10.0/24 dev ens33 #Удаление маршрута
echo "nameserver 192.168.0.1 8.8.8.8" | sudo tee /etc/resolv.conf   #Добавление DNS

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


Настройка сетевой подсистемы "Etcnet".

1. Установите пакет и запустите службу:
sudo apt-get install etcnet
sudo systemctl enable --now network


2. Для настройки интерфейса необходимо создать или отредактировать уже имеющийся файлы в директории "/etc/net/ifaces/ens33/", где "ens33" - имя сетевого интерфейса.
В файле "options" настройте следующие параметры:

Для DHCP:

BOOTPROTO=dhcp #Использует DHCP
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=dhcp4
CONFIG_IPV4=yes #Включает поддержку IPv4 для интерфейса.
DISABLED=no #Yes-когда не используется Etcnet
NM_CONTROLLED=no #Yes-когда используется NetworkManager
SYSTEMD_CONTROLLED=no #Yes-когда используется Systemd-Networkd
ONBOOT=yes #Активирует интерфейс при загрузке системы.



Для статического IP:

BOOTPROTO=static #Использует статический IP
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPV4=yes #Включает поддержку IPv4 для интерфейса.
DISABLED=no #Yes-когда не используется Etcnet
NM_CONTROLLED=no #Yes-когда используется NetworkManager
SYSTEMD_CONTROLLED=no #Yes-когда используется Systemd-Networkd
ONBOOT=yes #Активирует интерфейс при загрузке системы.


Создайте рядом файл "ipv4address" со следующим содержимым:
192.168.0.5/24 #IP и маска

Создайте рядом файл "ipv4route" со следующим содержимым:
default via 192.168.0.1 #Шлюз по умолчанию
192.168.10.0/24 via 192.168.0.254 #Статические маршруты


Создайте рядом файл "resolv.conf" со следующим содержимым:
nameserver 192.168.0.1 #DNS1
nameserver 8.8.8.8 #DNS2


3. Перезапустите интерфейс:
sudo ifdown ens33 && sudo ifup ens33
или службу:
sudo systemctl restart network

4. Выполните проверки настроек:
ip address show
ip route show
resolvconf -l



При необходимости удаления компонентов "Etcnet" выполните:
sudo apt-get remove etcnet
sudo rm -f /etc/net
sudo rm -f /etc/resolv.conf
   #Удалить симлинк


Настройка сетевой подсистемы "NetworkManager".

1. Установите NetworkManager:
sudo apt-get install NetworkManager

2. Включите и запустите службу:
sudo systemctl enable --now NetworkManager

3. Сконфигурируйте сетевой интерфейс с помощью терминальной утилиты "nmtui" ("sudo apt-get install NetworkManager-tui") или в командной строке утилитой "nmcli":

Просмотр:
nmcli con show   #Просмотр сетевых подключений
nmcli dev show ens33  
#Просмотр активного соединения на "ens33"
nmcli con show 'Wired connection 1'  
#Просмотр параметров подключения

Настройки для DHCP:
nmcli con mod 'Wired connection 1' ipv4.method auto
nmcli con mod 'Wired connection 1' ipv4.addresses "" ipv4.gateway ""
nmcli con mod 'Wired connection 1' ipv4.dns ""
nmcli con mod 'Wired connection 1' ipv4.routes ""
nmcli con up 'Wired connection 1'


Настройки для статического IP:
nmcli con mod 'Wired connection 1' ipv4.addresses 192.168.0.5/24
nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.0.1
nmcli con mod 'Wired connection 1' ipv4.dns "192.168.0.1 8.8.8.8"
nmcli con mod 'Wired connection 1' +ipv4.routes "192.168.10.0/24 192.168.0.254"
nmcli con mod 'Wired connection 1' ipv4.method manual
nmcli con up 'Wired connection 1'


4. Выполните проверки настроек:
ip address show
ip route show
resolvconf -l



При необходимости удаления компонентов "NetworkManager" выполните:
sudo apt-get remove NetworkManager openresolv
sudo rm -rf /etc/NetworkManager/   #Удалить основные настройки
sudo rm -rf /var/lib/NetworkManager/   #Удалить служебные данные
sudo rm -f /etc/resolv.conf   #Удалить симлинк


Настройка сетевой подсистемы "systemd-networkd".

1. Установите службы "systemd-networkd" и "systemd-resolved", добавьте их в автозапуск:
sudo apt-get install systemd-networkd
sudo systemctl enable --now systemd-networkd
sudo systemctl enable --now systemd-resolved


2. Создайте файл конфигурации (расширение ".network" обязательно):
sudo nano /etc/systemd/network/20-wired.network

Настройки для DHCP:

[Match]
Name=ens33
[Network]
DHCP=ipv4


Настройки для статического IP:

[Match]
Name=ens33
[Network]
Address=192.168.0.5/24
Gateway=192.168.0.1
DNS=192.168.0.1 8.8.8.8
[Route]
Destination=192.168.10.0/24
Gateway=192.168.0.254
Metric=10   #Опционально


3. Перезапустите службу:
sudo systemctl restart systemd-networkd

4. Выполните проверки настроек:
ip address show
ip route show
resolvectl



При необходимости удаления компонентов "systemd-networkd" выполните:
sudo systemctl stop systemd-networkd systemd-resolved
sudo apt-get remove systemd-networkd

sudo rm -rf /etc/systemd/network/*
   #Удалить конфигурации сетевых интерфейсов
sudo rm -f /etc/resolv.conf   #Удалить симлинк


Общие рекомендации!!!
Для простых конфигураций серверов и виртуальных машин используйте "systemd-networkd", все остальные модули рекомендуется в этом случае удалить:
sudo apt-get remove etcnet NetworkManager openresolv dhcpcd
sudo rm -rf /etc/net   #Удалить настройки Etcnet
sudo rm -rf /etc/NetworkManager/   #Удалить основные настройки NM
sudo rm -rf /var/lib/NetworkManager/   #Удалить служебные данные NM
sudo rm -f /etc/resolv.conf   #Удалить симлинк