FreeBSD tips: настройка VLAN::Журнал СА 12.2004
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 2306
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 2298
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1839
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1362
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1879
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 FreeBSD tips: настройка VLAN

Архив номеров / 2004 / Выпуск №12 (25) / FreeBSD tips: настройка VLAN

Рубрика: Администрирование /  Продукты и решения

СЕРГЕЙ СУПРУНОВ

FreeBSD tips: настройка VLAN

Представьте себе ситуацию: узел СПД в составе маршрутизатора CISCO и коммутатора Catalyst находится на первом этаже, а ваш FreeBSD-сервер – на четвертом. И при этом требуется вывести во внешний мир несколько подсетей, которые проходят через сервер FreeBSD на Catalyst. Можно, конечно, подключить к серверу несколько сетевых адаптеров, занять для внутреннего использования несколько портов на Catalyst и пробросить между этажами километр кабеля 5-й категории. На кабеле можно даже сэкономить, пропустив по одному кабелю сразу два соединения и задействовав тем самым все имеющиеся пары. Однако все равно и затрат, и дополнительных работ по прокладке кабелей получается слишком много. А раз возникает сложность, то наверняка кто-то уже нашел способ ее устранить. И в нашем случае панацеей будет технология VLAN – виртуальные локальные сети.

Данная технология позволяет логически разделять несколько подсетей на одном устройстве (например, коммутаторе) таким образом, что машины, объединенные в одну VLAN, ничего не знают о существовании компьютеров, входящих в другую. И с точки зрения топологии сети мы получаем отдельные коммутаторы для каждой подсети.

На уровне протоколов это достигается добавлением нескольких полей в заголовок пакета сетевого уровня. Одно из добавленных полей содержит идентификатор (номер) сети VLAN, на основе которого и происходит разделение Ethernet-кадров по виртуальным сетям. Кадры, имеющие одинаковый номер VLAN, рассматриваются как принадлежащие одной подсети. Регламентируется это стандартом IEEE 802.1Q.

Развитие технологии VLAN привело к тому, что стало возможным не только назначать отдельные подсети отдельным портам, но и через один порт пропускать несколько VLAN (так называемый multiVLAN). То же относится и к сетевым адаптерам, чем мы и воспользуемся.

Рассмотрим настройку VLAN для FreeBSD на следующем примере: пусть имеется один отрезок кабеля между Catalyst и FreeBSD. На Catalyst свободен один порт, на FreeBSD – одна сетевая карта, обслуживающая внешние соединения. Нужно через это соединение организовать передачу следующих подсетей:

  • подсеть реальных адресов для работы в Интернете (111.222.0.0/28);
  • корпоративная частная подсеть для доступа к вышестоящим узлам компании (10.0.123.0/24);
  • и еще одна сеть для управления оборудованием СПД (10.254.0.0/24).

Прежде всего нужно проверить, поддерживает ли ваша сетевая карта работу по VLAN. Некоторые карты обеспечивают поддержку данной технологии на аппаратном уровне, однако драйвер также должен поддерживать VLAN. Страница справочного руководства (см. man vlan) для FreeBSD 5.2 сообщает, что аппаратное мультиплексирование поддерживается для драйверов bge, em, gx, nge, ti и txp. (Во FreeBSD 5.3 к этому списку добавился еще и драйвер re, обеспечивающий работу сетевых адаптеров на чипсетах RealTek 8139C+/8169/8169S/8110S). Узнать подробную информацию по каждому из драйверов, в том числе список поддерживаемых драйвером моделей сетевых карт, можно на страницах man (например, man 4 em сообщает, что драйвером em поддерживается Intel PRO/1000 Gigabit Ethernet adapter). Если ваш адаптер не входит в этот список, то наверняка он сможет работать с использованием программной эмуляции мультиплексирования. По крайней мере, для большинства современных карт это утверждение справедливо. Нужно заметить, что тот же man vlan гласит, что сетевой адаптер для полноценной эмуляции должен поддерживать «длинные» кадры (oversized frames). В противном случае из-за необходимости размещения дополнительных полей заголовка, содержащих информацию о VLAN, которой принадлежит пакет, приходится снижать максимальный размер передаваемого пакета (MTU) на соответствующем интерфейсе.

Драйвера сетевых адаптеров, поддерживающих длинные кадры, перечислены в man vlan, однако данный список нельзя считать исчерпывающим, поскольку с 2002 года (когда писались страницы руководства) ситуация изменилась в лучшую сторону и перечень совместимых сетевых карт значительно расширился. По крайней мере, D-Link DFE-538TX, работающий на драйвере rl, отсутствующем в списке, никаких нареканий с моей стороны не вызвал. (Замечание: во FreeBSD 5.3 поддержка vlan значительно расширена, и теперь поддержка длинных кадров драйвером rl оформлена официально.)

Пожалуй, хватит теории. Перейдем к практике.

Для работы VLAN в системе должны быть соответствующие псевдоустройства. В случае с FreeBSD 5.2 (думаю, это справедливо и для всей 5-й ветки) устройства vlan создаются динамически. За это отвечает модуль ядра if_vlan.ko. Если вы предпочитаете иметь монолитное ядро, то потребуется пересобрать его со следующей опцией:

device     vlan

Для 3-й и 4-й веток FreeBSD может потребоваться пересобрать ядро с такой строчкой:

pseudo-device    vlan   N

Вместо N нужно подставить количество устройств, которое вам понадобится. После сборки и установки нового ядра в системе должны появиться соответствующие интерфейсы vlan0, vlan1 и т. д., просмотреть которые можно командой:

ifconfig -a

Для FreeBSD 5.2 (в недавно вышедшей 5.3 все настраивается точно так же) для создания vlan-интерфейсов используется «клонирование» (cloning) на этапе загрузки (об этом – чуть ниже) либо программа ifconfig с опцией create. Второй вариант выглядит следующим образом:

# ifconfig vlan0

ifconfig: interface vlan0 does not exist

# ifconfig vlan0 create 111.222.0.5 netmask 255.255.255.240 vlan 111 vlandev rl0

# ifconfig vlan0

vlan0: flags=8843 mtu 1500

    inet 111.222.0.5 netmask 0xfffffff0 broadcast 111.222.0.15

    inet6 fe70::204:5cff:fedf:f81f%vlan0 prefixlen 64 scopeid 0xd

    ether 00:05:5d:cf:f9:1e

    media: Ethernet autoselect (100baseTX )

    status: active

    vlan: 111 parent interface: rl0

Опция vlan задает номер VLAN, присвоенный этой сети. Параметр vlandev указывает физический интерфейс, используемый для организации VLAN. Заметьте, что этот интерфейс (в нашем случае rl0) должен иметь собственный IP-адрес, даже если реально он нигде использоваться не будет:

# ifconfig rl0

rl0: flags=8843 mtu 1500

    options=8

    inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255

    inet6 fe70::204:5cff:fedf:f81f%rl0 prefixlen 64 scopeid 0x1

    ether 00:05:5d:cf:f9:1e

    media: Ethernet autoselect (100baseTX )

    status: active

Обратите внимание, что интерфейсы vlan наследуют MAC-адрес «родительского» интерфейса, но поскольку сети у нас разные, то ни к каким конфликтам это не приведет.

Если со стороны CISCO все настроено должным образом (собственно говоря, основное требование – номер VLAN должен совпадать с тем, который назначен интерфейсу со стороны FreeBSD), то после этой команды все должно работать. Например, конфигурация интерфейса для подсети реальных адресов на CISCO у меня выглядит следующим образом:

interface FastEthernet0/0.111

  encapsulation dot1Q 111

  ip vrf forwarding Inet

  ip address 111.222.0.1 255.255.255.240

  no ip route-cache

Аналогично описываются остальные интерфейсы. Идентификатор VLAN задается в параметре encapsulation dot1Q, в данном случае он равен 111.

На Catalyst соответствующий порт нужно перевести в trunk-режим и при желании можно указать список разрешенных номеров VLAN:

interface FastEthernet0/24

  switchport trunk allowed vlan 100,111,999

  switchport mode trunk

  no ip address

С точки зрения остальных служб операционной системы, например ipfw или natd, полученный интерфейс ничем не отличается от физических и может использоваться как обычно. Например, можно подсчитать трафик, проходящий через vlan0:

# ipfw add 1234 count ip from any to any via vlan0

Остался последний штрих – настройка конфигурации для автоматического создания нужного интерфейса при перезагрузке. Для этого в файл /etc/rc.conf добавим следующие строчки:

# Создаем нужные интерфейсы, используя механизм клонирования:

cloned_interfaces="vlan0 vlan1 vlan2"

# И описываем соответствующие интерфейсы VLAN:

ifconfig_vlan0="inet 111.222.0.5 netmask 255.255.255.240 vlan 111 vlandev rl0"

ifconfig_vlan1="inet 10.254.0.5 netmask 255.255.255.0 vlan 100 vlandev rl0"

ifconfig_vlan2="inet 10.0.0.3 netmask 255.255.255.0 vlan 999 vlandev rl0"

Если «пропадание» сервера на пару минут не критично, то рекомендуется его перезагрузить, чтобы лишний раз убедиться в правильности всех настроек. Бежать среди ночи к неудачно загрузившемуся из-за пропущенного пробела серверу – не самое приятное занятие.

Нужно заметить, что технология VLAN позволяет шифровать трафик (например, ряд сетевых карт поддерживают аппаратное шифрование), однако во FreeBSD это не реализовано и поддерживается только разделение пакетов на основе идентификаторов VLAN. Хотя можно ожидать, что поддержка карт с аппаратным шифрованием появится в будущем. Тем не менее имеющихся в данный момент возможностей вполне достаточно, чтобы без особых усилий повысить эффективность использования имеющегося оборудования.


Комментарии
 
  15.10.2008 - 10:25 |  Konstantine

Спасибо ... Огромное :)

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru