Создание интерфейсов VLAN в Linux с помощью команды ip

CompTIABeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь настраивать интерфейсы виртуальных локальных сетей (VLAN) в системе Linux с использованием команды ip из пакета iproute2. Вы получите практический опыт создания логически разделенных сетей на одном физическом интерфейсе, что является фундаментальным навыком для сетевого администрирования и сегментации. Этот процесс позволяет изолировать сетевой трафик и повысить безопасность и производительность без дополнительного физического оборудования.

Вы начнете с подготовки системы, которая включает установку необходимых пользовательских утилит vlan и загрузку модуля ядра 802.1q для включения VLAN-тегирования. После первоначальной настройки вы определите основной сетевой интерфейс, создадите два новых виртуальных интерфейса для VLAN 10 и VLAN 20 и назначите каждому статический IP-адрес. Наконец, вы используете команду ip a для проверки успешного создания и активации интерфейсов VLAN в системе.

Установка утилит VLAN и загрузка модуля ядра 802.1q

На этом этапе вы подготовите вашу среду Linux для настройки VLAN. Это включает два ключевых действия: установку необходимых пользовательских инструментов и загрузку требуемого модуля ядра.

Виртуальная локальная сеть (VLAN) позволяет создавать логически разделенные сети на одной и той же физической сетевой инфраструктуре. Для управления VLAN в Linux вам нужен пакет vlan, который предоставляет инструменты командной строки. Кроме того, ядро должно понимать трафик с VLAN-тегами, что обеспечивается модулем ядра 8021q, названным в честь стандарта сетевых технологий IEEE 802.1Q для VLAN.

Сначала давайте убедимся, что ваш список пакетов обновлен, а затем установим пакет vlan. Все команды будут выполняться в терминале.

  1. Обновите индекс пакетов в вашей системе:

    sudo apt update
    
  2. Установите пакет vlan. Флаг -y автоматически подтверждает установку.

    sudo apt install -y vlan
    

    Вы должны увидеть вывод, указывающий на установку пакета.

    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    The following NEW packages will be installed:
      vlan
    0 upgraded, 1 newly installed, 0 to remove and XX not upgraded.
    Need to get XX.X kB of archives.
    After this operation, XXX kB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 vlan X.X-X [XX.X kB]
    Fetched XX.X kB in Xs (XX.X kB/s)
    Selecting previously unselected package vlan.
    (Reading database ... XXXXXX files and directories currently installed.)
    Preparing to unpack .../vlan_X.X-X_amd64.deb ...
    Unpacking vlan (X.X-X) ...
    Setting up vlan (X.X-X) ...
    

Теперь, когда инструменты установлены, вам нужно загрузить модуль ядра 8021q. Этот модуль позволяет ядру Linux обрабатывать сетевые пакеты с VLAN-тегами.

  1. Загрузите модуль 8021q с помощью команды modprobe:

    sudo modprobe 8021q
    

    Эта команда обычно не выводит ничего при успешном выполнении.

  2. Чтобы убедиться, что модуль загружен правильно, вы можете вывести список всех загруженных модулей с помощью lsmod и отфильтровать вывод по 8021q с помощью grep.

    lsmod | grep 8021q
    

    Вывод должен показать модуль 8021q, подтверждая, что он активен в ядре.

    8021q                  36864  0
    garp                   20480  1 8021q
    mrp                    20480  1 8021q
    

Ваша система теперь готова к настройке VLAN. На следующем шаге вы определите ваш сетевой интерфейс и начнете создавать VLAN.

Определение основного сетевого интерфейса

На этом этапе вы определите имя основного сетевого интерфейса в вашей системе. Интерфейсы VLAN — это виртуальные интерфейсы, которые логически привязаны к физическому сетевому интерфейсу. Поэтому, прежде чем создавать на нем какие-либо VLAN, вы должны сначала узнать имя этого физического "родительского" интерфейса.

Мы будем использовать команду ip, которая является современным стандартом для сетевой конфигурации в Linux. В частности, команда ip a (или ip addr) отображает информацию обо всех сетевых интерфейсах.

  1. Откройте терминал. Ваша текущая рабочая директория — ~/project.

  2. Чтобы вывести список всех сетевых интерфейсов и их конфигураций, введите следующую команду и нажмите Enter:

    ip a
    

Вы увидите список всех сетевых интерфейсов в вашей системе. Ищите интерфейс, который активен и имеет назначенный ему IP-адрес. Вы можете игнорировать интерфейс lo, который является локальным устройством обратной связи (loopback). Имя основного интерфейса обычно начинается с en (для Ethernet) или eth.

Вот пример того, как может выглядеть вывод. В этом примере eth0 является основным физическим интерфейсом.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159924sec preferred_lft 1892159924sec
    inet6 fe80::216:3eff:fe00:406/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:f2:70:14:b5 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Из приведенного выше вывода обратите внимание на следующее:

  • eth0: Это имя интерфейса. Запомните это имя, так как оно вам понадобится на следующих шагах. Имя вашего интерфейса может отличаться (например, ens33).
  • state UP: Это указывает на то, что интерфейс активен.
  • inet 172.16.50.186/24: Это IPv4-адрес, назначенный интерфейсу.

Теперь, когда вы определили свой основной сетевой интерфейс, вы готовы к созданию на нем интерфейсов VLAN.

Создание виртуальных интерфейсов для VLAN 10 и VLAN 20

На этом шаге вы будете использовать команду ip для создания двух новых виртуальных сетевых интерфейсов. Каждый интерфейс будет связан с определенным идентификатором VLAN (VLAN ID), что позволит вашему хосту эффективно подключаться к двум различным логическим сетям: VLAN 10 и VLAN 20. Эти новые интерфейсы будут привязаны к основному физическому интерфейсу, который вы определили на предыдущем шаге.

Команда для создания интерфейса VLAN — ip link add. Давайте разберем ее структуру:

  • sudo ip link add: Базовая команда для добавления новой сетевой связи (интерфейса).
  • link <physical_interface>: Указывает родительский физический интерфейс. Замените <physical_interface> на имя, которое вы нашли в Шаге 2 (например, eth0).
  • name <vlan_interface_name>: Определяет имя для нового виртуального интерфейса. Распространенное соглашение — <physical_interface>.<vlan_id>, например, eth0.10.
  • type vlan: Указывает, что новый интерфейс имеет тип VLAN.
  • id <vlan_id>: Назначает числовой идентификатор VLAN (или тег).

Теперь давайте создадим интерфейсы. Не забудьте заменить eth0 на фактическое имя вашего физического интерфейса, если оно отличается.

  1. Сначала создайте виртуальный интерфейс для VLAN 10. Этот интерфейс будет называться eth0.10.

    sudo ip link add link eth0 name eth0.10 type vlan id 10
    
  2. Затем создайте виртуальный интерфейс для VLAN 20, назвав его eth0.20.

    sudo ip link add link eth0 name eth0.20 type vlan id 20
    

Если эти команды выполнены успешно, они не выведут никакого сообщения. Вы создали логические интерфейсы, но они еще не активны и не сконфигурированы с IP-адресами. Вы займетесь этим на следующем шаге.

Назначение IP-адресов и активация интерфейсов VLAN

На этом шаге вы активируете только что созданные интерфейсы VLAN и назначите им IP-адреса. После создания сетевые интерфейсы по умолчанию находятся в состоянии DOWN (выключено), что означает, что они отключены и не могут отправлять или получать трафик. Чтобы сделать их функциональными, вам необходимо активировать их и предоставить адреса сетевого уровня.

Для активации интерфейсов мы будем использовать команду ip link set up, а для назначения IP-адресов — ip addr add.

  1. Сначала вам нужно активировать, или "поднять", интерфейсы VLAN. Это позволит им участвовать в сетевом обмене. Выполните следующие команды в терминале. Не забудьте использовать имя вашего интерфейса, если оно отличается от eth0.

    Активация интерфейса eth0.10:

    sudo ip link set dev eth0.10 up
    

    Активация интерфейса eth0.20:

    sudo ip link set dev eth0.20 up
    

    Эти команды не выведут никакого сообщения в случае успеха.

  2. Теперь, когда интерфейсы активны, вы можете назначить каждому из них IP-адрес. Мы назначим адрес из сети 192.168.10.0/24 для VLAN 10 и адрес из сети 192.168.20.0/24 для VLAN 20. Обозначение /24 — это CIDR-нотация для маски подсети 255.255.255.0.

    Назначение 192.168.10.10/24 интерфейсу eth0.10:

    sudo ip addr add 192.168.10.10/24 dev eth0.10
    

    Назначение 192.168.20.10/24 интерфейсу eth0.20:

    sudo ip addr add 192.168.20.10/24 dev eth0.20
    

Ваши интерфейсы VLAN теперь полностью настроены и активны для текущей сессии. На последнем шаге вы проверите полную конфигурацию.

Проверка конфигурации интерфейсов VLAN с помощью команды ip a

На этом заключительном шаге вы проверите, были ли успешно созданы, активированы и сконфигурированы ваши интерфейсы VLAN с правильными IP-адресами. Повторное выполнение команды ip a покажет вам полную сетевую конфигурацию вашего хоста, включая новые виртуальные интерфейсы.

  1. В терминале выполните команду ip a, чтобы отобразить информацию обо всех сетевых интерфейсах.

    ip a
    
  2. Внимательно изучите вывод. Теперь вы должны увидеть ваши новые интерфейсы VLAN, eth0.10 и eth0.20, перечисленные вместе с вашими физическими интерфейсами и интерфейсом обратной петли (loopback).

    Вывод будет выглядеть примерно так:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
        inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159924sec preferred_lft 1892159924sec
    3: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.10/24 brd 192.168.10.255 scope global eth0.10
           valid_lft forever preferred_lft forever
    4: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
        inet 192.168.20.10/24 brd 192.168.20.255 scope global eth0.20
           valid_lft forever preferred_lft forever
    

Обратите внимание на следующие ключевые детали ваших новых интерфейсов:

  • eth0.10@eth0 и eth0.20@eth0: Имена интерфейсов VLAN. Часть @eth0 явно указывает, что они связаны с физическим устройством eth0.
  • state UP: Подтверждает, что оба интерфейса активны и готовы к передаче данных.
  • inet 192.168.10.10/24 и inet 192.168.20.10/24: IP-адреса, которые вы назначили на предыдущем шаге, сконфигурированы правильно.

Поздравляем! Вы успешно настроили один Linux-хост для участия в двух разных VLAN. Это демонстрирует, как сервер может взаимодействовать в нескольких логических сетевых сегментах, используя одно физическое соединение.

Примечание о сохранении настроек: Команды ip, которые вы использовали, создают временную конфигурацию, которая будет потеряна после перезагрузки. В производственной среде вы бы сделали эти изменения постоянными, отредактировав файлы конфигурации сети, такие как те, что используются Netplan (/etc/netplan/*.yaml), или более старой системой ifupdown (/etc/network/interfaces).

Резюме

В этой лабораторной работе вы изучили полный процесс создания и настройки интерфейсов VLAN в системе Linux с использованием команды ip. Вы начали с подготовки среды, которая включала установку пакета vlan для утилит пользовательского пространства и загрузку модуля ядра 8021q для включения обработки VLAN-тегов. Этот основополагающий шаг гарантирует, что система сможет понимать и управлять VLAN-трафиком.

После первоначальной настройки вы определили основной физический сетевой интерфейс, который будет служить родительским для VLAN. Затем вы использовали команду ip link для создания двух отдельных виртуальных интерфейсов, один для VLAN 10 и другой для VLAN 20, связав их с родительским интерфейсом. Чтобы сделать эти интерфейсы функциональными, вы назначили каждому уникальный IP-адрес и активировали их. Процесс завершился использованием команды ip a для проверки того, что новые интерфейсы VLAN были успешно созданы, сконфигурированы с правильными IP-адресами и активны в сети.