Побег из Vlan. Баг? Хак?! Фича… Или о пользе чтения документации
Снова рискую огрести минусов за капитанство, но все же считаю нижеприведенную инфу полезной. В конце-концов капитанство — не самая низшая ступень. Что бы говорить трюизмы, надо их как минимум знать. И если в быту и в рамках банальной эрудиции это может любой за исключением детей сильно-младшего дошкольного возраста (за летом придет осень), то в сфере профессиональной до этого еще надо дорасти. Так что гуру под кат могут не смотреть. Ну если только повеселиться, это можно…
Пришлось однажды вашему покорному наблюдать картину, которая дала ему почувствовать то самое — даже капитанство не светит, ибо ничего непонятно.
Понадобилось на один пользовательский, давно не использовавшийся линк повесить один хитрый девайс. Наследство дел давно минувших дней — отсутствие документации, каких-либо пометок на розетках и все такое, ну, вы понимаете. Не беда. Подключим девайс, глянем fdb в ядре на предмет mac-адреса, найдем свич доступа, на нем посмотрим все ту же fdb, определим порт и все как надо настроим. Mac известен, девайс подключен, трафик для learning девайс точно обеспечит и «дотянуться» до ядра он должен — ищем.
В ядре (catalyst 35xx)
sh mac address-table | i xxxx.xxxx.xxxx
Но странное дело, mac светится сразу в нескольких Vlan плюсом к тому, в котором как бы должен. Да, на девайсе они действительно подняты (tagged), но порт на свиче доступа (AT-85xx) настроен как untagged. И как tagged он ни в один Vlan не входит. Автор интуитивно (и очень зря, мануалы надо читать!) ожидал от такого «чистого» untagged порта поведения, аналогичного в cisco, когда
switchport mode access
switchport access vlan xxx
Но, как я уже заметил — зря. Дальнейшие изыскания с тестовой машинкой показали, что тэгированный трафик на untagged порт спокойно принимается (при наличии соотв. Vlan-а на свиче, ессно) и форвардится (назад ессно нет).
Занеся на тестовой машине в arp-таблицу статическую запись для некоего IP из управляющего Vlan и подняв его на сетевой как tagged спокойно удалось нафлудить туда чем-то бОльшим, чем arp-запросами. Это плохо.
Ситуацию прояснил мануал. Оказывается, это совершенно нормальное поведение свича, которое может быть отключено командой
set switch infiltering=yes
Правда, в мануале было написано (если я не попутал), что по дефолту команда эта есть и наблюдаемое на практике поведение должно быть отключено. Но не суть. Кстати, через веб-гуи команда недоступна (вот она, причина невежества).
И как оказалось, реальная дефолтовая настройка свича более соответсвует стандарту 802.1Q, чем информация о дефолтовом значении параметра из мануала.
8.6.2 Ingress
Each Port may support an Enable Ingress Filtering parameter. A frame received on a Port that is not in the member set (8.8.9) associated with the VID shall be discarded if this parameter is set. The default value for this parameter is reset, i.e., Disable Ingress Filtering, for all Ports. Any Port that supports setting this parameter shall also support resetting it. The parameter may be configured by the management operations defined in Clause 12.
- мелочи жизни
- капитанство
Ingress filtering что это
Отключите и все у Вас заработает. У Вас какой PVID на магистральный порт навешан ? Давайте угадаю. 1 ?
А в дефолтном влане у Вас какие порты ? Наверное. никакие ?
на 3028 ingress check срабатывает до xSTP. Вот и получается, что xSTP пакеты у Вас забрасываются в никуда.
Если по другому. Ingress check навешала на xSTP пакеты tag, который прописан в PVID. Затем сравнила его со списком вланов, разрешеных на данном порту. Так как в 1 влане этого порта нет — значит его нужно отбросить.
Если Вы все таки ни за что не хотите делать то, что Вам советуют уважаемые, просто пропишите на магистральных портах PVID управляющего VLAN.
А вообще вот что в доке пишут:
Порт Коммутатора, на который приходят пакеты и принимающий решения, касающиеся VLAN,
называется Ingress Port. Если на порту задана настройка Ingress filtering, то Коммутатор на основе
VLAN-информации в заголовке пакета (если таковая присутствует) будет принимать решение о
дальнейшем продвижении пакета.
Если в пакете присутствует VLAN-информация, Ingress port сначала проверит, является ли он
членом VLAN, указанной в теге. Если нет, то пакет будет отброшен. Если же порт назначения
является членом 802.1Q VLAN, то пакет будет передан в сегмент сети, связанный с портом
назначения.
Если пакет не содержит VLAN-информацию, Ingress Port присвоит ему собственный PVID в
качестве VID (если это тегирующий порт). Затем Ingress Port определяет, является ли порт
назначения членом той же самой VLAN (т.е. содержит такой же VID), что и он сам. Если это не
так, пакет отбрасывается. Если у порта назначения тот же самый VID, то пакет будет передан и
порт назначения перешлёт его дальше в сегмент сети, с которой он связан.
Этот процесс называется Ingress Filtering и позволяет избежать перегрузки полосы пропускания
Коммутатора. В результате пакеты, принадлежащие другой VLAN, отбрасываются еще до того,
как достигнут порта назначения, давая возможность избежать передачи избыточного трафика.
Заголовок сообщения:
Добавлено: Вт сен 29, 2009 20:38
проблема так же актуальна. на des 3028 просто пропадает на одном из портов мак адрес. и естесно ничего у абонента не работает. помогает только ребут свича.
либо отключения на данном порту imp. но при этом работать начинает, но мака на порту всеравно нет.
почему?
MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Список форумовФорум по операционной системе MikroTik RouterOSМаршрутизация, коммутация
- Поиск
ограничение трафика при условии, что шлюз это роутер перед mikrotik’ом
RIP, OSFP, BGP, MPLS/VPLS
4 сообщения • Страница 1 из 1
Ziko Сообщения: 3 Зарегистрирован: 22 фев 2023, 16:43
ограничение трафика при условии, что шлюз это роутер перед mikrotik’ом
Сообщение Ziko » 23 фев 2023, 08:58
Есть существующая сеть с роутером L3, который получает интернет и занимается маршрутизацией vlan’ов и раздачей DHCP. За роутером стоит коммутатор L3, и уже за ним идут коммутаторы L2. В разрыв между роутером и первым коммутатором ставлю mikrotik, с тем условием, что хочу переложить на него функции DHCP и ограничение скорости доступа в интернет для хостов.
Для теста создал на роутере vlan и на этом интерфейсе забил IP 10.10.118.1 будет выступать шлюзом. Дальше на mikrotik тоже создал такой же vlan, дал ему адрес 10.10.118.250, поднял DHCP которое задает шлюз хостам 10.10.118.1. Создал бридж в который запихнул этот vlan и 2 порта. Первый транковый порт смотрит на роутер, второй транковый на коммутатор. С этим все хорошо, хосты получают ip адреса, видят остальные доступные для них vlan’ы и ходят в интернет. Но проблема в том, что я не могу ограничить скорость доступа в интернет.
Попробовал маркировать для этого трафик но mikrotik его не видит. И тут у меня 2 варианта: 1 я не то делаю, что скорее всего, потому что не хочется верить, что mikrotik на это не способен. 2 mikrotik не маркирует пакеты и не ограничивает скорость хостам, потому что не является для них шлюзом.
Подскажите пожалуйста куда копать. С mikrotik’ом столкнулся второй раз в жизни, в первый была очень простая задача по сравнению с этой.
# RouterOS 6.48.6 # model = CRS317-1G-16S+ /interface bridge add admin-mac=18:FD:74:0F:05:EE auto-mac=no dhcp-snooping=yes frame-types=\ admit-only-vlan-tagged ingress-filtering=no name=B1 vlan-filtering=yes /interface vlan add interface=B1 name=NET vlan-id=22 add interface=B1 name=TT vlan-id=118 /interface lte apn set [ find default=yes ] ip-type=ipv4 use-network-apn=no /interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik /ip pool add name=117 ranges=10.10.117.1-10.10.117.220 add name=118 ranges=10.10.118.2-10.10.118.249 /ip dhcp-server add add-arp=yes address-pool=118 interface=TT lease-time=1d10m name=TT-118 /port set 0 name=serial0 /queue tree add disabled=yes max-limit=20M name=Download parent=global /queue type add kind=pcq name=pcq-download-5M pcq-classifier=dst-address pcq-rate=5M add kind=pcq name=pcq-upload-5M pcq-classifier=src-address pcq-rate=5M add kind=pcq name=download-5Mb pcq-burst-rate=2M pcq-burst-threshold=768k \ pcq-burst-time=32s pcq-classifier=dst-address pcq-rate=1M add kind=pcq name=upload-5M pcq-burst-rate=2M pcq-burst-threshold=768k \ pcq-burst-time=32s pcq-classifier=src-address pcq-rate=1M /queue simple add max-limit=100M/100M name=1 queue=ethernet-default/ethernet-default \ target=TT add dst=B1 max-limit=20M/20M name=2 packet-marks=QS-20M parent=1 queue=\ default/default target=TT /routing bgp template set default disabled=no output.network=bgp-networks /routing ospf instance add disabled=no name=default-v2 /routing ospf area add disabled=yes instance=default-v2 name=backbone-v2 /interface bridge filter # in/out-bridge-port matcher not possible when interface (TT) is not slave add action=mark-packet chain=forward in-interface=TT new-packet-mark=QS-20M-B \ out-bridge=B1 /interface bridge port add bridge=B1 frame-types=admit-only-vlan-tagged ingress-filtering=no \ interface=sfp-sfpplus3 add bridge=B1 frame-types=admit-only-vlan-tagged ingress-filtering=no \ interface=sfp-sfpplus1 /interface bridge settings set use-ip-firewall=yes use-ip-firewall-for-vlan=yes /ip neighbor discovery-settings set discover-interface-list=!dynamic /ip settings set max-neighbor-entries=8192 /ipv6 settings set disable-ipv6=yes max-neighbor-entries=8192 /interface bridge vlan add bridge=B1 tagged=B1,sfp-sfpplus1,sfp-sfpplus3 vlan-ids=118 add bridge=B1 tagged=B1,sfp-sfpplus1,sfp-sfpplus3 vlan-ids=22 /interface ovpn-server server set auth=sha1,md5 /ip address add address=10.10.31.249/23 disabled=yes interface=NET network=10.10.30.0 add address=10.10.118.250/24 interface=TT network=10.10.118.0 /ip dhcp-client add disabled=yes interface=ether1 /ip dhcp-server network add address=10.10.118.0/24 dns-server=8.8.8.8,8.8.4.4 gateway=10.10.118.1 /ip firewall address-list add address=10.10.118.0/24 list=TT-118 /ip firewall filter add action=accept chain=input protocol=icmp add action=accept chain=forward protocol=icmp add action=accept chain=input connection-state=established,related add action=accept chain=forward connection-state=established,related add action=drop chain=input connection-state=invalid add action=drop chain=forward connection-state=invalid add action=drop chain=input disabled=yes in-interface=ether1 add action=accept chain=forward disabled=yes in-interface=!ether1 \ out-interface=ether1 add action=drop chain=forward /ip firewall mangle add action=mark-packet chain=forward in-interface=B1 new-packet-mark=QS-20M \ out-interface=TT passthrough=no src-address-list=TT-118 add action=mark-packet chain=forward dst-address-list=TT-118 in-interface=TT \ new-packet-mark=QS-20M out-interface=B1 passthrough=no /ip service set telnet disabled=yes set ftp disabled=yes set www disabled=yes set ssh disabled=yes set api disabled=yes set api-ssl disabled=yes /system clock set time-zone-name=Europe/Minsk /system identity set name=RouterOS /system package update set channel=long-term /system routerboard settings set boot-os=router-os
Виртуальные локальные сети (VLAN)
Каждый физический порт коммутатора имеет параметр, называемый идентификатор порта VLAN (PVID). Этот параметр используется для того, чтобы определить, в какую VLAN коммутатор направит входящий немаркированный кадр с подключенного к порту сегмента, когда кадр нужно передать на другой порт (внутри коммутатора в заголовки всех немаркированных кадров добавляется идентификатор VID , равный PVID порта, на который они были приняты). Этот механизм позволяет одновременно существовать в одной сети устройствам с поддержкой и без поддержки стандарта IEEE 802.1Q .
Коммутаторы, поддерживающие протокол IEEE 802.1Q , должны хранить таблицу, связывающую идентификаторы портов PVID с идентификаторами VID сети. При этом каждый порт такого коммутатора может иметь только один PVID и столько идентификаторов VID , сколько поддерживает данная модель коммутатора.
Если на коммутаторе не настроены VLAN , то все порты по умолчанию входят в одну VLAN с PVID = 1 .
Продвижение кадров VLAN IEEE 802.1Q
Решение о продвижении кадра внутри виртуальной локальной сети принимается на основе трех следующих видов правил.
- Правила входящего трафика (ingress rules) — классификация получаемых кадров относительно принадлежности к VLAN .
- Правила продвижения между портами (forwarding rules) — принятие решения о продвижении или отбрасывании кадра.
- Правила исходящего трафика (egress rules) — принятие решения о сохранении или удалении в заголовке кадра тега 802.1Q перед его передачей.
Правила входящего трафика выполняют классификацию каждого получаемого кадра относительно принадлежности к определенной VLAN , а также могут служить для принятия решения о приеме кадра для дальнейшей обработки или его отбрасывании на основе формата принятого кадра.
Классификация кадра по принадлежности VLAN осуществляется следующим образом:
- если кадр не содержит информацию о VLAN (немаркированный кадр), то в его заголовок коммутатор добавляет тег с идентификатором VID , равным идентификатору PVID порта, через который этот кадр был принят;
- если кадр содержит информацию о VLAN (маркированный кадр), то его принадлежность к конкретной VLAN определяется по идентификатору VID в заголовке кадра. Значение тега в нем не изменяется.
Активизировав функцию проверки формата кадра на входе, администратор сети может указать, кадры каких форматов будут приниматься коммутатором для дальнейшей обработки. Управляемые коммутаторы D-Link позволяют настраивать прием портами либо только маркированных кадров (tagged_only), либо обоих типов кадров — маркированных и немаркированных (admitall).
Внимание: внутри коммутатора все кадры являются маркированными.
Правила продвижения между портами осуществляют принятие решения об отбрасывании или передаче кадра на порт назначения на основе его информации о принадлежности конкретной VLAN и МАС-адреса узла-приемника.
Рис. 6.8. Правила входящего трафика
Если входящий кадр маркированный, то коммутатор определяет, является ли входной порт членом той же VLAN , путем сравнения идентификатора VID в заголовке кадра и набора идентификаторов VID , ассоциированных с портом, включая его PVID. Если нет, то кадр отбрасывается. Этот процесс называется ingress filtering ( входной фильтрацией ) и используется для сохранения пропускной способности внутри коммутатора путем отбрасывания кадров, не принадлежащих той же VLAN , что и входной порт, на стадии их приема.
Если кадр немаркированный, входная фильтрация не выполняется.
Далее определяется, является ли порт назначения членом той же VLAN . Если нет, то кадр отбрасывается. Если же выходной порт входит в данную VLAN , то коммутатор передает кадр в подключенный к нему сегмент сети.
Рис. 6.9. Правила исходящего трафика
Правила исходящего трафика определяют формат исходящего кадра — маркированный или немаркированный. Если выходной порт является немаркированным (untagged), то он будет извлекать тег 802.1Q из заголовков всех выходящих через него маркированных кадров. Если выходной порт настроен как маркированный (tagged), то он будет сохранять тег 802.1Q в заголовках всех выходящих через него маркированных кадров.
На рис. 6.10 — 6.13 приведен пример передачи немаркированного и маркированного кадра через маркированный и немаркированный порты коммутатора.