Страницы

четверг, 30 августа 2012 г.

HP Proliant Microserver router VLAN + Cisco SG200-08

PC маршрутизатор на основе связки микросервера HP Proliant microserver и гигабитного управляемого коммутатор Cisco SG200-08 (SLM2008T-EU).

Использование управляемого коммутатора 2-го уровня и PC роутера (в данном случае микросервера) с одной сетевой картой, для организации маршрутизации домашней сети в Интернет.
Исходная сетевая конфигурация микросервера представляла собой 2 сетевые карты, одна для внешней сети и Интернет (usb-адаптер), другая для домашней сети (встроенный гигабитный адаптер). Микросервер работает под операционной системой Ubuntu 12.04 LTS.

В данном руководстве, используется идея организации сети, которая была почерпнута на форуме [1]. Идея позволяет экономить 1 сетевой порт на сервере, за счет внедрения vlan "между" коммутатором и микросервером. Это расширяет возможности применения систем с одним сетевым интерфейсом в домашних условиях, в качестве маршрутизатора Интернета.
В нашем микросервере, мы избавляемся от сетевого usb-адаптера, переводя встроенный гигабитный адаптер в специальный "транковый" режим.
Для данной конфигурации, коммутатор обязательно должен быть управляемым и в нем должна присутствовать поддержка VLAN.
Возможно, это решение не требуется обычным пользователям, имеющим 1 подключение к сети интернет и один компьютер.

Идея технологии VLAN (англ. Virtual Local Area Network) - присвоение специальной метки VLAN ID (тэга) ethernet фрейму, означающего принадлежность к определенной VLAN. Получается т.н. тэгированный трафик. Подробное описание в стандарте 802.1Q. В результате любое устройство с поддержкой vlan может этот трафик обрабатывать тем или иным способом.

Each VLAN in a network has an associated VLAN ID, which appears in the IEEE
802.1Q tag, also known as VLAN tag, in the Layer 2 header of packets transmitted
on a VLAN



Определение возможностей оборудования
Определим наличие аппаратной поддержки vlan ( 802.1q) у встроенного сетевого интерфейса микросервера, в данном случае это home.

Предварительно установим пакет программы Ethtool, для управления сетевой картой
$sudo apt-get install ethtool
$sudo ethtool -k home

Offload parameters for home:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: off

В данном случае, интересует разгрузка для vlan, - она присутствует, о чем свидетельствуют rx-vlan-offload, tx-vlan-offload

Гигабитный управляемый коммутатор Cisco SG200-08 (SLM2008T-EU) имеет встроенную поддержку VLAN, о чем свидетельствует спецификация устройства. Да и выбирался он именно с такой поддержкой.


Установка пакета поддержки VLAN на микросервере
$sudo apt-get install vlan

Общее описание схемы подключения

Цитата с [1]:
"
Общая схема подключений примерно такая:
- в один из портов управляемого коммутатора включается приход от провайдера, порт назначается в vlan1;
- в другой порт включается приход от другого провайдера, если таковой имеется, порт назначается в vlan2;
- выбирается группа портов, в которые будут подключаться устройства домашней локальной сети, эти порты назначаются, например, в vlan50;
- в Web-интерфейсе коммутатора ему переназначаются IP, маска и шлюз из произвольной подсети и назначается Management VLAN, например, vlan100 (эта подсеть будет использоваться для управления коммутатором, поэтому её маска может быть узкой, вплоть до /30);
- в произвольный порт коммутатора включается кабель от роутера, этот порт назначается транковым с инкапсуляцией по 802.1Q; vlan1, vlan2, vlan50 тегируются при передаче в этот порт (tagged), vlan100 не тегируется (untagged);
- для случая FreeBSD настраиваем вланы vlan1, vlan2, vlan50, vlan100 и присваиваем им IP-адреса, согласно вышепроцитированному сообщению.
Очевидным недостатком такой схемы является то, что через транковый порт коммутатора ходит трафик как внутренней домашней сети, так и трафик от/к провайдера(у), но в разных вланах, т.е. не пересекаясь на 2-ом уровне. Поэтому, как минимум, этот порт коммутатора и встроенная сетевая карта mini-ITX-платы должны быть гигабитными.
"
После продолжительного размышления идея стала понятна. Так что в путь.


Общий порядок действий администратора микросервера

1. Обычная загрузка микросервера, в настроенной сетевой конфигурации с двумя сетевыми адаптерами.
2. Вход в консоль и выполнение отключения сетевого интерфейса Интернета ppp8 и местного провайдера beeline. В моем случае и извлечение сетевого usb-адаптера. Выход из консоли. Эти операции можно проделать и удаленно. На сервере остается поднятым только интерфейс home.
3. Провод (ethernet кабель 5 категории) из гнезда микросервера подключаем в один из портов. Я решил выбрать №1 порт, т.к. он крайний (граничный) и его позиция одним взглядом позволяет судить о том, есть связь сервера и коммутатора или нет, а не искать его среди других портов.
4. Включаем управляемый коммутатор cisco sg200-08. Коммутатор по умолчанию настроен на получение ip-адреса через dhcp и он его получит, о чем будет свидетельствовать прекращение моргания индикатора питания. А вот от кого он его получить зависит от настроек сети. У меня он получает как от микросервера, так и роутера и часто оказывается в разных подсетях.
5. Провод настольного компьютера можно подключить в один из портов коммутатора. Я выбрал №3, т.к. порт №2 я зарезервировал за вторым провайдером. Компьютер автоматически должен получить ip-адрес. Если все прошло гладко, то включение коммутатора в домашнюю сеть прошло штатно. 
6. Порт №2 оставил пустым в резерве для второго провайдера.
7. Т.к. ip-адрес коммутатора после динамического получения ip-адреса от dhcp-сервиса микросервера, не известен, то пропинговав несколько адресов из диапазона местной сети, я его нашел. Указываю его в броузере и захожу в web-интерфейс управления. Пароли по умолчанию стандартные cisco/cisco. Тут же предлагается его сменить. Меняю. Выхожу из интерфейса и повторно захожу уже с новым паролем.
Также можно найти выданный коммутатору (арендованный) ip-адрес, если в качестве dhcp-сервера использовался микросервер с dhcpd просмотрев файл аренды адресов:
root@microserver:~# cat /var/lib/dhcp/dhcpd.leases

8. Теперь надо немного остановиться и подумать как организовать свои виртуальные сети, сколько VLAN создать, какие практики хорошие, а какие "так себе". С чего начать конфигурирование, так чтобы не развалилась домашняя сеть и переход прошел гладко.
Виртуальная локальная сеть позволяет сделать "как-бы" несколько сетевых плат на микросервере, доступных однако через 1 физический встроенный ethernet-адаптер.
Т.е. таким образом, при планировании, я выделяю одну виртуальную сетевую плату первому провайдеру, одну виртуальную сетевую плату второму провайдеру, третью сетевую плату домашней сети. Микросервер должен осуществить ip маршрутизацию между этими сетевыми виртуальными платами. Ситуация почти аналогична той исходной, в которой 2 физические сетевые платы. На языке vlan, это называется сегментация по широковещательным доменам или разделение по подсетям. Один vlan - это один широковещательный домен( или одна подсеть), который может находится и на разных коммутаторах. Также можно рассматривать одну виртуальную сеть и как сегмент сети. Ранее, до vlan это сегмент ограничивался одним коммутатором, теперь можно сделать одну сеть разнесенную территориально. Чем все это может помочь в домашней сети? А домашние сети бывают разные.

Предварительно, запросы портов такие:

 - Группа портов для домашней инфраструктуры (ip телефон №3, камера №4, точки доступа №5), пока не существующей.

 - Один порт для соединения с другим коммутатором, пока не существующим №7.
 - Порт для компьютера домашней сети №6.
 - Порт для несуществующего телевизора с медиапроигрывателем.
8 портов оказались легко распланированы. При экономном подходе, точку доступа можно интегрировать в микросервер, освободив один порт.

Приходит понимание, что количество портов - очень ограниченный ресурс и их требуется больше в современных условиях. Например, коммутатор Cisco SB SRW2016-K9-EU.
Приходит также понимание, что коммутаторы с 8 портами лучше использовать локально на местах, а не в качестве основы инфраструктуры.

Недостаток данной схемы в том, что полоса пропускания порта №8 (т.е. до микросервера) делиться между провайдерами и домашней сетью. Спасает ситуацию то, что редко провайдер (а чаще пользователю не нужно) предоставляет 1Gigabit, обычно 100 Мбит, что с лихвой покрывается гигабитным портом. Да и не каждый пользователь строит сеть в такой конфигурации.

В принципе, можно создать 8 vlan по числу портов, потому что требования к качеству обслуживания у разного оборудования разные, например для ip-телефона очень, очень важен приоритет голосового трафика. Одно более разумно продумать иное группирование, чтобы абоненты-корреспонденты одной группы не выходили за пределы одной vlan, снижая нагрузку на порт микросервера. Например, медиасервер и телевизор для просмотра медиаконтента, или группа видеокамер и видеосервер.


9. Заходим в интерфейс управления коммутатором и выполняем административные процедуры
Устанавливаем время на коммутаторе, задаем иные параметры.
Сохраняем конфигурацию, чтобы при следующем включении конфигурация соответствовала настроенной. Вкладка "Administration" - "File management" - "Copy/Save configuration". Указываем сохранять конфигурацию "Running configuration" в "Startup configuration".
По идее, после выключения питания и включения, коммутатор должен иметь настроенную конфигурацию, а не по умолчанию. Обязательно проверить, сохранилась ли конфигурация и восстанавливается ли она после холодного рестарта.


10. Интерфейс home на микросервере переименовываем в vlan или trunk, так чтобы имя интерфейса  отражало суть. В принципе, можно не переименовывать, но я это делаю. Переименование осуществляется в файле:
nano /etc/udev/rules.d/70-persistent-net.rules

11. Пример решения о конфигурации
Особенности: микросервер "on the go". Сетевая конфигурация отличается от ранее настроенной, микросервер путешествует.
. В порт №1 коммутатора я решил подключить микросервер. Порт №1 будет "trank" транковый, т.е. пропускать трафик всех vlan до микросервера.
. В порт №8 я решил подключить 3G роутер bigpond, в один из его портов встроенного хаба (интернет провайдер в деревне. Тариф Мегафон-модем). В принципе его можно использовать с любым роутером, который раздает готовое подключение к Интернет, например adsl. Т.к. интерфейс у микросервера будет настроен на получение динамической конфигурации.
. В порт №3 я решил подключить настольный компьютер.

Определил VLAN ID 8 для порта №8 для провайдера интернета, в данном случае 3g.
Определил VLAN ID 99 для будущей Management VLAN. Это на этапе первоначальной настройки можно не делать.


12. Настройка сетевой конфигурации на микросервере

На микросервере добавим заданные VLAN к интерфейсу home. Он может быть поднят.
root@microserver#modprobe 8021q
root@microserver#vconfig add home 99
root@microserver#vconfig add home 8


Для Management VLAN определим виртуальный интерфейс, исключительно предназначенный для управления коммутатором, в файле /etc/network/interfaces микросервера. Как бы выделенный провод между микросервером и коммутатором.

root@microserver#cat /etc/network/interfaces
...
# Management VLAN адаптер. Интерфейс для управления коммутатором cisco
# 30 августа 2012
# VLAN ID = 99
iface home.99 inet static
 address 192.168.99.2
 netmask 255.255.255.0
 gateway 192.168.99.2
 broadcast 192.168.99.255
 vlan_raw_device home

# Интерфейс провайдера 3g
# 30 августа 2012
# VLAN ID = 8
iface home.8 inet dchp
 vlan_raw_device home
...
auto home
auto home.99
auto home.8
...

Если их поднять без настроенного коммутатора, то не будет ip-адресов.

13. Настройка коммутатора. Создание виртуальных локальных сетей.

Вкладка "VLAN Management" - "Create VLAN"
Нажмем кнопку "Add..."
В открывшемся окне можно задать VLAN ID, VLAN NAME, также можно создать несколько сетей задав диапазон (range) VLAN ID.
Вкладка "Create VLAN" на Cisco SB200-08

Создание vlan - безопасная операция.


Т.к. любой провайдер обычно поставляет нетегированный (untagged) трафик, то нам надо, чтобы этот трафик попадал в определенный vlan и далее через "trunk" в микросервер.

Пример для первого провайдера. Операция манипуляции с vlan опасная, можно случайно потерять связь с коммутатором из-за переназначения.

Вкладка "Interface settings" на Cisco SB200-08
Вкладка "Port to VLAN" на Cisco SB200-08
Вкладка "Port VLAN Membership" на Cisco SB200-08

В коммутаторе на вкладке Interface Settings для интерфейса g8, мы указываем, для физического порта режим "access", "admin untagged only", для Access VLAN указываем 8. Таким образом, весь непомеченный трафик, прибывший через этот порт (№8) в коммутатор, будет помечен тэгом VLAN ID = 8 и соответственно следуя другим настройкам будет направлен в транковый порт №1 где достигнет микросервера и его интерфейса home.8.

И да, надо не забыть сохранить рабочую конфигурацию коммутатора в загрузочную конфигурацию. См. п.9.

Интерфейс home.8 получает адрес от dhcp-сервера bigpond. Для этого в данной рабочей обстановке, коммутатор и роутер (провайдер) должны быть включены ранее микросервера, чтобы при загрузке интерфейс home.8 получил динамический ip-адрес.

Для второго провайдера аналогично, только VLAN ID иной. У меня пока нет, но можно проэмулировать с помощью другого компьютера или роутера.

После этого на микросервере имеется 2 интерфейса с доступом в Интернет и можно настраивать режим "two WAN", так как будто это обычные сетевые адаптеры. Выполнять балансировку, резервирование канала и т.п.

14. Для порядка, можно все неиспользуемые порты назначить в режим "access", предполагая, что в них будут подключаться устройства с нетегированным трафиком. Однако, можно сделать роуминг некоторых устройств, тогда портам надо установить режим "general", для пропуска и тегированного трафика, а на самом устройстве сделать членство в определенной vlan. Получиться что-то типа роуминга.
Также, vlan-коммутатор, позволяет легко собирать сеть из отдельных устройств, на новом месте, при этом не меняя сетевую конфигурацию.


Также можно повесить dhcp-сервер на определенный интерфейс vlan. Это может пригодиться, например, когда нет выделенного dhcp-сервера.


Вопросы
1. Куда использовать старое оборудование DIR-320, уже 4 года в эксплуатации в качестве интернет-маршрутизатора, с dd-wrt прошивкой? В холодный резерв.

Вывод
- сделать ревизию оборудования на предмет поддержки vlan
- в коммутаторе Cisco Switch SG 200-08 отсутствует ssh доступ, что создает некоторые трудности в удаленном управлении


Ресурсы
1. Создание PC-роутера на базе Mini-ITX/-DTX-платформ.  http://forum.ixbt.com/topic.cgi?id=14:51494
VLAN в Linux. http://xgu.ru/wiki/VLAN_%D0%B2_Linux
VLAN "разветвитель" своими руками. http://mcmcc.bat.ru/vlan/
Коммутатор Cisco SB 200-08. Страница поддержки.  http://www.cisco.com/en/US/products/ps11229/tsd_products_support_series_home.html

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