Как настроить VLAN и сетевые интерфейсы в Astra Linux
1) Загрузка модуля 8021q
Section titled “1) Загрузка модуля 8021q”Проверьте, что модуль загружен:
lsmod | grep 8021qЧтобы модуль загружался автоматически:
echo "8021q" | sudo tee /etc/modules-load.d/vlan.confИзменения применятся после перезагрузки.
2) Постоянные имена интерфейсов через udev
Section titled “2) Постоянные имена интерфейсов через udev”Создайте или отредактируйте файл:
sudo nano /etc/udev/rules.d/70-persistent-net.rulesПример содержимого:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="1c:57:d8:16:df:62", NAME="P-U-S3-N1"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="1c:57:d8:16:df:63", NAME="RES_PORT_02"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:98", NAME="P-U-L3-M1"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:99", NAME="P-U-L2-M1"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:96", NAME="RES_PORT_05"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:97", NAME="RES_PORT_06"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:58", NAME="P-U-L3-R1"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:59", NAME="P-U-L2-R1"SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:3a:56", NAME="RES_PORT_09"Важно: буквы в MAC-адресах должны быть строчными, иначе интерфейсы не будут сопоставлены с правилами.
Сохранение в nano: Ctrl+O, выход: Ctrl+X.
3) Конфигурация интерфейсов для networking.service
Section titled “3) Конфигурация интерфейсов для networking.service”Отключите NetworkManager:
sudo systemctl stop NetworkManagersudo systemctl disable NetworkManagersudo systemctl mask NetworkManagerСоздайте или отредактируйте файл:
sudo nano /etc/network/interfacesПример конфигурации:
# Loopback interfaceauto loiface lo inet loopback
# ----- 1-й порт (первый слева во встроенной двухпортовой карте) P-U-S3-N1auto P-U-S3-N1iface P-U-S3-N1 inet staticaddress 10.6.124.6netmask 255.255.255.0
# ----- 2-й порт (второй слева во встроенной двухпортовой карте)# auto RES_PORT_2# iface RES_PORT_2 inet static# address 127.0.0.1# netmask 255.255.255.0
# ----- 3-й порт (первый слева сверху)auto P-U-L3-M1iface P-U-L3-M1 inet staticaddress 10.6.84.6netmask 255.255.255.0
# ----- 4-й порт# Настройка для первого VLAN, удалить после настройки L3-коммутатораauto P-U-L2-M1iface P-U-L2-M1 inet staticaddress 10.6.64.6netmask 255.255.255.0
# VLAN 1858auto P-U-L2-M1.1858iface P-U-L2-M1.1858 inet staticvlan-raw-device P-U-L2-M1address 10.6.66.6netmask 255.255.255.0post-up ip route add 10.6.64.0/24 via 10.6.66.1 dev P-U-L2-M1.1858 || truepost-up ip route add 10.6.92.0/24 via 10.6.66.1 dev P-U-L2-M1.1858 || true
## ----- 5-й порт# auto RES_PORT_05# iface RES_PORT_05 inet static# address 127.0.0.1# netmask 255.255.255.0
## ----- 6-й порт# auto RES_PORT_06# iface RES_PORT_06 inet static# address 127.0.0.1# netmask 255.255.255.0
# ----- 7-й портauto P-U-L3-R1iface P-U-L3-R1 inet staticaddress 10.6.88.6netmask 255.255.255.0
# ----- 8-й порт# Настройка для первого VLAN, удалить после настройки L3-коммутатораauto P-U-L2-R1iface P-U-L2-R1 inet staticaddress 10.6.74.6netmask 255.255.255.0
auto P-U-L2-R1.1868iface P-U-L2-R1.1868 inet staticvlan-raw-device P-U-L2-R1address 10.6.76.6netmask 255.255.255.0post-up ip route add 10.6.74.0/24 via 10.6.76.1 dev P-U-L2-R1.1868 || truepost-up ip route add 10.6.104.0/24 via 10.6.76.1 dev P-U-L2-R1.1868 || trueПримените изменения:
sudo systemctl restart networking4) Скрипт восстановления VLAN-интерфейсов
Section titled “4) Скрипт восстановления VLAN-интерфейсов”Создайте каталог:
sudo mkdir -p /etc/network/if-pre-up.d/Создайте файл скрипта:
sudo nano /etc/network/if-pre-up.d/fix-vlanСодержимое скрипта:
#!/bin/bash
CONFIG_FILE="/etc/network/interfaces"LOG_FILE="/var/log/fix-vlan-interfaces.log"
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"}
log "Starting VLAN interfaces check"
while IFS= read -r line; do if [[ $line =~ ^auto[[:space:]]+([^[:space:]]+\.[0-9]+) ]]; then vlan_iface="${BASH_REMATCH[1]}" base_iface="${vlan_iface%%.*}" vlan_id="${vlan_iface##*.}"
if ip link show "$vlan_iface" >/dev/null 2>&1; then log "VLAN interface $vlan_iface already exists" continue fi
log "Trying to recreate $vlan_iface"
# 1) Стандартное создание VLAN-интерфейса if ip link add link "$base_iface" name "$vlan_iface" type vlan id "$vlan_id" 2>> "$LOG_FILE"; then ip link set "$vlan_iface" up log "Successfully created $vlan_iface" continue fi
# 2) Поиск и переименование временного интерфейса found=false for temp_iface in $(ip -o link show | awk -F': ' '{print $2}' | grep "@$base_iface"); do temp_name="${temp_iface%@*}" log "Found temporary interface: $temp_iface" ip link set "$temp_name" down
if ip link set "$temp_name" name "$vlan_iface"; then ip link set "$vlan_iface" up log "Successfully renamed $temp_name to $vlan_iface" found=true break fi done
if ! $found; then log "Failed to restore $vlan_iface" fi fidone < "$CONFIG_FILE"
log "Finished VLAN interfaces check"Сделайте скрипт исполняемым:
sudo chmod +x /etc/network/if-pre-up.d/fix-vlan5) Проверка после перезагрузки
Section titled “5) Проверка после перезагрузки”Состояние интерфейсов:
ip aНаличие VLAN-интерфейсов:
ip -d link showПример вывода:

Ищите строку vlan protocol 802.1Q id 1868:

Маршруты:
ip route

Лог скрипта:
cat /var/log/fix-vlan-interfaces.log