По сути, EoIP является L2-каналом, который строится поверх L3-среды. Главное условие — адреса обеих сторон должны быть известны. Это может быть просто два маршрутизируемых IP или VPN (EOIP не обеспечивает шифрование). EoIP — штука пропиетарная (хотя попытки запилить поддержку этого типа тоннелей в LINUX/BSD предпринимались, но, в лучшем случае, это userspace-софт, а тут мы имеем ядерную (а значит, очень дешевую в плане ресурсов) технологию, позволяющую прокидывать действительно прозрачный L2.
Суть проста — два микротика связываются между собой, идентифицируясь по айпишникам (адреса обеих точек должны быть статическими и доступными друг для друга) и т.н. tunnel-id — идентификатору тоннеля.
После создания eoip-интерфейс объединяется с другим l2-интерфейсом при помощи моста. Т.о. получаем возможность прокидывать L2-трафик через всяческие помехи вроде других операторов, НАТы (тут нужна будет инкапсуляция в PPTP/L2TP) или просто провести несколько вланов через один l2-канал.
Главное, что нужно помнить:
1. EoIP не работает через NAT. IP обеих сторон должны быть маршрутизируемы
2. EoIP использует GRE в качестве транспорта, так что нужно следить за MTU.
3. Каждому l2-каналу, который вы хотите пробросить с помощью eoip, должен соответствовать свой тоннель. Один влан — один eoip-интерфейс.
4. Tunnel-id должен совпадать на обоих концах тоннеля и быть уникальным в рамках одного устройства (использование двух eoip-тоннелей с один tunnel—id, но разными соседними точками недопустимо).
Сначала мы создаем, собственно, сам тоннель. Потом создаем бридж, через который будет ходить наш трафик. Один бридж — один влан — один тоннель. Ну и добавляем в этот бридж сами интерфейсы — eoip, и второй l2-интерфейс, который, собственно, нам нужно прокинуть через l3.
Аналогичные действия производим на другой стороне. После этого EoIP-туннель можно считать работающим.
VLAN Tagging VS Присвоение нескольких IP-адресов одной сетевой карте
VLAN-тегирование – это не совсем то же самое, что присвоение нескольких IP-адресов одному сетевому интерфейсу.
VLAN-тегирование – это способ разделения одной сети на несколько виртуальных сетей, каждая из которых имеет свой собственный широковещательный домен. Для этого к каждому кадру Ethernet добавляется метка VLAN, которая идентифицирует VLAN, к которой принадлежит кадр. Тегирование VLAN является технологией второго уровня, то есть работает на том же уровне, что и протокол Ethernet.
Назначение нескольких IP-адресов одному сетевому интерфейсу, напротив, является технологией третьего уровня. Для этого сетевой интерфейс конфигурируется с несколькими IP-адресами, каждый из которых принадлежит к отдельной подсети. Это позволяет интерфейсу взаимодействовать с устройствами в нескольких сетях.
Эти две технологии часто используются вместе для создания безопасной и гибкой сетевой среды. Например, компания может использовать VLAN для разделения сети на различные отделы, а затем назначить несколько IP-адресов каждому сетевому интерфейсу, чтобы устройства могли взаимодействовать с несколькими отделами.
Вот таблица, в которой кратко описаны основные различия между тегами VLAN и назначением нескольких IP-адресов одному сетевому интерфейсу:
После выполнения этих шагов модуль VLAN должен быть загружен и доступен для настройки VLAN в вашей системе Linux. При необходимости можно приступить к созданию подинтерфейсов VLAN и настройке тегов VLAN.
Шаг 2 – Редактирование файла конфигурации Netplan
Файлы конфигурации Netplan обычно располагаются в каталоге /etc/netplan/ и имеют расширение .yaml.
Возможно, у вас уже есть файл конфигурации. Если нет, то его можно создать. Используйте текстовый редактор, например nano или vim, для редактирования файла конфигурации:
sudo nano /etc/netplan/01-netcfg.yaml
Замените 01-netcfg.yaml на свой файл конфигурации.
Шаг 3 – Определение конфигурации VLAN
В конфигурационном файле Netplan определите интерфейс VLAN, указав его имя, родительский интерфейс (физический интерфейс, с которым будет связана VLAN) и VLAN ID.
В приведенном конфигурационном файле замените сетевые параметры, соответствующие вашей собственной конфигурации.
ens18: Замените на имя физического сетевого интерфейса.
vlan10: Замените имя VLAN.
id: 10: Замените на желаемый идентификатор VLAN.
link: ens18: Укажите физический интерфейс, с которым будет ассоциирована VLAN.
addresses: Задайте IP-адрес и маску подсети для VLAN.
Вы также можете определить несколько VLAN, как показано в следующей конфигурации. Только убедитесь, что вы использовали уникальное имя и IP-адрес для каждой VLAN.
Важно:
Правильный отступ строк в конфигурационных файлах Netplan YAML очень важен для удобства чтения и корректности. В YAML используются пробелы для представления структуры данных, поэтому последовательный и четкий отступ крайне важен.
Используйте пробелы (не табуляции) для отступа.
Сохраняйте последовательный интервал во всей конфигурации.
Оставляйте пробел после двоеточия, чтобы отделить ключи от значений или блоков.
Правильный отступ улучшает читаемость, минимизирует ошибки и облегчает управление файлами конфигурации сети.
Шаг 4 – Применение конфигурации
Сохраните изменения в конфигурационном файле Netplan и выйдите из текстового редактора. Затем примените конфигурацию с помощью команды netplan:
sudo netplan apply
Эта команда применит новую конфигурацию сети, включая настройку VLAN.
Шаг 5 – Проверка конфигурации
Убедиться в том, что интерфейс VLAN создан и работает правильно, можно с помощью команды ip:
ip addr show vlan10
ip link show vlan10
Замените vlan10 на имя интерфейса VLAN. Эти команды должны отобразить информацию об интерфейсе VLAN и его IP-конфигурации.
Вот и все! Вы настроили тегирование VLAN с помощью Netplan. Обязательно адаптируйте конфигурацию к конкретной сетевой настройке, включая идентификатор VLAN, IP-адрес и имя физического интерфейса, если это необходимо.
Шаг 6 – Удаление VLAN
Чтобы удалить интерфейс VLAN, просто удалите соответствующий раздел для vlan в конфигурационном файле Netplan.
Перед внесением изменений рекомендуется сделать резервную копию конфигурационного файла Netplan. Таким образом, если что-то пойдет не так, вы сможете легко вернуться к исходной конфигурации.
Удалите всю секцию для VLAN. Сохраните и закройте файл.
Примените изменения, выполнив:
sudo netplan apply
Убедитесь, что VLAN успешно удалена, проверив сетевые интерфейсы:
ip a
Интерфейс VLAN (например, vlan10) больше не должен быть в списке.
2. Настройка тегов VLAN с помощью команды nmcli
Чтобы настроить теги VLAN с помощью nmcli (командно-строчного интерфейса NetworkManager) в системе Linux, выполните следующие шаги:
Шаг 1 – Проверка загрузки модуля VLAN
Для проверки загрузки модуля VLAN (8021q) в Linux можно воспользоваться командой lsmod, которая выводит список загруженных модулей ядра. Вот как проверить, загружен ли модуль VLAN:
Если модуль VLAN загружен, вы увидите вывод, включающий «8021q». Если ничего не выводится, значит, модуль не загружен.
Если вы обнаружили, что модуль VLAN не загружен, вы можете загрузить его вручную с помощью команды modprobe:
sudo modprobe 8021q
После выполнения этой команды можно еще раз проверить его состояние с помощью команды lsmod | grep 8021q. Если модуль загружен, то в выводе появится его список.
Чтобы модуль VLAN (8021q) постоянно загружался при загрузке системы в Linux-системе, выполните следующие действия:
Определите, какой конфигурационный файл используется для указания модулей для автоматической загрузки при загрузке системы. Расположение этого файла зависит от дистрибутива Linux.
Для Red Hat/CentOS:
Обычно файл находится в каталоге /etc/modules-load.d/modules.conf.
Для Ubuntu/Debian:
Создайте собственный файл .conf в каталоге /etc/modules-load.d/.
Откройте файл конфигурации с помощью текстового редактора с правами администратора (например, sudo nano или sudo vi ).
В файле конфигурации добавьте строку для указания модуля VLAN ( 8021q ), который должен загружаться при загрузке. Например:
8021q
Сохраните файл после добавления этой записи.
Применить конфигурацию:
После редактирования конфигурационного файла может потребоваться применить внесенные изменения. В некоторых системах это происходит автоматически во время загрузки. Однако можно применить изменения вручную с помощью команды systemctl:
Чтобы убедиться, что модуль VLAN загружен при загрузке, можно проверить его состояние с помощью команды lsmod или проверить системные журналы на наличие соответствующих сообщений. Если модуль отображается в списке, это означает, что он успешно загрузился в процессе загрузки.
Выполнив эти шаги и настроив модуль VLAN на постоянную загрузку, вы обеспечите автоматическую загрузку модуля при каждой загрузке системы, и вам не придется загружать его вручную.
Шаг 2 – Проверка службы NetworkManager
Убедитесь, что NetworkManager установлен и работает в вашей системе. Проверить состояние NetworkManager можно с помощью следующей команды:
systemctl status NetworkManager
Если он не установлен или не работает, его можно установить и запустить с помощью менеджера пакетов вашего дистрибутива (например, apt в Debian/Ubuntu или yum в CentOS/RHEL).
Шаг 3 – Определение родительского интерфейса
Определите физический сетевой интерфейс, который будет использоваться в качестве базового для вашей VLAN. Список всех доступных сетевых интерфейсов можно получить с помощью следующей команды:
nmcli device status
Пример вывода:
DEVICE TYPE STATE CONNECTION
ens18 ethernet connected Wired connection 1
lo loopback unmanaged --
Найдите нужный интерфейс, например ens18.
Шаг 4 – Создание подключения VLAN
Следующим шагом будет создание интерфейса VLAN. Для данного примера предположим, что вы хотите создать VLAN с ID 10 на eth0.
sudo nmcli con add type vlan con-name vlan10 ifname vlan10 dev ens18 id 10
con-name vlan10 – имя, которое вы даете этому соединению.
ifname vlan10 – имя интерфейса VLAN.
dev ens18 – родительский интерфейс.
id 10 – ID VLAN.
Шаг 5 – Назначение IP-конфигурации интерфейсу VLAN
Теперь назначьте IP-адрес, шлюз и DNS интерфейсу VLAN.
В приведенных выше командах замените сетевые настройки на свои.
Замените 192.168.10.2/24 на желаемый IP-адрес и подсеть.
Замените 192.168.10.1 на IP-адрес шлюза.
8.8.8.8 – пример DNS-сервера (публичный DNS Google).
Шаг 6 – Активация соединения
Активируйте VLAN-соединение с помощью следующей команды:
sudo nmcli connection up vlan10
Замените VLAN10 на имя вашего VLAN-соединения.
Шаг 7 – Проверка конфигурации
Для проверки конфигурации можно использовать команду nmcli:
nmcli connection show vlan10
Эта команда отобразит подробную информацию о VLAN-соединении, включая его состояние и настроенные свойства.
Шаг 8 – Изменение/удаление VLAN
Вы можете изменить настройки с помощью команды nmcli con modify. Для удаления VLAN. например, vlan10, команда будет выглядеть так:
sudo nmcli con delete vlan10
Вот и все! Вы настроили маркировку VLAN с помощью команды nmcli в своей системе Linux. Обязательно адаптируйте конфигурацию к конкретной настройке сети и требованиям, включая IP-адреса, шлюз и настройки DNS.
3. Настройка тегирования VLAN с помощью команды ip в Linux
Шаг 1. Проверьте, загружен ли модуль VLAN
Чтобы убедиться, что модуль VLAN (802.1Q) загружен в системе Linux, выполните следующие действия:
Для проверки того, загружен ли уже модуль VLAN, можно воспользоваться командой lsmod, которая выводит список загруженных модулей ядра. Откройте терминал и выполните:
Если в выводе присутствует «8021q», значит, модуль VLAN уже загружен.
Если команда lsmod не отображает модуль 802.1Q, его можно загрузить вручную с помощью команды modprobe. Откройте терминал и выполните:
sudo modprobe 8021q
Эта команда загрузит модуль VLAN в ядро. Если вы не увидите никаких сообщений об ошибках, значит, модуль успешно загружен.
Чтобы модуль VLAN загружался автоматически при загрузке, вы можете добавить его в файл /etc/modules или создать конфигурационный файл в каталоге /etc/modules-load.d/. Например, чтобы добавить его в /etc/modules, выполните:
echo '8021q' | sudo tee -a /etc/modules
Это добавит «8021q« в список модулей, которые автоматически загружаются при старте системы.
Шаг 2 – Проверка имен сетевых интерфейсов
Перед настройкой тегов VLAN необходимо узнать имена сетевых интерфейсов.
Для получения списка доступных сетевых интерфейсов можно воспользоваться командами ip link show или ifconfig. Обычно эти интерфейсы имеют имена типа enp0sX или, ensX или, ethX.
ip link show
Пример вывода:
1: lo:<LOOPBACK,UP,LOWER_UP>mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
altname enp0s18
Как видно из приведенного выше вывода, имеется один сетевой интерфейс с именем ens18.
Шаг 3 – Создание подинтерфейсов VLAN
Для создания подинтерфейсов VLAN для физического сетевого интерфейса используйте команду ip. Замените имя физического интерфейса (например, ens18 ) и желаемый VLAN ID.
sudo ip link add link ens18 name vlan10 type vlan id 10
sudo ip link add link ens18 name vlan20 type vlan id 20
Шаг 4 – Настройка IP-адресов
Назначьте IP-адреса субинтерфейсам VLAN.
sudo ip addr add 192.168.10.2/24 dev vlan10
sudo ip addr add 192.168.20.2/24 dev vlan20
Шаг 5 – Включить интерфейсы VLAN
sudo ip link set dev vlan10 up
sudo ip link set dev vlan20 up
Таким образом, вы можете настроить столько VLAN, сколько необходимо для вашей установки.
Шаг 6 – Проверка IP-адресов VLAN
Используйте команду ip для проверки правильности настройки IP-адресов для VLAN.
ip a
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: ens18:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.168.1.40/24 brd 192.168.1.255 scope global noprefixroute ens18
valid_lft forever preferred_lft forever
inet6 fe80::bfcf:b9d3:60de:af1b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: vlan10@ens18:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 scope global ens18.10
valid_lft forever preferred_lft forever
inet6 fe80::6c26:bff:fe8e:338c/64 scope link
valid_lft forever preferred_lft forever
4: vlan20@ens18:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.20.2/24 scope global ens18.20
valid_lft forever preferred_lft forever
inet6 fe80::6c26:bff:fe8e:338c/64 scope link
valid_lft forever preferred_lft forever
Как видно из приведенного выше результата, я создал две VLAN: vlan10 и vlan20 с IP-адресами 192.168.10.2/24 и 192.168.20.2/24 соответственно.
Также можно использовать команду ip addr show для просмотра IP-адреса только определенной VLAN. Например, чтобы показать IP-адрес vlan10, выполните команду:
ip addr show vlan10
3: vlan10@ens18:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 brd 192.168.10.255 scope global noprefixroute ens18.10
valid_lft forever preferred_lft forever
inet6 fe80::6c26:bff:fe8e:338c/64 scope link
valid_lft forever preferred_lft forever
Заключение
В данном руководстве мы рассмотрели три способа настройки тегов VLAN в операционных системах Linux.
В сетевых технологиях Linux теги VLAN – это полезная техника, которая позволяет создавать изолированные виртуальные сети в рамках одной физической сети. Такое разделение повышает безопасность, упрощает управление сетью и увеличивает общую эффективность сети.
Независимо от того, управляете ли вы домашней сетью или сложной корпоративной средой, понимание и внедрение VLAN-тегов в Linux позволяет настроить сеть в соответствии с вашими специфическими потребностями, повышая функциональность и безопасность.