Skip to content

Как настроить VLAN и сетевые интерфейсы в Astra Linux

← К списку вопросов

Проверьте, что модуль загружен:

Terminal window
lsmod | grep 8021q

Чтобы модуль загружался автоматически:

Terminal window
echo "8021q" | sudo tee /etc/modules-load.d/vlan.conf

Изменения применятся после перезагрузки.

2) Постоянные имена интерфейсов через udev

Section titled “2) Постоянные имена интерфейсов через udev”

Создайте или отредактируйте файл:

Terminal window
sudo nano /etc/udev/rules.d/70-persistent-net.rules

Пример содержимого:

Terminal window
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:

Terminal window
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl mask NetworkManager

Создайте или отредактируйте файл:

Terminal window
sudo nano /etc/network/interfaces

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

/etc/network/interfaces
# Loopback interface
auto lo
iface lo inet loopback
# ----- 1-й порт (первый слева во встроенной двухпортовой карте) P-U-S3-N1
auto P-U-S3-N1
iface P-U-S3-N1 inet static
address 10.6.124.6
netmask 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-M1
iface P-U-L3-M1 inet static
address 10.6.84.6
netmask 255.255.255.0
# ----- 4-й порт
# Настройка для первого VLAN, удалить после настройки L3-коммутатора
auto P-U-L2-M1
iface P-U-L2-M1 inet static
address 10.6.64.6
netmask 255.255.255.0
# VLAN 1858
auto P-U-L2-M1.1858
iface P-U-L2-M1.1858 inet static
vlan-raw-device P-U-L2-M1
address 10.6.66.6
netmask 255.255.255.0
post-up ip route add 10.6.64.0/24 via 10.6.66.1 dev P-U-L2-M1.1858 || true
post-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-R1
iface P-U-L3-R1 inet static
address 10.6.88.6
netmask 255.255.255.0
# ----- 8-й порт
# Настройка для первого VLAN, удалить после настройки L3-коммутатора
auto P-U-L2-R1
iface P-U-L2-R1 inet static
address 10.6.74.6
netmask 255.255.255.0
auto P-U-L2-R1.1868
iface P-U-L2-R1.1868 inet static
vlan-raw-device P-U-L2-R1
address 10.6.76.6
netmask 255.255.255.0
post-up ip route add 10.6.74.0/24 via 10.6.76.1 dev P-U-L2-R1.1868 || true
post-up ip route add 10.6.104.0/24 via 10.6.76.1 dev P-U-L2-R1.1868 || true

Примените изменения:

Terminal window
sudo systemctl restart networking

4) Скрипт восстановления VLAN-интерфейсов

Section titled “4) Скрипт восстановления VLAN-интерфейсов”

Создайте каталог:

Terminal window
sudo mkdir -p /etc/network/if-pre-up.d/

Создайте файл скрипта:

Terminal window
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
fi
done < "$CONFIG_FILE"
log "Finished VLAN interfaces check"

Сделайте скрипт исполняемым:

Terminal window
sudo chmod +x /etc/network/if-pre-up.d/fix-vlan

5) Проверка после перезагрузки

Section titled “5) Проверка после перезагрузки”

Состояние интерфейсов:

Terminal window
ip a

Наличие VLAN-интерфейсов:

Terminal window
ip -d link show

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

Пример проверки VLAN-интерфейса

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

Пример строки VLAN в выводе

Маршруты:

Terminal window
ip route

Пример таблицы маршрутов 1 Пример таблицы маршрутов 2

Лог скрипта:

Terminal window
cat /var/log/fix-vlan-interfaces.log