- Одминский блог
- Настройка VLAN интерфейсов в Linux
- Требования к сетевому оборудованию
- Возможные проблемы
- Подготовка для настройки VLAN интерфейсов
- Настройка VLAN в CentOS/RHEL/Fedora Linux
- Конфигурация VLAN в Debian и Ubuntu
- Использование команды vconfig
- Создание устройства VLAN командой ip
- Заключение
- Похожие записи:
- Настройка VLAN на Linux CentOS 7
- Способ 1. VLAN как сабинтерфейс
- Способ 2. VlanXX
- vlan_name_type
- Использование vconfig
- Возможные проблемы
- No suitable device found for this connection
- VLAN не заработал
Одминский блог
Взял тут себе потестить дедик, ну и прикупил на него пул IP. Все вроде настроил – не пингуется. Перепроверил 100 раз, пишу в саппорт, так мол и так, вроде алиасы поднялись, а ничего не пингуется. Так что давайте срочно корректные шлюзы и маски.
На что получаю прекрасный ответ, что надо подключать тегированный VLAN. Спасибо конечно, что сообщили спустя пару суток после подключения. Переходим к настройкам.
Собственно, т.к сетки у меня две, скажем 10.10.1.0 и 10.10.2.0, то узнаем для них номера VLAN’ов, скажем 10.10.1.0 будет VLAN101, в 10.10.2.0 – VLAN102.
За поддрежку VLAN в Linux отвечает модуль ядра 8021q. Теоретически его надо устанавливать дополнительно, но так как у меня стоит CentOS, то он уже есть, т.ч можем проверить его наличие, грузанув его руками:
# modprobe 8021q
доставим в систему конфигурилку для VLAN и посмотрим, будет ли работать:
# yum -y install vconfig
# vconfig add eth0 101
# vconfig add eth0 102
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.101 | 101 | eth0
eth0.102 | 102 | eth0
Вроде пашет, т.ч переходим к настройке устойчивой к перезагрузкам. Как и все остальные сетевые настройки через initscripts в CentOS, настройки VLAN живут в папке /etc/sysconfig/network-scripts/ , где для настройки можно пойти двумя разными путями, для чего создать один из файлов:
1. ifcfg-vlanNNN, где NNN – номер VLAN (идентификатор VID);
2. ifcfg-INTERFACE-NAME.NNN, где INTERFACE-NAME – имя интерфейса, а NNN – номер VLAN (идентификатор VID).
Попробовал настроить оба варианта, но у меня они не заработали, т.к дополнительные IP не пинговались. Как потом оказалось – проблема была в настройках ядра, т.к по итогу я остановился на втором варианте со стандартными настройками.
Надо заметить, что в теории после создания файлов все само начинает корректно шуршать, их запуск инициирует подгрузку модуля 8021q и всем приходит щасте, но у меня, по указанным ниже причинам, все немного не задалось.
Собственно вариант файлов следующий:
1. Настройка через файлы виланов
# cat ifcfg-vlan101
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan101
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.1.101
# cat ifcfg-vlan102
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan102
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.2.101
2.Настройка через интерфейсы
# cat ifcfg-eth0.101
VLAN=yes
DEVICE=eth0.101
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.1.101
NETMASK=255.255.255.0
# cat ifcfg-eth0.102
VLAN=yes
DEVICE=eth0.102
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.2.101
NETMASK=255.255.255.0
После перезагрузки сетевой службы или системы, виланы поднимаются, о чем свидетельствуют показания системы:
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.101 | 101 | eth0
eth0.102 | 102 | eth0
# ip l ls
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:15:174:77:05 brd ff:ff:ff:ff:ff:ff
6: eth0.101@eth0: mtu 1500 qdisc noqueue state UP link/ether 00:15:174:77:05 brd ff:ff:ff:ff:ff:ff
7: eth0.102@eth0: mtu 1500 qdisc noqueue state UP link/ether 00:15:174:77:05 brd ff:ff:ff:ff:ff:ff
Но пинг не ходил, т.ч пришлось ломать голову о причинах. После долгих перетрубаций и изменений файлов настроек VLAN, пришел к выводу, что проблема в модуле, откуда добрался до ядра и фильтра обратного тракта, который и рубит по дефолту асимметричную маршрутизацию:
# sysctl net.ipv4.conf | grep rp_filter
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0/101.rp_filter = 1
net.ipv4.conf.eth0/101.arp_filter = 0
net.ipv4.conf.eth0/102.rp_filter = 1
net.ipv4.conf.eth0/102.arp_filter = 0
так что в файле /etc/sysctl.conf отключил фильтрацию rp_filter, добавлением строк для VLAN и измененив значение дефолтного:
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0/101.rp_filter = 0
net.ipv4.conf.eth0/102.rp_filter = 0
после чего все славненько заработало.
Ноль отключает фильтрацию, что позволяет ходить асимметрично распределяемым пакетам. Но тут надо понимать, что отключение проверки источника делает машину уязвимой для фишинга IP при DDoS-атаке, т.ч по манам для использования ассимитричной маршрутизации рекомендуется использовать нестрогий режим, т.е значение параметров выставлять в 2.
Поскольку в одном VLAN у меня сидело несколько IP, то по стандартной процедуре создал файлы ifcfg-eth0.101:0, ifcfg-eth0.101:1 и т.д, со стандартным содержанием:
# cat ifcfg-eth0.101:0
VLAN=yes
DEVICE=eth0.101:0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.1.102
NETMASK=255.255.255.0
Настройка VLAN интерфейсов в Linux
VLAN – это аббревиатура, означающая Virtual Local Area Network (виртаульная локальная сеть). На одном физическом порту может совместно существовать несколько VLAN-сетей, которые настраиваются программными средствами Linux, а не конфигурацией физических интерфейсов (но настройка самих интерфейсов тоже требуется). С помощью VLAN можно разделить сетевые ресурсы для использования различных сервисов.
Преимущества VLAN следующие:
- Производительность
- Простота управления
- Безопасность
- Магистральные cоединения (trunk)
- Возможность разделения внутри локальной сети из соображений безопасности
- Отсутствие необходимости настройки аппаратных средств при физическом переносе сервера в другое место.
Требования к сетевому оборудованию
Чтобы использовать VLAN, вам потребуется:
- Коммутатор с поддержкой стандарта IEEE 802.1q в сети Ethernet.
- Сетевая карта, которая работает с Linux и поддерживает стандарт 802.1q .
Возможные проблемы
Наиболее распространенные при настройке VLAN в Linux проблемы следующие:
- Не все сетевые драйверы поддерживают VLAN. Может потребоваться обновление драйвера.
- Возможны проблемы с MTU. Работа VLAN основана на присвоении каждому кадру тега длиной 4 байта, то есть заголовок фактически расширяется с 14 до 18 байт. Тег VLAN содержит идентификатор (VLAN ID) и приоритет.
- Лучше не использовать VLAN ID, равный 1, так как он может быть зарезервирован для административных целей.
Подготовка для настройки VLAN интерфейсов
Сначала убедитесь, что драйвер (модуль) ядра Linux под названием 8021 загружен:
Если он не загружен, загрузите его командой modprobe:
Настройка VLAN в CentOS/RHEL/Fedora Linux
Допустим, нам нужно создать VLAN интерфейс с тегом 100 который будет работать на физическом интерфейсе eth0. Для этого создадим файл /etc/sysconfig/network-scripts/ifcfg-eth0.100 . Узнать название сетевых интерфейсов в системе можно с помощью команды ifconfig.
Создаем новый файл например с помощью редактора vim
# vim /etc/sysconfig/network-scripts/ifcfg-eth0.100
Добавьте в него следующий код
# Конфигурация VLAN с ID – 100 для интерфейса eth0 # DEVICE=eth0.100 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.5 NETMASK=255.255.255.0 USERCTL=no NETWORK=192.168.1.0 VLAN=yes
Жирным шрифтом выделены строки которые относятся к настройкам VLAN. Остальные настройки аналогичны настройкам на физическом интерфейсе.
Если вам нужна еще одна виртуальная сеть, то создайте новый файл сетевых настроек с нужным тегом VLAN. Что бы изменения вступили в силу, перезапустите сетевую службу
# systemctl restart network
Теперь можно проверить созданные интерфейсы командой ifconfig. Мы должны увидеть наш VLAN интерфейс
Конфигурация VLAN в Debian и Ubuntu
Откройте файл /etc/network/interfaces любым текстовым редактором, например nano
$ sudo nano /etc/network/interfaces
Добавьте в файл следующие строки:
##vlan с ID-100 для интерфейса eth0 with ID - 100 в Debian/Ubuntu Linux## auto eth0.100 iface eth0.100 inet static address 192.168.1.200 netmask 255.255.255.0 vlan-raw-device eth0
auto eth0.100 — «поднимать» интерфейс при запуске сетевой службы
iface eth0.100 — название интерфейса
vlan-raw-device— указывает на каком физическом интерфейсе создавать VLAN.
Сохраните и закройте файл. После чего перезапустите сеть.
systemctl restart network
Важно! Если у вас используется Ubuntu версии 17.10 и выше, то необходимо установить пакет ifupdown или настраивать VLAN интерфейсы через netplan
Использование команды vconfig
Также существует команда vconfig. Она позволяет вам создавать и удалять устройства VLAN в ядре с поддержкой VLAN. Устройства VLAN – это виртуальные Ethernet-устройства, которые представляют виртуальные локальные сети в физической. Это еще один метод настройки VLAN. Чтобы добавить VLAN с ID 5 для интерфейса eth0 выполните следующую команду:
Команда vconfig add создает на интерфейсе eth0 VLAN-устройство, в результате чего появляется интерфейс eth0.5. Теперь с помощью ifconfig настроим ip адрес
# ifconfig eth0.5 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 up
Для получения подробной информации об интерфейсе выполните:
Учтите, что после перезагрузки системы этот интерфейс будет удален.
Для удаления интерфейса вручную выполните следующие действия:
# ifconfig eth0.5 down # vconfig rem eth0.5
Создание устройства VLAN командой ip
Для интерфейса eth0 и VLAN ID 10 выполните следующие команды:
# ip link add link eth0 name eth0.10 type vlan id 10 # ip -d link show eth0.10
Устройство нужно активировать и присвоить ему IP-адрес:
# ip addr add 192.168.1.200/24 brd 192.168.1.255 dev eth0.10 # ip link set dev eth0.10 up
Весь трафик пойдет через интерфейс eth0 с тегом VLAN 10. Его смогут принять только устройства, которым сообщено о VLAN, остальные будут отклонять трафик.
Следующие команды позволяют удалить VLAN ID:
# ip link set dev eth0.10 down # ip link delete eth0.10
Этот интерфейс также будет удален после перезагрузки системы
Заключение
Настроить VLAN относительно несложно, но в конфигурации и используемых командах есть огромное количество различных тонкостей, которые при необходимости можно выяснить, обратившись к man-страницам соответствующих команд.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
Настройка VLAN на Linux CentOS 7
Обновлено: 20.05.2020 Опубликовано: 27.06.2017
Тематические термины: VLAN, CentOS. В операционной системе 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. Чтобы настройки вступили в силу, перезапускаем сетевую службу:
Способ 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). Также перезапускаем сетевую службу:
vlan_name_type
- 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 vconfig ifconfig
Загружаем модуль ядра 8021q:
Для настройки vlan из нашего примера, выполняем следующую команду:
Теперь задаем виртуальному адаптеру 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 или убрать ее полностью.