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
Привет. А на какой прошивке это все выполнялось?
Это была разобранная и вновь собранная c помощью firmwaremodkit — ‘dd-wrt.v24_mega_generic.bin’.
Собственно вы можете собрать свой ‘linux from scratch’.