среда, 22 апреля 2009 г.

VLAN и Linux

Недавно перед автором этих строк встала очередная задача: в офисе компании появилась ещё одна логическая локальная сеть и надо было настроить роутинг между ней и остальными сетями офиса используя имеющийся межсетевой экран на Debian. Изначально предполагалось добавить в сервер ещё одну сетевую карту, поднять на ней IP из новой сети и настраивать роутинг так же, как и для других сетей. Однако после снятия с сервера крышки выяснилось что в нём есть только два PCI-слота и оба уже заняты.

Решение пришло в виде гигабитной сетевой карты с поддержкой транков:) Было решено перевести одну из сетевых карточек из акцессного режима в транковый, поскольку изначально на коммутаторе каждая логическая сеть находилась в отдельном влане. Так же в будущем это решение позволит гораздо проще добавлять новые логические сети а значит решение становится более масштабируемым.

Самым сложным во всём этом оказалось переключение карточки в транковый режим и настройка нужных VLAN'ов. Однако вдумчивое чтение документации показало что это всё не так уж и сложно, что и будет показано ниже. Будем предполагать что у нас сервер под Debian или одном из его клонов. Транк нужно настроить на интерфейсе eth3 и нас интересуют два VLAN'а: 31 (в нём находится сеть 192.168.31.0/24) и 50 (сеть 192.168.50.0/24).

Для начала установим пакет vlan, который кроме всего прочего содержит утилиту vconfig:

apt-get install vlan

Затем загасим интерфейс eth3 (если вы подключаетесь к серверу через него - придётся вам дойти до сервера и поработать локально:)):

ifdown eth3

После этого закоментируем все настройки для eth3 в /etc/network/interfaces и добавим настройки наших VLAN'ов:

#auto eth3
#iface eth3 inet static
# address 192.168.50.253
# netmask 255.255.255.0
# network 192.168.50.0
# broadcast 192.168.50.255

auto vlan50
iface vlan50 inet static
address 192.168.50.253
netmask 255.255.255.0
network 192.168.50.0
broadcast 192.168.50.255
mtu 1500
vlan_raw_device eth3

auto vlan31
iface vlan31 inet static
address 192.168.31.100
netmask 255.255.255.0
network 192.168.31.0
broadcast 192.168.31.255
mtu 1500
vlan_raw_device eth3

Теперь нужно поднять новые интерфейсы:

ifup vlan31
ifup vlan50

Проверить поднялся ли VLAN можно командой:

ifconfig vlan31

Вывод должен выглядеть примерно вот так:

vlan31 Link encap:Ethernet HWaddr 00:07:E9:0B:28:79
inet addr:192.168.31.100 Bcast:192.168.31.255 Mask:255.255.255.0
inet6 addr: fe80::207:e9ff:fe0b:2879/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9431 errors:0 dropped:0 overruns:0 frame:0
TX packets:34429 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:512370 (500.3 KB) TX bytes:1556858 (1.4 MB)

На самом деле в /etc/network/interafces VLAN'ы настраиваются как обычные сетевые интерфейсы, только имеющие имя vlan<номер_VLAN> и обязательный параметр vlan_raw_device, указывающий на физический интерфейс. Во всём остальном работа с VLAN'ами ничем не отличается от работы с обычными сетевыми интерфейсами. Потому настройку роутинга между ними я оставлю читателю.

Комментариев нет:

Отправить комментарий