VLAN - виртуальная локальная сеть. Она представляет собой набор портов
коммутатора, сгруппированных вместе в автономный широковещательный
домен. На моей работе имеется локальная сеть, локальная сеть в
дополнительном филиале и используются услуги трех поставщиков
Интернет. Любая система с несколькими интерфейсами носит название
multihomed. Если устанавливать сетевые карты, то мне потребуется
физический сетевой интерфейс для:
1. Локальной сети
2. Локальной сети удалённого офиса
3. Провайдера vzletka.net
4. Провайдера krasadsl
5. Провайдера webstream
Итого пять интерфейсов или пять сетевых карт. Устанавливать, в один
роутер, пять сетевых карт считаю не целесообразным, но хуже всего, что
у меня нет физической возможности установить пять сетевых карт в один
компьютер! В роутере у меня установлена материнская плата формата
mATX, на которой, есть всего три PCI слота для установки периферии.
Конечно, можно клонировать интерфейсы и прописать IP адреса, но
используемые мною сети требуют полной физической изоляции и разделения
на сегменты. В этом случае на помощь приходит коммутатор с поддержкой
VLAN 802.1Q.
Покупка полноценного управляемого коммутатора с поддержкой VLAN 802.1Q
мерками наших дней совершенно не дорогое удовольствие. Простой
управляемый десяти портовый коммутатор стоит около 120 долларов. В
коммутаторе за такую цену обычно есть управление через консольный
порт, telnet, ssh, web и snmp. Коммутатор поддерживает такие
возможности как VLAN, QoS, Port Trunking, Port Mirroring, Spanning
Tree и IGMP.
Дополнительное преимущество использования коммутаторов с поддержкой
VLAN 802.1Q в том, что можно изменять топологию сети без физического
перемещения рабочих станций или физического изменения кабельных
соединений.
Используя технологию VLAN, я организую, порты специальным образом и
подам их на роутер, используя всего одно физическое подключение.
Теперь логическое описание как будет работать топология сети.
Для работы предприятия я купил коммутатор HP2650. В головном офисе
40 рабочих мест, так что портов в коммутаторе хватит для любых задач.
В коммутаторе есть так называемый default VLAN. По умолчанию в нём
содержатся все порты коммутатора. Для удобства номер VLAN у меня будет
равен номеру порта на коммутаторе. На коммутаторе два гигабитных
Ethernet порта No.49 и No.50, все остальные порты 100 мегабит. К
гигабитному Ethernet порту у меня будет подключен роутер, а все
остальные соединения я подам на 100 мегабитные порты. Почему это
сделано так, я думаю объяснять не нужно.
Порт 49 будет входить в группу VLAN49. Он будет тегированным и будет
принимать в себя все нетегированные VLANы. Этот линк физически будет
подключен к порту роутера.
Порты 1-39 будут нетегированными и будут входить в группу VLAN49. В
эти порты у меня будет включены офисные принтеры, серверы и рабочие
станции головного офиса. В этот VLAN будет включен удалённый филиал
компании. В VLAN49 порты подаются как тегированные.
Порт 40 будет нетегированный и будет входить в группу VLAN40. К нему
будет подключен провайдер vzletka.net. В VLAN49 порты подаются как
тегированные.
Порт 41 будет нетегированный и будет входить в группу VLAN41. К нему
будет подключен провайдер krasadsl. В VLAN49 порты подаются как
тегированные.
Порт 42 будет нетегированный и будет входить в группу VLAN42. К нему
будет подключен провайдер webstream. В VLAN49 порты подаются как
тегированные.
Все остальные порты, которые остались незадействованными, я перевел в
default VLAN и выключил их. Default VLAN нельзя анонсировать, он
существует только внутри свитча и предназначен как правило только для
административных нужд. Клиентов и подключений в нем быть не должно.
А теперь как это работает на практике. Порты, которые имеют одинаковый
идентификатор VLAN, объединяются в "виртуальный коммутатор". При этом
"коммутатор" может состоять из множества устройств, главное чтобы
идентификаторы совпадали, но этот случай я рассматривать сейчас не
буду.
Коммутатор VLAN обрабатывает так: когда в порт приходит пакет
коммутатор смотрит, к какому VLAN этот порт принадлежит. И в Ethernet
header пакета приклеивает маркер с номером VLAN. Когда пакет из порта
выходит, то коммутатор смотрит надо ли этому пакету в этот порт
выходить, и если надо, то надо ли с него этот маркер отклеивать. Если
порт нетегированый, то при входящем пакете на него клеится маркер, а
при исходящем пакете отклеивается. Если VLAN тегированый, то
коммутатор смотрится в тег пакета на предмет "а то ли влетело" и
"пропускать ли дальше".
Соответственно на FreeBSD роутере у меня будут подняты интерфейсы
для устройств VLAN. Именно VLAN49, VLAN40, VLAN41, VLAN42. Когда из
VLAN будет выходить пакет, драйвер сетевого адаптера будет приклеивать
ему метку. Когда в VLAN будет приходить пакет, драйвер сетевого
адаптера разбирается согласно метке, в которое устройство этот пакет
стоит маршрутизировать и отклеивает от него метку.
Теперь всё ясно и доступно. Вот так выглядит готовый к работе
свичь.
Приступим к практической настройке. Коммутатор на время настройки я
подключил к компьютеру, используя консольный порт. Готовая
конфигурация, которая относится к VLAN, лежит в этом файле. Мне
удобнее конфигурировать коммутатор, используя обычную командную
строку. Вы можете воспользоваться для конфигурирования либо WEB
интерфейсом, либо визуальным текстовым интерфейсом который
присутствует в вашем коммутаторе.
Теперь комментарии к конфигурации коммутатора. Я описываю имя
коммутатора и устанавливаю Красноярскую time zone. Затем я выключаю
Cisco Discovery Protocol. В целом этот протокол используется для
обмена данными между коммутирующими устройствами. Выключен он по двум
простым причинам: в текущий момент времени я его не использую и вторая
причина - любой из трех провайдеров теоретически может мне прислать
пакет, содержащий конфигурацию коммутатора. Мне не нужно самовольное
изменение конфигурации на коммутаторе, поэтому данный протокол
отключен. Устанавливаю сервер точного времени и интервал для
синхронизации. Затем я выключаю неиспользуемые в офисе порты на
коммутаторе и группирую их в неиспользуемый VLAN1 или так называемый
Defaut VLAN. Описываю какие порты тегированные а какие нет для VLAN49.
Потом VLAN40 к которому подключена vzletka.net. Потом VLAN41 к
которому подключен krasadsl. Потом VLAN42 к которому подключен
webstream. Затем назначаю основным VLAN - VLAN49.
Из представленной конфигурации, я убрал любые упоминания о контроле
доступа к коммутатору. Защиту консольных портов, ACL, TTY, VTY, HTTP,
Telnet, SSH и доступ к web интерфейсу я предлагаю вам настроить
самостоятельно. ;-)
Теперь, когда коммутатор настроен, к нему можно физически выполнить
подключение всех необходимых портов и приступить к настройке
FreeBSD в качестве роутера. Что бы FreeBSD могла работать с
VLAN устройствами ядро системы обязательно должно быть, построено
используя IEEE 802.1Q VLAN. Включается данная поддержка добавлением в
ядро системы FreeBSD строки "device vlan". Компилируем новое ядро
с поддержкой VLAN и начинаем настройку.
Я буду конфигурировать роутер с консоли. Изначальные условия: файрвол
пропускает все пакеты и не задан маршрут по умолчанию. Настроек IP
адресов на интерфейсах тоже нет.
Для начала командой ifconfig em0 up мы включаем интерфейс, который
будет обслуживать VLAN.
Этой командой включаем внутреннюю сеть офиса. Теперь, используя
команду ping, проверим доступность ближайших Интернет маршрутизаторов
из /30 подсетей для провайдеров. Работают. Проверяем маршрутизатор
которую выдаёт vzletka.net. Работает. Внутренняя сеть офиса.
Работает. Отлично всё работает.
Если что-то не работает, есть один хороший способ проверки
воспользоваться утилитой tcpdump. Указать ей, прослушивать интерфейс
em0 куда физически приходят все настроенные VLAN сети.
Позже я напишу статью о том, как настроить файрвол, для работы с тремя
провайдерами.
Статья посвящена n0xp и nexus. Отдельное и огромное спасибо
дядьке ramscaner.