From: Дмитрий Новиков, Роман Бесядовский <http://www.artmagic.ru>
Subject: Настройка VLAN в FreeBSD
Настройка VLAN в FreeBSD
Дмитрий Новиков, Роман Бесядовский
http://www.artmagic.ru/labs/short/vlan-freebsd.shtml
Технология VLAN позволяет логически разделять сети, которые находятся
на одном и том же физическом устройстве (устройствах). Так, при помощи
VLAN можно сделать несколько независимых сетей на одном свитче.
Эта технология очень удобна при подключении к Интернет пользователей
по выделенным EtherNet линиям. Все постоянные соединения можно
"собрать" в один свитч, но пользователи друг-друга видеть не будут,
если свитч "разрезать" на независимые VLAN-ы. Также очень удобно
применять VLAN-ы в бизнес-центрах - когда в бизнес-центре сразу же
закладывается кабельная сеть с активным и пассивным оборудованием. Для
арендатора, берущего порты оборудования в аренду, выделяется VLAN,
который представляет из себя не что иное, как локальную сеть.
Для того, чтобы организовывать VLAN, свитч (коммутатор) должен
поддерживать технологию VLAN и протокол 802.1q. Эту технлогию
поддерживают многие производители свитчей (например Cisco, 3Com).
Классическим решением "вывода" VLAN в Internet - применение Cisco
Catalyst и маршрутизатора Cisco. Однако в последнее время все чаще
применяются маршрутизаторы на основе PC под управлением UNIX. В таких
маршрутизаторах также можно эффективно работать с VLAN. Ниже будет
показано как "увидеть" VLAN-ы в ОС FreeBSD.
Есть сетевые карты, которые поддерживают vlan на аппартаном уровне, а
есть которые не поддерживаются. Если сетевая карта не поддерживает
vlan, в FreeBSD предусмотрена software поддержка, но карточка должна
поддерживать oversized пакеты. Этим требованиям удовлетворяет
большинство современных сетевых карт.
Пример создания vlan при помощи свитча, поддерживающего эту
технологию.
1. Ставим FreeBSD (как обычно)
2. Готовим ядро FreeBSD
cd /usr/src/sys/i386/conf
cp GENERIC vlan
#vi vlan
Добавляем строчку
pseudo-devise vlan 4 # Количество необходимых vlan-ов
# config vlan
# cd ../../compile/vlan
# make depend
# make
# make install
# shutdown -r now
Перегружаемся
3. Проверяем интерфейсы
После загрузки нового ядра команда ifconfig -a
должна выдать:
vlan0: flags=0<> mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface: <none>
vlan1: flags=0<> mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface: <none>
vlan2: flags=0<> mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface: <none>
vlan3: flags=0<> mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface: <none>
4. Конфигурим интерфейсы
Для конфигурирования VLAN нужно:
а. сконфигурировать основной интерфейс на какой-нибудь ip (как обычный
сетевой интерфейс)
b. сконфигурировать vlan-интерфейсы, указав основной интерфейс в
команде ifconfig
В общем случае команда ifconfig для vlan выглядит так:
ifconfig vlan<номер итерфейса> inet <ip-адрес> netmask <маска> vlan
<tag vlan'a> vlandev <основной интерфейс, который соединен с
trunk-портом на свитче>
tag - это метка vlan на свитче (номер vlan'a)
Т.о. добавим описание основного интерфейса и vlan'ов в скрипте
запуска:
cat /etc/rc.conf
# skip other lines
# Vlan интерфейс, здесь может быть любой ip, главное чтобы был
ifconfig_rl0="inet 10.18.0.0 netmask 255.255.255.0"
# Конфигурируем 2 vlan интерфейса. Vlandev - устройство, через которое
будем vlan-ить, vlan 2 и vlan3 tag-и соотвествующих виртуальных сетей.
ifconfig_vlan0="inet 10.17.0.1 netmask 255.255.255.0 vlan 2 vlandev
rl0"
ifconfig_vlan1="inet 10.17.1.1 netmask 255.255.255.0 vlan 3 vlandev
rl0"
Tag'и расставлены в соотвествии с метками vlan нашего 3Com Super
Stack3 - Switch 4300.
В результате имеем (команда ifconfig):
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.18.0.0 netmask 0xffffff00 broadcast 10.18.0.255
ether 00:30:4f:16:9f:49
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1496
inet 10.17.0.1 netmask 0xffffff00 broadcast 10.17.0.255
ether 00:30:4f:16:9f:49
vlan: 2 parent interface: rl0
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1496
inet 10.17.1.1 netmask 0xffffff00 broadcast 10.17.1.255
ether 00:30:4f:16:9f:49
vlan: 3 parent interface: rl0
При подключении компьютера с ip 10.17.0.2 в порт 2 свича (vlan 2), он
пингуется пингуется с сервера и с других компьютеров этого vlan. При
подключении компьютера с ip 10.17.1.2 (порт 3, vlan 3), он также
пингуется с сервера. При этом, компьютеры соседних vlan'ов друг-друга
"не видят".
Данная система успешно заработала на ОС FreeBSD. PCI Realtek 8139 и
3Com Super Stack3 - Switch 4300.