Підключення серверів до 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.