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'ами ничем не отличается от работы с обычными сетевыми интерфейсами. Потому настройку роутинга между ними я оставлю читателю.

Ключевые слова: vconfig, vlan, debian.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

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

tierpunk 2008-05-30 21:07:23 (#)

Спасибо коротко и ясно, как раз то что нужно.

MooSE 2008-05-30 21:19:07 (#)

Я вообще тут подумал: есть некоторые количество задач где используются тридцать пятые каталисты, но можно использовать вот такие вот линуксовые коммутаторы.... Надо бы обмозговать. Чую что можно неплохо сэкономить:)

186897 2008-11-21 17:54:49 (#)

Спасибо!
А как можно узнать поддерживает ли сетевая карточка vlan?

stannum 2009-04-01 10:42:21 (#)

При наличии 2х адаптеров с поддержкой транков, можно организовать отказоустойчивость, установив пакет ifenslave, например:
/etc/network/interfaces:

auto bond0 bond0.73
iface bond0 inet manual
slaves eth0 eth1

iface bond0.73 inet static
address aa.bb.cc.dd
netmask 255.255.255.224
gateway aa.bb.cc.ddd
vlan_raw_device bond0

будет создан bond0.73 - failover-интерфейс в 73м vlan'е,
если линк упадет на одной из сетевух, то сеть не пропадет, пропадет только 1 пинг и сеть подхватит 2я сетевуха.

MooSE 2009-04-01 16:32:14 (#)

бондинг кстати работает и для акцессного режима. разницы никакой абсолютно:)

Anonymous 2013-02-07 17:13:23 (#)

Линуксовй получится именно роутер, комутатора ты из него никак не слепишь, да и такого количества портов не наберешь)
А вот схема L2 свитч + линуксовый тазик для интервлан роутинга до ~300-500 пользователей, вполне.

Anonymous 2013-03-26 12:47:05 (#)

Линуксовй получится именно роутер, комутатора ты из него никак не слепишь
Немного повертев bridge-utils, можно слепить. И маршрутизирующий коммутатор можно. Другое дело, что набивать pci-карточками машинку как-то нерационально.

MooSE 2013-03-26 13:19:33 (#)

Немного повертев bridge-utils, можно слепить. И маршрутизирующий коммутатор можно. Другое дело, что набивать pci-карточками машинку как-то нерационально.

Ну если уж совсем надо то есть четырёхголовые карточки:)
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности