- Настройка VLAN на Linux CentOS 7
- Способ 1. VLAN как сабинтерфейс
- Способ 2. VlanXX
- vlan_name_type
- Использование vconfig
- Возможные проблемы
- No suitable device found for this connection
- VLAN не заработал
- Linux как посмотреть vlan
- Contents
- Instant Configuration
- Create the VLAN device
- Add an IP
- Turning down the device
- Removing the device
- Persistent Configuration
- systemd-networkd
- Single interface
- Single interface with multiple VLANs each with its own gateway
- Bonded interface
- netctl
- Setting bridge IP
- Troubleshooting
- udev renames the virtual devices
- Настройка VLAN интерфейса в Linux CentOS/Fedora/RHEL
- Создаем VLAN через subinterface
- Настройка VLAN через отдельный файл vlanXX
- Используем NetworkManager для настройки VLAN интерфейса
- Настройка временного VLAN с помощью утилиты vconfig
- Настройка VLAN в Linux
Настройка VLAN на Linux CentOS 7
В операционной системе CentOS предусмотрено два варианта именования VLAN — как subinterface (например, ens32.5) или vlanXX (vlan5). В зависимости от данного варианта, предусмотрен свой метод настройки. Каким способом пользоваться — дело каждого. В данной инструкции рассматриваются оба варианта.
Для примера, настраиваем VLAN с тегом 5 для ethernet-адаптера ens32.
Способ 1. VLAN как сабинтерфейс
Создаем следующий конфигурационный файл:
И приводим его к следующему виду:
ONBOOT=yes
TYPE=Ethernet
VLAN=yes
DEVICE=ens32.5
BOOTPROTO=static
IPADDR=192.168.0.15
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.2
DNS2=192.168.0.3
* в данном примере будет создан виртуальный интерфейс ens32.5 (5 vlan), который будет ассоциирован с физическим адаптером ens32. IP-адрес будет назначен 192.168.0.15, шлюз по умолчанию — 192.168.0.1, DNS адреса — 192.168.0.2 и 192.168.0.3.
Чтобы настройки вступили в силу, перезапускаем сетевую службу:
systemctl restart network
Способ 2. VlanXX
Создаем файл со следующим содержимым:
ONBOOT=yes
TYPE=Ethernet
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan5
PHYSDEV=ens32
VLAN_ID=5
BOOTPROTO=static
IPADDR=192.168.0.15
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.2
DNS2=192.168.0.3
* обратите внимание, что в данном варианте мы явно указываем, с каким физическим адаптером (ens32) будет связан виртуальный (vlan5).
Также перезапускаем сетевую службу:
systemctl restart network
vlan_name_type
Параметр vlan_name_type, который мы прописали в данном способе задает тип именования VLAN-интерфейса. Он может принимать следующие значения:
- VLAN_PLUS_VID — vlan00005
- VLAN_PLUS_VID_NO_PAD — vlan5
- DEV_PLUS_VID — ens32.00005
- DEV_PLUS_VID_NO_PAD — ens32.5
Использование vconfig
Утилита vconfig не сохраняет настройки для сетевых интерфейсов и после перезагрузки, все возвращается в предыдущее состояние. Она прекрасно подойдет для проведения тестов.
Сначала устанавливаем epel-репозиторий и утилиты следующей командой:
yum install epel-release
yum install vconfig ifconfig
Загружаем модуль ядра 8021q:
Для настройки vlan из нашего примера, выполняем следующую команду:
vconfig add ens32 5
Теперь задаем виртуальному адаптеру IP-адрес и включаем его:
ifconfig ens32.5 192.168.0.15 netmask 255.255.255.0 up
Возможные проблемы
No suitable device found for this connection
- Отсутствие в конфигурационном файле опции VLAN_ID (при настройке vlan-интерфейса — способ номер 2). Проверьте, что опция ест и ей соответствует правильный VLAN.
- Необходимо добавить опцию NM_CONTROLLED=no в настройки vlan-интерфейса. Данная настройка отключает использование Network Manager для соответствующего интерфейса.
VLAN не заработал
Пробуем опцию TYPE=Ethernet заменить на TYPE=VLAN или убрать ее полностью.
Источник
Linux как посмотреть vlan
Virtual LANs give you the ability to sub-divide a LAN. Linux can accept VLAN tagged traffic and presents each VLAN ID as a different network interface (eg: eth0.100 for VLAN ID 100 )
This article explains how to configure a VLAN using iproute2 and systemd-networkd or netctl.
Contents
Instant Configuration
Previously, Arch Linux used the vconfig command to setup VLANs. This command was superseded by the ip command. Make sure you have iproute2 installed.
In the following examples, let us assume the interface is eth0 , the assigned name is eth0.100 and the vlan id is 100 .
Create the VLAN device
Add the VLAN with the following command:
Run ip link to confirm that it has been created.
This interface behaves like a normal interface. All traffic routed to it will go through the master interface (in this example, eth0 ) but with a VLAN tag. Only VLAN-aware devices can accept them if configured correctly, else the traffic is dropped.
Using a name like eth0.100 is just convention and not enforced; you can alternatively use eth0_100 or something descriptive like IPTV . To see the VLAN ID on an interface, in case you used an unconventional name:
The -d flag shows full details of an interface:
Add an IP
Now add an IPv4 address to the just created VLAN link, and activate the link:
Turning down the device
To cleanly shut down the setting before you remove the link, you can do:
Removing the device
Removing a VLAN interface is significantly less convoluted
Persistent Configuration
systemd-networkd
Single interface
Use the following configuration files (Remember that systemd config files are case sensitive!):
You will have to have associated .network files for each .netdev to handle addressing and routing. For example, to set the eno1.100 interface with a static IP and the eno1.200 interface with DHCP (but ignoring the supplied default route), use:
Then enable systemd-networkd.service . See systemd-networkd for details.
Single interface with multiple VLANs each with its own gateway
Each vlan gets its own routing table and a RoutingPolicyRule that specifies which source ip addresses this routing applies to.
Checks
Use ip route list table . E.g.:
Bonded interface
Similar to above, you are just going to stack more of the concepts in place. You will want to ensure that you have got a bond set up in your switch and also make sure its a trunk with tagged vlans corresponding to what you create below. Convention would be to create a bond interface with the name bond0 , however there is a known issue where the bonding module, when loaded, creates a bond device of the name bond0 which systemd then refuses to configure (as systemd tries to respectfully leave alone any device it did not create).
For the purposes of this write up, we are going to use bondname and you can make the choice yourself.
First, we create the bond device:
Now create a .network directive that references the vlans and interface carriers. In this case we will use the convention for a dual port fiber module:
We are using the vlan naming convention here, you can use something else but realize that this is a named reference so you will have to have a corresponding set of files with the same name.
We will now set up the physical network interfaces:
At this time you could reboot, and likely should, because the bonded interface is created at boot time. Restarting systemd-networkd will consume changes from these files typically, but device creation seems to occur at startup.
We will now set up the VLANs. You should be aware that having multiple VLANs can result in a situation where your machine has multiple default routes, so you will need to specify a Destination directive in the network directives to ensure that only one VLAN is being used for a default route. In this case we will use the VLAN with an ID of 10 as our default route.
Now create the associated network directive to set an address:
We will create a similar pair of files for the VLAN with an ID of 20:
And again for the VLAN with an ID of 30:
Note that the Destination on vlan10 is set to 0.0.0.0/0 , which will match all outbound, becoming the default route.
netctl
You can use netctl for this purpose, see the self-explanatory example profiles in <
Setting bridge IP
Sometimes you might want to configure the bridge ip on which docker operates, for example when the default ip clashes with other ip addresses in the network. Docker has a straight forward way of setting the bip (bridge IP) via the /etc/docker/daemon.json . When this file does not exist yet you can create it.
Troubleshooting
udev renames the virtual devices
An annoyance is that udev may try to rename virtual devices as they are added, thus ignoring the name configured for them (in this case eth0.100 ).
For instance, if the following commands are issued:
This could generate the following output:
udev has ignored the configured virtual interface name eth0.100 and autonamed it rename1.
The solution is to edit /etc/udev/rules.d/network_persistent.rules and append DRIVERS==»?*» to the end of the physical interface’s configuration line.
For example, for the interface aa:bb:cc:dd:ee:ff (eth0):
A reboot should mean that VLANs configure correctly with the names assigned to them.
Источник
Настройка VLAN интерфейса в Linux CentOS/Fedora/RHEL
В этой статье мы покажем, как настроить тегированный интерфейс VLAN (виртуальной локальной сети) встроенными программными средствами Linux в операционных системах CentOS/Fedora/RedHat. Рассмотим настройку через subinterface, отдельный файл vlanX, а также с помощью инстументов NetworkManager и vconfig.
В операционных системах CentOS/Fedora/RedHat, есть два варианта настройки VLAN:
- Использование subinterface (например eth12.7);
- Использование отдельного файла vlanXX(vlan7).
- Сегментирование сети (разделение устройств на изолированные группы);
- Уменьшение количества сетевого оборудования;
- Снижение нагрузки на сеть для уменьшения широковещательного трафика;
- Улучшение безопасности и управляемости сети.
Создаем VLAN через subinterface
Для настройки тегированного интерфейса, на сервере должен быть загружен модуль ядра Linux — 8021q. Для загрузки модуля, выполните:
Если модуль уже загрузен, появится ошибка: modprobe: ERROR: could not insert ‘8021q’: Module already in kernel .
Проверим, загрузился ли модуль:
# lsmod | grep 8021q
Все ок, модуль 8021q имеется.
Так же нужно добавить данный модуль в автозагрузку при рестарте системы:
# echo 8021q >> /etc/modules-load.d/8021q.conf
Создадим VLAN c ID 7 для сетевого интерфейса eth0. Добавляем конфигурационный файл ifcfg-eth0.7 (7 после точки это назначаемый номер VLAN). В этом файле содержится описание подинтерфейса VLAN.
И вписываем следующее содержимое:
Данный файл конфигурации связывает виртуальный интерфейс eth0.7 с физическим интерфейсом eth0. После создания файла конфигурации, нужно перезапустить сервис network:
# systemctl restart network
Проверим сетевые настройки:
Как видим, сабинтерфейс с нужным нам VLAN7 добавлен.
Статистику интерфейса можно получить так (с помощью счетчиков пакетов можно убедиться, что VLAN интерфейс получает маркированный трафик) :
Чтобы выполнить ping с определенного интерфейса VLAN, используйте формат команды:
# ping -I eth0.7 192.168.1.22
Настройка VLAN через отдельный файл vlanXX
Теперь попробуем создать VLAN с ID 8 через отдельный файл конфигурации:
Добавим в него следующие строки:
Обратите внимание, что файл конфигурации немного отличается от предыдущего. В данной настройке, нужно указывать строку «PHYSDEV», которая направляет конфигурационный файл на физический сетевой интерфейс.
После всех настроек, так же требуется перезагрузка сервиса network:
# systemctl restart network
Нужный сетевой интерфейс с VLAN8 так же доступен.
Используем NetworkManager для настройки VLAN интерфейса
Начиная с 8 версии CentOS/RedHat по умолчанию сетью на сервере управляет NetworkManager. Ранее это инструмент так же был доступен, но большинство аминистраторов использовали привычный network.
Рассмотрим вариант настройки VLAN через NM. Создадим виртуальный интерфейс ens3.7 для VLAN 7 на физическом интерфейсе ens3 и зададим IP:
# nmcli con add type vlan con-name ens3.7 ifname VLAN7 id 7 dev ens3 ip4 15.12.10.11/24 gw4 15.12.10.254
Чтобы проверить сетевые интерфейсы на сервере, используйте команду:
После настройки, выполните перезагрузку NetworkManager:
# systemctl restart NetworkManager
После перезапуска сервиса NM, интерфейс не пропал.
Вывести текущие настройки созданного VLAN интерфейса можно так:
# nmcli connection show ens3.7
Настройка временного VLAN с помощью утилиты vconfig
Для тестовых настроек лучше использовать утилиту vconfig. Ее особенность — после перезагрузки сервера все настройки сети возвращаются к исходному состоянию. Vconfig очень полезная утилита на этапах тестирования или обучения, так как если вы потеряете доступ к серверу из-за неправильных сетевых настроек, можно вернуться к начальной конфигурации простой перезагрузкой. Данная утилита доступна в репозитории EPEL, установим ее:
# yum install epel-release-y && yum install vconfig
Создадим интерфейс с VLAN9:
# vconfig add eth0 9
# ifconfig eth0.9 10.18.0.15 netmask 255.255.255.0 up
Временный интерфейс c VLAN был создан.
Не забывайте, что кроме настройки VLAN на сервере для обеспечения сетевой связанности, вам нужно настроить соответствующие VLAN на сетевом оборудовании.
Источник
Настройка VLAN в Linux
1. Модуль ядра для работы с VLAN
Для работы в Linux с VLAN необходимо загрузить модуль ядра: 8021q
Для этого, ядро должно быть сконфигурировано с поддержкой стандарта IEEE 802.1Q (включается при конфигурировании ядра: в kernel/net/8021q включить 802.1Q VLAN Support или в Network options / 802.1Q VLAN Support). Во многих современных дистрибутивах Linux (Debian, CentOS, openSUSE и т.д) такая поддержка уже включена в ядре и модуль можно загружать.
2. Использование утилиты vconfig для настройки VLAN
Что бы настроить на интерфейсе необходимые VLAN, можно воспользоваться утилитой vconfig она находится в пакете vlan либо в пакете vconfig, в зависимости от дистрибутива Linux.
vconfig имеет следующие опции:
add [interface-name] [vlan_id] — добавить VLAN с номером vlan_id (от 0 до 4095) на интерфейсе interface-name
rem [vlan-name] — удалить VLAN, именованый как vlan-name (имя vlan-name зависит от того, какой тип именования выбран см. ниже)
set_flag [interface-name] [flag-num] [0 | 1] — указывает следует ли делать перестановку (reorder) заголовка Ethernet кадра. Если значение 1 — перестановка включена, и трафик в снифферах (tcpdump и т.д) будет выглядеть как трафик обычного сетевого устройства без тегов VLAN. Если значение 0 — перестановка отключена, и трафик видится с тегами VLAN. Значение по умолчанию: 0.
set_egress_map [vlan-name] [skb_priority] [vlan_qos] — указывает, что для исходящих пакетов через vlan-name с определённым приоритетом буфера сокетов (sk_buff) skb_priority, должна выполняться маркировка приоритета VLAN в значение vlan_qos (3-х битное значение в VLAN заголовке). По умолчанию значение приоритета VLAN vlan_qos: 0.
set_ingress_map [vlan-name] [skb_priority] [vlan_qos] — указывает, что входящие пакеты через vlan-name с определённым приоритетом VLAN vlan_qos, должны помещаться в очередь буфера сокетов с приоритетом skb_priority. Значение по умолчанию приоритета очереди буфера сокетов skb_priority: 0.
set_name_type [name-type] — задаёт тип именования VLAN интерфейсов, при их добавлении. Возможные значения name-type:
VLAN_PLUS_VID — имя vlan-name будет вида vlan0020
VLAN_PLUS_VID_NO_PAD — имя vlan-name будет вида vlan20
DEV_PLUS_VID — имя vlan-name будет вида eth0.0020
DEV_PLUS_VID_NO_PAD — имя vlan-name будет вида eth0.20
Пример добавление VLAN 100 и VLAN 200 на интерфейсе eth0:
#
# modprobe 8021q
# vconfig add eth0 100
Added VLAN with VID == 100 to IF -:eth0:-
# vconfig add eth0 200
Added VLAN with VID == 200 to IF -:eth0:-
#
Посмотреть существующие VLAN можно в файле «/proc/net/vlan/config»
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100 | 100 | eth0
eth0.200 | 200 | eth0
#
Задать IP адрес на VLAN интерфейсах и включить их, можно командой ifconfig:
#
# ifconfig eth0.100 192.168.100.1 netmask 255.255.255.0 up
# ifconfig eth0.200 192.168.200.1 netmask 255.255.255.0 up
#
3. Сохранение конфигурации VLAN интерфейсов при перезагрузке системы
Создание VLAN через vconfig и их настройка через ifconfig позволяет сохранить настройки до перезагрузки системы, что бы настройка применялась при загрузке операционной системы, необходимо создать специальные файлы конфигурации для VLAN интерфейсов.
Конфигурация VLAN интерфейсов зависит от того, какие скрипты инициализации сети используется в дистрибутиве Linux (initscripts, sysconfig или interfaces). Что бы узнать, какая система инициализации сети у Вас, следует:
— Выполнить команду «rpm -qf /sbin/ifup» на экране отобразится название пакета, название начинается на «initscripts» либо на «sysconfig». Этот пакет и предоставляет скрипты инициализации сети.
— Если в директории «/etc/network» присутствует файл «interfaces», то в Вашей системе используется interfaces для инициализации сети
Рассмотрим примеры настройки для всех трёх типов инициализации сети.
Настройка VLAN в Linux с использованием initscripts
Примером дистрибутивов Linux, использующих для настройки сети initscripts, являются RedHat, CentOS, Fedora и пр.
Файлы описания (конфигурации) для VLAN интерфейсов следует создавать в «/etc/sysconfig/network-scripts/». Имя файла должно быть вида: ifcfg-ethX.Y, либо вида ifcfg-vlanY (тогда в самом файле ifcfg-vlanY необходимо задать соответствующее значение параметра VLAN_NAME_TYPE ), где X — номер сетевого интерфейса, Y — идентификатор (номер) VLAN (VID)
Для примера, на интерфейсе eth0 добавим два VLAN 100 и 200. Что бы рассмотреть пример обоих файлов, создадим в «/etc/sysconfig/network-scripts/» один файл ifcfg-eth0.100 (описание для VLAN 100) и второй ifcfg-vlan200 (описание для VLAN 200).
Содержание файла «ifcfg-eth0.100«:
Содержание файла «ifcfg-vlan200«:
С такими файлами, после перезагрузки системы, на интерфейсе eth0 будут присутствовать два VLAN 100 и 200. Модуль ядра 8021q, при этом, загрузился автоматически.
#
# lsmod | grep 8021q
8021q 20355 0
garp 5703 1 8021q
#
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100 | 100 | eth0
vlan200 | 200 | eth0
#
#
# ifconfig eth0.100
eth0.100 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)
# ifconfig vlan200
vlan200 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)
#
Видно, что модуль ядра 8021q загружен, созданы VLAN 100 и 200, подняты соответствующие им интерфейсы с заданными IP адресами. (Значение RX равно 0, так как на интерфейс ещё не подан транк со стороны коммутатора).
Настройка VLAN в Linux с использованием sysconfig
Одним из примеров дистрибутива Linux, использующего для настройки сети sysconfig, является SuSE Linux.
Нужно создать в директории «/etc/sysconfig/network/» файлы для конфигурации необходимых VLAN. Имя файла имеет вид: ifcfg-vlanX, где X — номер VLAN (VID)
В содержание файла, помимо настроек сети (IP адрес, маска сети и т.д.), необходимо добавить параметры: ETHERDEVICE и VLAN
Пример создания двух VLAN 100 и 200 на интерфейсе eth0:
Создаем в «/etc/sysconfig/network/» два файла, первый с именем ifcfg-vlan100 и второй с именем ifcfg-vlan200
Содержание файла «ifcfg-vlan100«:
Содержание файла «ifcfg-vlan200«:
После перезагрузки системы или выполнения команды «/etc/init.d/network restart», на интерфейсе eth0 появятся два VLAN 100 и 200, а VLAN интерфейсы vlan100 и vlan200 будут подняты с заданной настройкой IP адреса и маской сети. Так же модуль ядра 8021q будет загружен автоматически.
Проверить результат можно таким же способом, как описано в случае с initscripts («lsmod | grep 8021q», «cat /proc/net/vlan/config«,»ifconfig»)
Настройка VLAN в Linux с использованием interfaces (ifupdown)
Примером дистрибутивов Linux, использующих для настройки сети interfaces, являются Debian, Ubuntu и пр.
Настройка производится в файле: «/etc/network/interfaces», в который необходимо добавить дополнительные строки, описывающие VLAN интерфейсы и их настройку.
Пример создания двух vlan 100 и 200 на интерфейсе eth0:
Добавить в файл «/etc/network/interfaces» строки:
auto eth0.100
iface eth0.100 inet static
address 192.168.100.3
netmask 255.255.255.0
vlan_raw_device eth0
auto eth0.200
iface eth0.200 inet static
address 192.168.200.3
netmask 255.255.255.0
vlan_raw_device eth0
После перезагрузки, или после выполнения команд «# ifup eth0.100» и «# ifup eth0.200», на интерфейсе eth0 появятся два VLAN 100 и 200, интерфейсы eth0.100 и eth0.200 будут подняты с заданными сетевыми настройками. Так же модуль ядра 8021q будет автоматически загружен.
Проверить результат можно таким же способом, как описано в случае с initscripts («lsmod | grep 8021q», «cat /proc/net/vlan/config«,»ifconfig»)
Источник