dir-320 vlan port configure

В интернете куча статей как связать порты dir-320 с вланами через nvram, однако если у вас собственная прошивка, то вряд ли вам это поможет. Чтение исходников показало что в конечном итоге все сходится к /proc/switch.
Для наличия этого интерфейса управления нам необходимо, чтобы модули ядра switch-robo, switch-core, switch-adm были загружены.
Смотрим что мы имеем:

# cd /proc/switch
./eth0
./eth0/version            #по всей видимости, версия драйвера
./eth0/driver             #а это, по всей видимости, его имя
./eth0/reset              #запись 1 должно приводить к сбросу установок, мне проверить это пока не удавалось
./eth0/enable             #эта опция скорее всего позволяет отключить интерфейс целеком
./eth0/enable_vlan        #запись 0 превращает устройство в тупой 5-ти портовый switch
./eth0/vlan/N/ports       #вот тут то и описывается какие порты к какому влану относятся
./eth0/port/N/flow        #хз
./eth0/port/N/prio        #приоритеты трафика
./eth0/port/N/prio-enable #включение очередей приоритетов
./eth0/port/N/bandwidth   #ширина канала
./eth0/port/N/media       #скорость подключения
./eth0/port/N/enable      #0 - отключает порт, 1 - включает


дефолтая конфигурация выглядит так:

# cat /proc/switch/eth0/vlan/0/port
1       2       3       4       5u
'*' = pvid; if ports are in multiple vlans, untagged packets will be added to this vlan
't' = tagged port; all packets sent out this port will be tagged (default for port 5)
'u' = untagged port; all packets sent out this port will be untagged

t — тэгированный порт.
u — не тегированный порт.
* — если порт используется в нескольких вланах, нетегированный трафик будет присоединен.
Видно, что по умолчанию порт 0 (wan) вообще не используется. Исправим это:

#!/bin/sh
#превращаем наше устройство в switch
echo '0' > /proc/switch/eth0/enable_vlan
#порты 1-4 будем относить к vlan0
echo '1       2       3       4       5t' > /proc/switch/eth0/vlan/0/port
#добавим vlan-интерфей
vconfig add eth0
#переименуем (для удобства) и включим
ip l set eth0.0 name lan0
ip ad a 192.168.1.1/24 dev lan0
ip l set lan0 up
#те же операции только для порта 0 (wan)
echo '0       5t*' > /proc/switch/eth0/vlan/1/port
vconfig add eth0
ip l set eth0.1 name wan0
ip l set wan0 up
#включаем влан
echo '1' > /proc/switch/eth0/enable_vlan
#eth0 более не используется, удаляем ip-адреса
ip ad f dev eth0

Замечания:
Я полагаю, что до момента конфигурирования на интерфейсе eth0 у вас не прописан ip-адрес 192.168.1.1.  Дело в том, что добавив уже используемый адрес, вы рискуете провалить эксперимент, это произойдет из-за того, что linux не будет знать, через какой интерфейс посылать вам данные (Если быть точнее, то она будет пытаться это делать через устройство найденное первым в таблице маршрутизации для подсети 192.168.1.0/24). Вообще рекомендую писать все команды в скрипт и выполнять его.

Ну а теперь самое интересное: свяжем каждый порт с отдельным вланом, что нам позволит работать с каждым портом как с отдельной сетевухой.

#!/bin/sh
echo '0' > /proc/switch/eth0/enable_vlan
echo '0       5t*' > /proc/switch/eth0/vlan/0/ports
echo '1       5t'  > /proc/switch/eth0/vlan/1/ports
echo '2       5t'  > /proc/switch/eth0/vlan/2/ports
echo '3       5t'  > /proc/switch/eth0/vlan/3/ports
echo '4       5t'  > /proc/switch/eth0/vlan/4/ports
vconfig add eth0 0
vconfig add eth0 1
vconfig add eth0 2
vconfig add eth0 3
vconfig add eth0 4
ip l set eth0.0 name port0
ip l set eth0.1 name port1
ip l set eth0.2 name port2
ip l set eth0.3 name port3
ip l set eth0.4 name port4
ip l set port0 up
ip l set port1 up
ip l set port2 up
ip l set port3 up
ip l set port4 up
brctl addbr br0
brctl addif br0 port0
brctl addif br0 port1
brctl addif br0 port2
brctl addif br0 port3
brctl addif br0 port4
ip ad a 192.168.0.1/24 dev br0
ip l set br0 up
echo '1' > /proc/switch/eth0/enable_vlan
    • Nuttko
    • 01.10.2011

    Привет. А на какой прошивке это все выполнялось?

  1. Это была разобранная и вновь собранная c помощью firmwaremodkit — ‘dd-wrt.v24_mega_generic.bin’.
    Собственно вы можете собрать свой ‘linux from scratch’.

  1. No trackbacks yet.

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