VLAN "разветвитель" своими руками.
Многие наверное часто сталкиваются с проблемой не хватки
второго сетевого интерфейса или даже нескольких,
но хуже всего, когда нет возможности установить дополнительные сетевые
карты в сервер или какой либо роутер, тогда приходиться мириться и
подымать на таких устройствах, если это возможно, сабинтерфейсы, однако
такое
решение многих может не устроить, т.к. возникает необходимость в полной
изоляции сетей между собой, т.е.
физическое разделение на сегменты, в этом случае поможет только
использование 802.1Q VLAN, при условии, что ваш сервер или роутер
поддерживают работу с 802.1Q VLAN, и покупка управляемого свича.
Управляемые свичи, довольно дорогое удовольствие,
бывает обидно, что из-за простейшей функции обычного разветвителя
приходиться выкладывать больше денег, чем стоимость вашей железки.
Самые дешевые коммутаторы такого класса можно найти за 60$ и выше, но
они как правило полууправляемые и построены на элементной базе
обычного дешевого неуправляемого свича, и вам крупно повезет, что за
такую цену вы приобретете "настоящий" управляемый свич с нормальным
процессором, да еще с нормальными функциями управления, что бывает
довольно редко. Однако, мы сами в силах сделать такой свич на базе
любого современного неуправляемого свича, т.к. большенство
неуправляемых свичей содержат микросхемы, такие как IC+ IP175C и
IP178C, Realtek RTL8305SB(SC) и RTL8309SB, Atan AT8985P и многие
другие, которые умеют работать с 802.1Q VLAN, для этого
достаточно изучить даташиты к этим микросхемам и написать прошивку для
EEPROM, только есть одна маленькая проблема, в таких свичах не ставят
EEPROM, т.к. все нужные настройки сделаны через ноги микросхем, хуже
того, в большенстве моделей даже не предусмотрено место под EEPROM, вот
с одним из таких мне и пришлось столкнуться. Моей целью было купить
самый дешевый неуправляемый свич,
желательно этого года выпуска, и переделать его в VLAN "разветвитель",
в качестве такого свича был выбран 5-и портовый мини свич
SURECOM EP-805SX ревизии 3C. Самое интересное, что я покупал его как
свич с надеждой, что в нем установлен чип RTL8305SB(SC) или AT8985P,
т.к. одна и таже модель содержит разные микросхемы и отличается только
ревизиями, оказалось, что все последние SURECOM EP-805SX идут с чипами
IC+ IP175C(Rev. 3C), чуть ранее IC+ IP175A(Rev. 3A) и IC+ IP175B(Rev.
3B), а еще ранее на AT8985P, но могут попасться и на RTL8305SB(SC).
Вообщем, было решено, что попадется, на том и буду делать:). Попался
мне на IC+ IP175C, первым делом был скачен даташит
на этот чип, затем документация по регистрам EEPROM и разные схемы, что
сильно порадовало, однако радость была не долгой, все доки немного
сыроваты и имеют ошибки, а так же читать сложно и не удобно, мне
понадобилось несколько дней что бы во всем разобраться
и не пожалеть о покупке:). Ниже идет фото этого "монстра", фото не
моего устройства, я просто не успел свой с фотографировать до
переделки, нашел эту фотку на сайте www.nag.ru, отличие моего варината,
у меня радиатор приклеен перпендикулярно и не закрывает нужных ножек
микросхемы, а именно 53 и 54 ноги, если вам попадется вариант, как на
этой фотографии, то вам придеться отклеивать радиатор, что бы подлезть
к нужным ногам микросхемы. Если честно,то я вообще не понимаю зачем на
IP175C нужен радиатор, она практически не
греется, как старый вариант IP175A, видимо в SURECOM решили продолжить
традицию установки радиаторов на все чипы:).

Следущим этапом было приобретение нужных компонентов, сеть московских
магазинов ЧиПиДиП имеет достаточно
большой выбор продаваемых
радиодеталей, самое смешное то, что отечественные радиодетали дороже
импортных аналогов, причем бывают в разы. После изучения всей
документации на IP175C с http://www.icplus.com.tw/pp-IP175C.html,
был
выписан список всех нужных нам компонентов, и так,
нам понадобиться:
1. Два резистора на 1Ком и 4,7Ком.
2. Одна микросхема памяти i2c EEPROM 24LC01A(B) емкостью на 128 байт и
напряжением питания от 2.4В до 5В, но было бы желательно найти
микросхему с питанием на 1.8В, т.к. в свиче SURECOM EP-805SX не стали
разносить питание на 3.3В для трансивера и 1.8В для матрицы, как
рекомендуется
даташитом, а сделали общим на 1.9В, т.о. дальнобойность такого свича, в
лучшем случае, не будет превышать 50-60 метров, для того, что бы оно
было выше, необходимо запитать трансивер 3.3В, но многим это не
принципиально. EEPROM с напряжением питания на 1.8В, 24AA01, достать
довольно сложно, но если вы ее достанете, то вам не понадобятся
резистор на 1Ком и стабилитрон на напряжение 3.3В.
3. Один стабилитрон на напряжение 3.3-3.6В, я использовал BZX55C3V6, но
можно и отечественый - KC133A.
4. Одна панелька под DIP8.
Стоимость микросхемы 24LC01A(B) в ЧиПиДиП (http://www.chipdip.ru) - 14
руб. Есть более дешевый аналог - 24WC01P за 8 руб. 20 коп., но мне ее
не удалось приобрести. Стабилитрон BZX55C3V6 обошелся в 1 руб. 20 коп.,
резисторы по 30-50 коп., панелька под EEPROM DIP8 за 1 руб. Сам же свич
SURECOM EP-805SX был куплен за 13$.






Т.к. у меня не оказалось программатора для i2c EEPROM, мне пришлось еще
докупать разъем DB-25
"папа" и панельку под DIP8, что бы собрать программатор на LPT порт для
Linux по схеме взятой отсюда -
http://sweb.cz/Frantisek.Rysanek/battery.html,
там же была взята
програмка для программирования EEPROM -
http://sweb.cz/Frantisek.Rysanek/i2c-progs.tgz.
Необходимо учесть, что
данный программатор работает с ядром 2.4, т.е. использует модуль
i2c-pport, который отсутствует в ядре 2.6, а так же в стандартном
режиме LPT порта, т.е. в биосе материнской платы должен быть отключен
режим EPP и установлен в "Normal".


Можно еще воспользоваться программатором PonyProg, софт есть для Linux
и Windows -
http://www.lancos.com/prog.html,
схему желательно использовать эту-
http://www.lancos.com/e2p/easyI2Cbus.gif,
7-й вывод EEPROM можно вообще
не использовать, т.е. переключатель
и один резистор можно выкинуть, транзисторы подойдут любые, можно
KT315. Так как софт под Linux там собран еще под RedHat-7.x, то я
пересобрал свежую версию в 2х вариантах GUI из CVS под Fedora Core 3 и
воложил у себя - ponyprog2000-2.06e.tar.bz2.
Теперь немного о самой прошивке, в начале я взял прошивку из pdf доки
по регистрам для EEPROM и написал заготовку - switch_24lc01.bin,
немного разобрался как и что программировать и получил вот такой код:

Готовый файл прошивки для EEPROM изображенный здесь - vlan_24lc01.bin.
Но есть одна неприятность, порты на этом свиче не соответствуют
порядку, китайцы развели плату,
как им было удобно:), поэтому получилась следущая схема относительно
маркировки портов на свиче:
1 - Port4 VID=0005
2 - Port2 VID=0003
3 - Port3 VID=0004
4 - Port0 tag VLAN
5 - Port1 VID=0002
Из этой схемы видно, что порт 0 является тегированным и весь VLAN
трафик подается на него,
порты 1-4 являются не тегированными, и каждый идет в свою сеть. Такое
сочетание портов относительно маркировки на свиче не очень удобное,
поэтому я переделал прошивку для EEPROM специально для SURECOM
EP-805SX,
что бы порты соотвествовали номерам, которые нанесены на корпусе свича:
1 - Port4 tag VLAN
2 - Port2 VID=0002
3 - Port3 VID=0003
4 - Port0 VID=0004
5 - Port1 VID=0005
Готовый файл этой прошивки для EEPROM - ep-805sx-vlan_24lc01.bin.
Теперь, относительно маркировки портов на свиче, 1-ый вход является
тегированный, на него подаем VLAN поток,
выходы со 2-го по 5-ый соответсвуют своим VID'ам и являются не
тегированными, что стало гораздо удобнее
в использовании, чем было в первом случае. Скорее всего эти прошивки
для EEPROM подойдут и для придедущих
чипсетов IP175A и IP175B, т.к. разница между ними не большая, покрайней
мере то, что было сделано мной
полностью совпадает по номерам регистров EEPROM'а. Через EEPROM
доступен целый ряд возможностей, таких
как:
- Назначение приоритетов для портов
- port security, это когда при старте свича порт запоминает MAC адрес
подключенного в этот момент устройства и закрывает доступ для всех
остальных, правда работает эта фича до выключения питания свича.
- Выставление скоростей и дупликсов на портах.
- Diffserv и другое...
Есть еще один плюс, при снятии EEPROM устройство будет работать в
штатном режиме, т.е. будет тем, чем оно было
до переделки...:). Таким образом можно переделать любой свич содержащий
микросхемы IP175A/B/C, но для более конкретного результата потребуется
изучение даташитов на эти чипы, такими же возможностями обладают 8-ми
портовые
собратья от IC+ - IP178A/B/C.
Теперь перейдем к теме, как использовать такой VLAN
"разветвитель". Допустим у нас есть такая схема и ADSL роутер на базе
ОС Linux:

Для работы с нашим VLAN "разветвителем" необходимо создать устройства
типа
VLAN_PLUS_VID, т.е. вида vlan0002, vlan0003 и т.д. С другим типом,
таким как
VLAN_PLUS_VID_NO_PAD, работать VLAN "разветвитель" отказался. Для этого
выполним следущие команды
в Linux консоли:
# vconfig set_name_type VLAN_PLUS_VID
Теперь необходимо создать VLAN устройства с нужными нам VID'ами:
# vconfig add eth0 2
# vconfig add eth0 3
# vconfig add eth0 4
Посмотрим, есть ли они у нас в системе:
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_PLUS_VID
vlan0002
| 2 | eth0
vlan0003
| 3 | eth0
vlan0004
| 4 | eth0
Допустим, что у нас 2-е локальных сети для выхода в интернет -
192.168.1.0/255.255.255.0 и 192.168.2.0/255.255.255.0,
и одна сеть в режиме бриджа без IP, например для Стрим ТВ. Необходимо
поднять интерфейсы следущим образом:
# ifconfig vlan0002 192.168.1.1 up
# ifconfig vlan0003 192.168.2.1 up
# ifconfig vlan0002 0.0.0.0 up
Также еще желательно убрать IP адрес с устройства eth0, если он у вас
присутствует(для
роутеров D-Link DSL-xxxT этого делать не надо).
# ifconfig eth0 down
# ifconfig eth0 0.0.0.0 up
На этом базовую настройку VLAN в Linux'е можно считать законченной,
если вам что-то не понятно, то блее
детально можно прочесть на http://www.lanbilling.ru/vlan_solution.html,
далее речь пойдет
применительно к устройствам D-Link DSL-xxxT с моими последними прошивками
для DSL-500T/504T/G604T
с поддержкой VLAN, которые находятся по адресу - http://mcmcc.bat.ru/dlinkt. И
так, привяжем наши VLAN к бриджевым
устройствам, в системе уже имеется одно бриджевое устройство br0,
необходимо создать еще одно или
2-а устройства бриджа:
# brctl addbr br1
# brctl addbr br2
Теперь создадим VLAN устройства и разместим их в нужные бриджи:
# vconfig set_name_type VLAN_PLUS_VID
# vconfig add eth0 2
# vconfig add eth0 3
# vconfig add eth0 4
# ifconfig vlan0002 0.0.0.0 up
# ifconfig vlan0003 0.0.0.0 up
# ifconfig vlan0004 0.0.0.0 up
# brctl addif br0 vlan0002
# brctl addif br1 vlan0003
# brctl addif br2 vlan0004
# brctl delif br0 nas1
# brctl delif br0 nas2
# brctl addif br2 nas1
# brctl addif br2 nas2
# brctl addif br1 nas0
А теперь внимание(!), что бы все заработало, нужно удалить из бриджа
br0 сетевое устройство eth0, как только вы выполните эту команду,
ваше устройство станет не доступным(!):
# brctl delif br0 eth0
Вот теперь подключаем наш VLAN "разветвитель" и радуемся жизни:). В
результате
мы имеем, на vlan0002 выход в интернет через роутер, на vlan0003 выход
в сеть
ADSL в режиме бриджа и на vlan0004 Стрим ТВ, но самое главное, что в
такой
схеме никто ни кому не мешает и друг друга не видит...
(c)2005 I.V. Mokrushin aka McMCC