swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports "0t 2 3 4"
swconfig dev switch0 set apply
Отключиться 4-йпорт (нумерация портов перепутана)
Включить обратно выполнить:
swconfig dev switch0 vlan 1 set ports "0t 1 2 3 4"
swconfig dev switch0 set apply
Физически линк на порту останется, но работать порт не будет.
В данном устройстве vlan нет, dd-wrt использует eth1 и eth0 согласно ifconfig в своих настройках, поэтому придется перестроить настройки на работу с vlan1 в место одного из eth1.
Что более правильнее.
Да, точно, vlan интерфейсов нет, но в свиче то vlan есть, просто копировал и забыл подправить, строки должны быть такими:
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
swconfig dev switch0 set apply
swconfig dev switch0 vlan 1 set ports "0 1 2 3 4"
swconfig dev switch0 set apply
1-ю и 3-ю строки так и так нужно вписывать в стартовый скрипт.
Да, точно, vlan интерфейсов нет, но в свиче то vlan есть, просто копировал и забыл подправить, строки должны быть такими:
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
swconfig dev switch0 set apply
swconfig dev switch0 vlan 1 set ports "0 1 2 3 4"
swconfig dev switch0 set apply
1-ю и 3-ю строки так и так нужно вписывать в стартовый скрипт.
И дальше что. В данном случае eth1 это все LAN порты, и при настройках по умолчанию enable_vlan 0 и br0 равен ath0+eth1 при разрешении использовать VLAN enable_vlan 1 у вас адресация в системе остается eth1 на котором будет IP (так как он в bridge0).
Созданный вами vlan1 весит в воздухе. В данной настроенной системе а точнее в сетевых пакетах не будет поля тег
Quote:
802.1Q помещает внутрь фрейма тег, который передает информацию о принадлежности трафика к VLAN'у.
...
В стандарте 802.1Q существует понятие Native VLAN. По умолчанию это VLAN 1. Трафик, передающийся в этом VLAN, не тегируется.
http://xgu.ru/wiki/802.1Q
т.е. трафик тегированный (с идентификатором VLAN ID = 2 и выше) и не тегированный при чем если настроен VLAN ID = 1 то от сетевого кадра отрезается поле тег.
Quote:
https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D1%82%D0%B0%D1%82%D0%BE%D1%80
...
Коммутатор хранит в памяти (т.н. ассоциативной памяти) таблицу коммутации, в которой указывается соответствие MAC-адреса узла порту коммутатора. При включении коммутатора эта таблица пуста и он работает в режиме обучения. В этом режиме поступающие на какой-либо порт данные передаются на все остальные порты коммутатора. При этом коммутатор анализирует фреймы (кадры) и, определив MAC-адрес хоста-отправителя, заносит его в таблицу на некоторое время. Впоследствии, если на один из портов коммутатора поступит кадр, предназначенный для хоста, MAC-адрес которого уже есть в таблице, то этот кадр будет передан только через порт, указанный в таблице. Если MAC-адрес хоста-получателя не ассоциирован с каким-либо портом коммутатора, то кадр будет отправлен на все порты, за исключением того порта, с которого он был получен. Со временем коммутатор строит таблицу для всех активных MAC-адресов, в результате трафик локализуется.
...
При включении любого устройства в сеть (возьмем стат IP на клиенте) он с начала по известному IP шлюза (наш switch на роутере) определит его MAC выполнив просто ARP запрос на данный IP шлюза и получит его MAC, таким образом switch роутера будет заполнять таблицу описанную выше.
Вопрос теперь по варианту который вы предложили:
- что будет с пакетом попавшим по IP на switch eth1 в данном случае от клиента включенного на LAN порт switch роутера, который якобы по команде vlan 1 set ports "0 2 3 4" выключен ?
Он не висит в воздухе, он присутствует внутри свича и на всех портах к нему приписанных, входящим в порты пакетам присваивается VID=1 а от исходящих отсекается.
По идее если порт не принадлежит этому vlan, то ни один пакет с других портов на него попасть не должен, а пакеты пришедшие на него - vid не получат и тоже никуда попасть не должны.
Как на практике работает свич в AR9341 с "не приписанными" к vlan-ам портами, оставит ли он их в "дефолтном" 1-м vlan-е или будет игнорировать,надо проверить, 100 к 1 что как нормаьные свичи - проигнорирует.
На край "отключенному" порту можно назначить другой vlan
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
swconfig dev switch0 vlan 2 set ports "1"
swconfig dev switch0 set apply
И вот тут однозначно 4-й порт роутера (1-й свича) будет в vlan 2 "в воздухе".
UPD: Так работает отключение 4-го порта:
root@DD-WRT:~# swconfig dev switch0 vlan 1 set ports "0 2 3 4"
root@DD-WRT:~# swconfig dev switch0 set apply
и так работает:
root@DD-WRT:~# swconfig dev switch0 vlan 2 set ports "1"
root@DD-WRT:~# swconfig dev switch0 set apply
а так само собой включает обратно:
root@DD-WRT:~# swconfig dev switch0 vlan 1 set ports "0 1 2 3 4"
root@DD-WRT:~# swconfig dev switch0 set apply
Он не висит в воздухе, он присутствует внутри свича и на всех портах к нему приписанных, входящим в порты пакетам присваивается VID=1 а от исходящих отсекается.
По идее если порт не принадлежит этому vlan, то ни один пакет с других портов на него попасть не должен, а пакеты пришедшие на него - vid не получат и тоже никуда попасть не должны.
Как на практике работает свич в AR9341 с "не приписанными" к vlan-ам портами, оставит ли он их в "дефолтном" 1-м vlan-е или будет игнорировать,надо проверить, 100 к 1 что как нормаьные свичи - проигнорирует.
"Весит в воздухе" - это не в br и без IP и так же без ifconfig vlan1 up
Вопрос только в том что пакет входящий приходит на порт при конфигурации :
1. с включенным vlan
- br0=eth1+ath0=10.10.10.10
Code:
br0 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:22
inet addr:10.10.10.10...Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:33
inet addr:10.10.11.11...Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:11
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
2. с включенным vlan как положено
- br0=vlan1+ath0=10.10.10.10
- vlan2
Code:
br0 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:22
inet addr:10.10.10.10...Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
eth1 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:11
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
vlan1 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:11
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
При включении опции работы с vlan, приходящий пакет будет сначала проанализирован т.е. поле тег - какой порт и какой vlan и далее встает вопрос куда его направить
Quote:
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
Его даже не будет видно по ifconfig
И что не мало важным как будут MAC адреса в данном случае.
Возможно кто-то и проверит на практике ваш вариант при включении двух клиентов LAN как они будут взаимодействовать между собой и будут ли, и по доступу к роутеру.
Возможно кто-то и проверит на практике ваш вариант при включении двух клиентов LAN как они будут взаимодействовать между собой и будут ли, и по доступу к роутеру.
У меня на руках реальная железка и это я вчера все проверил со всех сторон. "Отключенный" порт отключается от всего, остается только "линк".
Само собой до 0-го порта и других "включенных" в vlan-группу, а уж тем более до eth1 и br0 вообще ничего не доходит.
Свич все отсекает, как и должен делать управляемый свич 2-го уровня.
У меня на руках реальная железка и это я вчера все проверил со всех сторон. "Отключенный" порт отключается от всего, остается только "линк".
Само собой до 0-го порта и других "включенных" в vlan-группу, а уж тем более до eth1 и br0 вообще ничего не доходит.
Свич все отсекает, как и должен делать управляемый свич 2-го уровня.
А что с остальными LAN клиентами которые в других LAN портах при выполненных вами командах:
swconfig dev switch0 set enable_vlan 1
1.
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
swconfig dev switch0 vlan 2 set ports "1"
2.
swconfig dev switch0 vlan 3 set ports "0 2 3 4"
swconfig dev switch0 vlan 2 set ports "1"
swconfig dev switch0 set apply
То тогда команда выключения порта без каких либо vlan имеет вид например :
Code:
root@My:~# swconfig dev eth0 port 1 get link
port:1 link:up speed:1000baseT full-duplex auto
root@My:~# swconfig dev eth0 port 1 set link down
failed
root@My:~#
Но у меня не прокатывает, возможно так как vlan включены (внешний чип switch).
Code:
root@My:~# swconfig dev eth0 help
--switch
Attribute 1 (int): enable_vlan (Enable VLAN mode)
Attribute 2 (none): reset_mibs (Reset all MIB counters)
Attribute 3 (int): enable_mirror_rx (Enable mirroring of RX packets)
Attribute 4 (int): enable_mirror_tx (Enable mirroring of TX packets)
Attribute 5 (int): mirror_monitor_port (Mirror monitor port)
Attribute 6 (int): mirror_source_port (Mirror source port)
Attribute 7 (string): arl_table (Get ARL table)
Attribute 8 (none): flush_arl_table (Flush ARL table)
Attribute 9 (none): apply (Activate changes in the hardware)
Attribute 10 (none): reset (Reset the switch)
--vlan
Attribute 1 (int): vid (VLAN ID (0-4094))
Attribute 2 (ports): ports (VLAN port mapping)
--port
Attribute 1 (none): reset_mib (Reset single port MIB counters)
Attribute 2 (string): mib (Get port's MIB counters)
Attribute 3 (none): flush_arl_table (Flush port's ARL table entries)
Attribute 4 (int): pvid (Primary VLAN ID)
Attribute 5 (string): link (Get port link information)
root@My:~#
Только GET
Attribute 5 (string): link (Get port link information)
А что с остальными LAN клиентами которые в других LAN портах при выполненных вами командах:
swconfig dev switch0 set enable_vlan 1
1.
swconfig dev switch0 vlan 1 set ports "0 2 3 4"
swconfig dev switch0 vlan 2 set ports "1"
2.
swconfig dev switch0 vlan 3 set ports "0 2 3 4"
swconfig dev switch0 vlan 2 set ports "1"
swconfig dev switch0 set apply
Клиенты на портах 2 3 4 в обоих случаях видят друг друга, роутер, WiFi клиентов и интернет, vlan может быть от "0" до "15"
по дефолту установлен "1".
еще пример:
swconfig dev switch0 set enable_vlan 1 swconfig dev switch0 vlan 1 set ports "0"
swconfig dev switch0 vlan 2 set ports "1 2 3 4" swconfig dev switch0 set apply
приводит к тому, что роутер работает только с WiFi клиентами, а все LAN клиенты видят друг друга, но не роутер и что за ним.
swconfig dev switch0 set enable_vlan 1 swconfig dev switch0 vlan 0 set ports "0"
swconfig dev switch0 vlan 1 set ports "1"
swconfig dev switch0 vlan 2 set ports "2"
swconfig dev switch0 vlan 3 set ports "3"
swconfig dev switch0 vlan 4 set ports "4" swconfig dev switch0 set apply
Никто из LAN клиентов вообще ничеого не видит.
Quote:
Более простой вариант, был бы если не "failed"
Code:
root@My:~# swconfig dev eth0 port 1 get link
port:1 link:up speed:1000baseT full-duplex auto
root@My:~# swconfig dev eth0 port 1 set link down
failed
root@My:~#
Но у меня не прокатывает, возможно так как vlan включены (внешний чип switch).
Аналогично, отключение порта в свиче не срабатывает.
Не знаю как на счет отключения PHY интерфейса, надо покурить даташит SoC на предмет управления ими.
при реализации вашего варианта и для дальнейшего применения данного порта я бы изменил конфиг:
- создать vlan
- изменить в br0 убрав eth1 и поместив созданный vlan
Code:
brctl delif br0 eth1
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports "0t 2 3 4"
swconfig dev switch0 vlan 2 set ports "0t 1"
swconfig dev switch0 set apply
vconfig vlan1 up
brctl addif br0 vlan1
где 2 3 4 LAN порты на роутере 1-LAN выделенный LAN порт. 0 - порт связи с CPU. "t" в set ports если нужно то можно использовать новый vlan2 для отдельного клиента.
так как нет поля "tag" порты просто собраны в vlan и соеденены с портом CPU, а порт 1 не закреплен за портом CPU. Обработки как таковой пакете не происходит, да и в br0 весит eth1.
------
Ar9344
Quote:
VLANs
The Ethernet switch supports many VLAN options including IEEE 802.1Q and port-based VLANs. The Ethernet switch supports 4096 IEEE 802.1Q VLAN groups and 4000 VLAN table entries, and it checks VLAN port membership from the VLAN ID extracted from the tag header of the frame. The port-based VLAN is enabled according to the user-defined PORT VID value. The Ethernet switch supports optional discards of tagged, untagged frames, and priority tagged frames; the AR9344 also supports untagging the VLAN ID for packets going on untagged ports on a per-port basis.
Мы тут развели тред, а до сих пор не в курсе, чего же хотел ТС.
Quote:
как отключить lan порт? tp-link wr841n
Может ему нужно по крону или еще как отключать-включать LAN клиента от роутера.
Согласен, что полнятием vlan интерфейсов на тегированом 0-м порту свича можно включить любой порт в br0, br1... или в отдельную подсеть (именно так заменяем пожженый wan-порт), можно включить тегирование и на самом порту, и вывести через него до 15 подсетей (в wr841n стоит ar9341 - у него только 16 vlan-групп, судя по приведенной вами выдержке у ar9344 4k-групп - здорово, хотя мало кому нужно) на внешний управляемый свич.
В вашем примере 1-й порт оказывается во 2-й vlan группе, значит нужно поднять vlan2, сконфигурить на нем свою подсеть, или включить так же в br0...
В общем, я уже не понимаю о чем мы спорим.
Оба варианта рабочие, выбор зависит от того что проще для реализации конкретной задачи.