Подключение серверов к VLAN
Это руководство объясняет, как настроить VLAN на серверах Linux для изоляции и управления сетевым трафиком. Ниже описаны шаги для Ubuntu 22.04, Debian 11 и AlmaLinux 9 / Rocky Linux 9.
Перед настройкой VLAN на сервере убедитесь, что порт коммутатора настроен правильно. Для VLAN с тегами порт коммутатора должен разрешать необходимые VLAN ID. Для трафика без тегов порт должен работать в режиме access с назначенной соответствующей VLAN.
Проверка модуля ядра 8021q
Во всех дистрибутивах перед настройкой VLAN убедитесь, что модуль ядра 8021q загружен:
lsmod | grep 8021q
Если модуль не загружен, выполните:
sudo modprobe 8021q
Чтобы загружать модуль автоматически, добавьте его в /etc/modules:
echo "8021q" | sudo tee -a /etc/modules
Ubuntu 22.04
Ubuntu 22.04 использует netplan для настройки сети.
Определение сетевого интерфейса
Выполните следующую команду, чтобы определить имя интерфейса:
ip link show
В приведённых ниже примерах используется интерфейс enp0s8.
Настройка сети для порта access без тегов
В этом разделе описывается назначение статического IP-адреса непосредственно физическому интерфейсу без создания VLAN-подинтерфейса.
Откройте файл конфигурации netplan:
sudo nano /etc/netplan/*.yaml
Добавьте следующую конфигурацию. Используйте разные IP-адреса на каждом сервере:
Сервер 1:
network: version: 2 ethernets: enp0s8: dhcp4: no addresses: - 192.168.1.1/24 routes: - to: default via: 192.168.1.254
Сервер 2:
network: version: 2 ethernets: enp0s8: dhcp4: no addresses: - 192.168.1.2/24 routes: - to: default via: 192.168.1.254
Параметр gateway4 устарел начиная с netplan 0.100 и вызывает предупреждение. Используйте вместо него routes:, как показано выше.
Проверьте конфигурацию перед применением. Команда ожидает подтверждение до 120 секунд, а затем автоматически возвращает предыдущую конфигурацию, если подтверждение не получено. Это особенно полезно на удалённых серверах:
sudo netplan try
Если конфигурация корректна, примените её:
sudo netplan apply
Проверьте, что адрес назначен:
ip addr show enp0s8
Настройка VLAN с тегами
Откройте файл конфигурации netplan и добавьте VLAN-интерфейсы. Используйте разные IP-адреса для каждого сервера в каждой VLAN:
Сервер 1:
network: version: 2 ethernets: enp0s8: dhcp4: no vlans: vlan10: id: 10 link: enp0s8 addresses: - 192.168.10.1/24 vlan20: id: 20 link: enp0s8 addresses: - 192.168.20.1/24
Сервер 2:
network: version: 2 ethernets: enp0s8: dhcp4: no vlans: vlan10: id: 10 link: enp0s8 addresses: - 192.168.10.2/24 vlan20: id: 20 link: enp0s8 addresses: - 192.168.20.2/24
Использование одинаковых IP-адресов приведёт к конфликту. Каждый сервер должен иметь уникальный IP-адрес в каждой VLAN.
Обычно только один VLAN-интерфейс должен иметь шлюз по умолчанию. Назначение шлюза нескольким VLAN-интерфейсам может привести к проблемам с маршрутизацией, если не настроена расширенная маршрутизация.
Проверьте и примените конфигурацию:
sudo netplan try sudo netplan apply
Проверьте результат:
ip addr
Чтобы проверить корректность работы VLAN tagging:
ip -d link show vlan10 ip -d link show vlan20
Проверьте соединение:
ping 192.168.10.2 ping 192.168.20.2
Debian 11
Debian 11 использует файл /etc/network/interfaces для настройки сети.
Установка пакета vlan
В чистой установке Debian перед настройкой VLAN-интерфейсов установите пакет vlan:
sudo apt update sudo apt install vlan
Определение сетевого интерфейса
ip link show
В приведённых ниже примерах используется интерфейс enp0s8.
Настройка сети для порта access без тегов
В этом разделе описывается назначение статического IP-адреса непосредственно физическому интерфейсу без создания VLAN-подинтерфейса.
Добавьте следующую конфигурацию в /etc/network/interfaces на каждом сервере.
Команда ip addr add назначает адрес временно, и это назначение не сохранится после перезагрузки. Используйте постоянную конфигурацию ниже, чтобы сохранить настройку.
Сервер 1:
auto enp0s8 iface enp0s8 inet static address 192.168.1.1/24 gateway 192.168.1.254
Сервер 2:
auto enp0s8 iface enp0s8 inet static address 192.168.1.2/24 gateway 192.168.1.254
Примените конфигурацию без перезагрузки:
sudo systemctl restart networking
Проверьте, что адрес активен:
ip addr
Проверьте, что серверы могут обращаться друг к другу:
ping 192.168.1.2
Настройка VLAN с тегами
Добавьте VLAN-интерфейсы в /etc/network/interfaces на каждом сервере. Используйте разные IP-адреса для каждого сервера в каждой VLAN.
Сервер 1:
auto enp0s8.10 iface enp0s8.10 inet static address 192.168.10.1/24 gateway 192.168.10.254 auto enp0s8.20 iface enp0s8.20 inet static address 192.168.20.1/24
Сервер 2:
auto enp0s8.10 iface enp0s8.10 inet static address 192.168.10.2/24 gateway 192.168.10.254 auto enp0s8.20 iface enp0s8.20 inet static address 192.168.20.2/24
Примените конфигурацию:
Перезапуск сетевой службы на удалённом сервере может прервать текущую SSH-сессию.
sudo systemctl restart networking
Проверьте результат:
ip addr
Чтобы проверить корректность работы VLAN tagging:
ip -d link show enp0s8.10 ip -d link show enp0s8.20
Проверьте соединение:
ping 192.168.10.2 ping 192.168.20.2
AlmaLinux 9 / Rocky Linux 9
AlmaLinux 9 и Rocky Linux 9 используют NetworkManager для настройки сети. Рекомендуемым инструментом для управления подключениями является nmcli. Старый подход с использованием /etc/sysconfig/network-scripts/ не поддерживается в дистрибутивах на базе RHEL 9.
Определение сетевого интерфейса
nmcli device status
В приведённых ниже примерах используется интерфейс enp0s8.
Проверка существующих подключений
Перед добавлением нового подключения проверьте, существует ли уже профиль подключения для интерфейса:
nmcli connection show
Если на enp0s8 активно существующее подключение, удалите его, чтобы избежать конфликтов. Используйте имя профиля точно так, как оно указано в выводе выше. Пропустите этот шаг, если существующий профиль был создан вашим хостинг-провайдером или cloud-init:
nmcli connection delete "Wired connection 1"
Настройка сети для порта access без тегов
Назначьте статический IP-адрес физическому интерфейсу.
Сервер 1:
nmcli connection add type ethernet con-name "enp0s8-primary" ifname enp0s8 \ ipv4.method manual ipv4.addresses 192.168.1.1/24 \ ipv4.gateway 192.168.1.254 \ connection.autoconnect yes nmcli connection up enp0s8-primary
Сервер 2:
nmcli connection add type ethernet con-name "enp0s8-primary" ifname enp0s8 \ ipv4.method manual ipv4.addresses 192.168.1.2/24 \ ipv4.gateway 192.168.1.254 \ connection.autoconnect yes nmcli connection up enp0s8-primary
Проверьте, что адрес назначен:
ip addr show enp0s8
Проверьте соединение между серверами:
ping 192.168.1.2
Настройка VLAN с тегами
Создайте VLAN-интерфейс поверх физического интерфейса. Используйте разные IP-адреса на каждом сервере для каждой VLAN.
Сервер 1:
nmcli connection add type vlan con-name vlan10 ifname enp0s8.10 \ vlan.parent enp0s8 vlan.id 10 \ ipv4.method manual ipv4.addresses 192.168.10.1/24 \ connection.autoconnect yes nmcli connection add type vlan con-name vlan20 ifname enp0s8.20 vlan.parent enp0s8 vlan.id 20 ipv4.method manual ipv4.addresses 192.168.20.1/24 connection.autoconnect yes nmcli connection up vlan10 nmcli connection up vlan20
Сервер 2:
nmcli connection add type vlan con-name vlan10 ifname enp0s8.10 \ vlan.parent enp0s8 vlan.id 10 \ ipv4.method manual ipv4.addresses 192.168.10.2/24 \ connection.autoconnect yes nmcli connection add type vlan con-name vlan20 ifname enp0s8.20 vlan.parent enp0s8 vlan.id 20 ipv4.method manual ipv4.addresses 192.168.20.2/24 connection.autoconnect yes nmcli connection up vlan10 nmcli connection up vlan20
Использование одинаковых IP-адресов приведёт к конфликту. Каждый сервер должен иметь уникальный IP-адрес в каждой VLAN.
Проверьте результат:
ip addr
Чтобы проверить корректность работы VLAN tagging:
ip -d link show enp0s8.10 ip -d link show enp0s8.20
Проверьте соединение:
ping 192.168.10.2 ping 192.168.20.2
Устранение неполадок
Если VLAN-интерфейсы не появляются или не получают трафик:
- проверьте, что порт коммутатора разрешает необходимые VLAN ID;
- убедитесь, что vSwitch или группа портов гипервизора настроены для передачи VLAN-тегов;
- убедитесь, что в конфигурации указан правильный родительский интерфейс;
- проверьте, что модуль ядра 8021q загружен: lsmod | grep 8021q.