VLAN изграден върху BRIDGE интерфейс е още една разновидност за изграждане на виртуални мрежи в Mikrotik. Този вариант е по-иновативен и по-гъвкав спрямо предния вариант. Да започнем с не сложен пример.

Имаме 3 рутера. MTD ще играе ролята на рутер, а MTН и MTS ще играят ролята на суич. Няма да задълбаваме в цялата схема, а ще наблегнем на изграждането на VLAN-ове. PCH1, PCD1 и PCS1 са 3 компютъра принадлежащи на VLAN10 PCH2, PCD2 и PCS2 са 3 компютъра принадлежащи на VLAN20
Ще започнем с рутер MTD. - ether2, ether3 са тагнати портове. През тях трябва да се маркират пакетите от VLAN-овете. - ether4 и ether5 са унтагнати портове и са връзка към клиентите.
Първата стъпка е да създадем бридж.
/interface bridge add name=bridge1


Да укажем на бриджа да разпознава тегираните пакети. Грубо казано да включим VLAN филтрацията.
/interface bridge set bridge1 vlan-filtering=yes

Обърнете внимание. Бриджа е в PVID: 1.
Сега трябва да добавяме интерфейси към бриджа. За начало ще добавим интерфейсите ether2 и ether3. Забележете, те ще са във VLAN PVID:1. Това ще са тегирани портове (интерфейси).
/interface bridge port add bridge=bridge1 interface=ether2 pvid=1 /interface bridge port add bridge=bridge1 interface=ether3 pvid=1


Това беше за интерфейс ehter2. По същия начин добавяме в бриджа и интерфейс ether3. Крайния резултат трябва да се както на долната картинка.

До тук имаме изграден бридж и към него добавени два интерфейса (порта). През тези портове трябва да минава маркиран (тегиран) трафик. Същия маркиран трафик ще премине и през бриджа bridge1. За да може да разпределяме трафика към VLAN10 и VLAN20 към бриджа трябва да създадем два виртуални интерфейса. В случая ще са VLAN10 и VLAN20
/interface vlan add interface=bridge1 name=vlan10 vlan-id=10 /interface vlan add interface=bridge1 name=vlan20 vlan-id=20


Забележете, двата VLAN-a са съответно с ID 10 и 20. Това указва, че ще се маркира TCP пакета за VLAN10 и VLAN20. Вече имаме всички интерфейси които са ни необходими. Ако погледнем схемата която имаме ще видим, че маркиран (тагнат) трафик трябва да има на портове ether2, ether3, bridge1. Унтагнати портове трябва да са ether4 и ether5. На тези два порта TCP пакета вече няма да е маркиран.
Ако погледнем схемата ще видим, клиенти ползват VLAN10 през ether4, а VLAN20 през ether5. Това ни задължава да дефинираме ether4 като нетагнат с PVID=10, а ether5 нетагнат с PVID=20
/interface bridge port add bridge=bridge1 interface=ether4 pvid=10 /interface bridge port add bridge=bridge1 interface=ether5 pvid=20




Сега да трябва да укажем кои портове ще са тагнати и кои не в съответните VLAN-ове. Да проверим в bridge1 какви динамични VLAN-ове се дефинираха.

Имаме 3 динамични VLAN-a. Вълнуват ни VLAN с ID 10 и 20. На тези два VLAN-a имаме неправилно дефинирани тагнати и нетагнати портове. Да поправим VLAN-a с ID 10 и 20.
/interface bridge vlan add bridge=bridge1 tagged=ether2,ether3,bridge1 untagged=ether4 vlan-ids=10 /interface bridge vlan add bridge=bridge1 tagged=ether2,ether3,bridge1 untagged=ether5 vlan-ids=20


За целта ще дефинираме IP адреси на vlan10 и vlan20. След това на съшите интерфейси ще пуснем DHCP сървъри. Накрая ще накараме компютрите PCD1 и PCD2 да получат адреси от DHCP сървърите.
/ip address add address=10.0.0.1/24 interface=vlan10 network=10.0.0.0 /ip address add address=172.16.0.1/24 interface=vlan20 network=172.16.0.0



/ip pool add name=dhcp_pool10 ranges=10.0.0.12-10.0.0.21 /ip dhcp-server add address-pool=dhcp_pool10 disabled=no interface=vlan10 name=dhcp10 /ip dhcp-server network add address=10.0.0.0/24 gateway=10.0.0.1 /ip pool add name=dhcp_pool20 ranges=172.16.0.12-172.16.0.21 /ip dhcp-server add address-pool=dhcp_pool20 disabled=no interface=vlan20 name=dhcp20 /ip dhcp-server network add address=172.16.0.0/24 gateway=172.16.0.1
Накрая проверяваме дали PCD1 и PCD2 получават динамично IP от DHCP сървърите. В моя случай всико е наред. По аналогичен начин настройваме MTH и МТS. В крайна сметка трябва да можете да достъпвате всички устройства помежду си от съответните VLAN-ове. Примерно трябва да могат да се виждат помеду си PCH1, PCD1 и PCS1. Както и PCH2, PCD2 и PCS2.
Имаме клиенти работещи в два VLAN-a но те се виждат помежду си. За да оправим този проблем ще се наложи да поработим със защитната стена. Първо ще покажа универсалния начин ако имате много VLAN-и. Това е само пример, не го вземайте в предвид.
# Създаваме списък с интерфейси /interface list add name=VLANs # Добавяме VLAN интерфейси към списъка /interface list member add interface=vlan10 list=VLANs /interface list member add interface=vlan20 list=VLANs /interface list member add interface=vlan30 list=VLANs # Добавяме блокиращото правило във Firewall /ip firewall filter add chain=forward action=drop in-interface-list=VLANs out-interface-list=VLANs comment="Drop Inter-VLAN traffic"
Има още един по-професионален начин. Разрешаваме само легитимния трафик.
И сега по-нагледно за нашия случай
/ip firewall filter add action=drop chain=forward in-interface=vlan10 out-interface=vlan20 /ip firewall filter add action=drop chain=forward in-interface=vlan20 out-interface=vlan10





### DHCP клиент /ip dhcp-client add disabled=no interface=ether1 ### Създаване на бридж /interface bridge add name=bridge1 # Бриджа разпознава маркирани пакети /interface bridge set bridge1 vlan-filtering=yes # Изграждане на VLAN интерфейси към бриджа /interface vlan add interface=bridge1 name=vlan10 vlan-id=10 /interface vlan add interface=bridge1 name=vlan20 vlan-id=20 ### Добавяне на портове към бриджа # Добавяне на Ethernet портове /interface bridge port add bridge=bridge1 interface=ether2 pvid=1 /interface bridge port add bridge=bridge1 interface=ether3 pvid=1 # Добавяне на Ethernet портове които не маркират пакети /interface bridge port add bridge=bridge1 interface=ether4 pvid=10 /interface bridge port add bridge=bridge1 interface=ether5 pvid=20 ### Дефиниране на VLAN в бриджа /interface bridge vlan add bridge=bridge1 tagged=ether2,ether3,bridge1 untagged=ether4 vlan-ids=10 /interface bridge vlan add bridge=bridge1 tagged=ether2,ether3,bridge1 untagged=ether5 vlan-ids=20 ### IP адреси на виртуалните интерфейси /ip address add address=10.0.0.1/24 interface=vlan10 network=10.0.0.0 /ip address add address=172.16.0.1/24 interface=vlan20 network=172.16.0.0 ### DHCP сървъри на виртуалните интерфейси /ip pool add name=dhcp_pool10 ranges=10.0.0.12-10.0.0.21 /ip dhcp-server add address-pool=dhcp_pool10 disabled=no interface=vlan10 name=dhcp10 /ip dhcp-server network add address=10.0.0.0/24 gateway=10.0.0.1 /ip pool add name=dhcp_pool20 ranges=172.16.0.12-172.16.0.21 /ip dhcp-server add address-pool=dhcp_pool20 disabled=no interface=vlan20 name=dhcp20 /ip dhcp-server network add address=172.16.0.0/24 gateway=172.16.0.1 ### Защитна стена и достъп до Internet ## Интернет към VLAN /ip firewall nat add action=masquerade chain=srcnat out-interface=ether1 src-address=10.0.0.0/24 /ip firewall nat add action=masquerade chain=srcnat out-interface=ether1 src-address=172.16.0.0/24 ## Забрана на достъп между VLAN-ите # Създаваме списък с интерфейси /interface list add name=VLANs # Добавяме VLAN интерфейси към списъка /interface list member add interface=vlan10 list=VLANs /interface list member add interface=vlan20 list=VLANs # Добавяме блокиращото правило във Firewall /ip firewall filter add chain=forward action=drop in-interface-list=VLANs out-interface-list=VLANs comment="Drop Inter-VLAN traffic" ### Име на рутера /system identity set name=MTD
/interface bridge add name=bridge1 vlan-filtering=yes /interface vlan add interface=bridge1 name=vlan10 vlan-id=10 /interface vlan add interface=bridge1 name=vlan20 vlan-id=20 /interface bridge port add bridge=bridge1 interface=ether1 /interface bridge port add bridge=bridge1 interface=ether2 pvid=10 /interface bridge port add bridge=bridge1 interface=ether3 pvid=20 /interface bridge vlan add bridge=bridge1 comment="added by pvid" tagged=ether1,bridge1 untagged=\ ether2 vlan-ids=10 add bridge=bridge1 comment="added by pvid" tagged=bridge1,ether1 untagged=\ ether3 vlan-ids=20 /system identity set name=MTH
/interface bridge add name=bridge1 vlan-filtering=yes /interface vlan add interface=bridge1 name=vlan10 vlan-id=10 /interface vlan add interface=bridge1 name=vlan20 vlan-id=20 /interface bridge port add bridge=bridge1 interface=ether1 /interface bridge port add bridge=bridge1 interface=ether2 pvid=10 /interface bridge port add bridge=bridge1 interface=ether3 pvid=20 /interface bridge vlan add bridge=bridge1 comment="added by pvid" tagged=ether1,bridge1 untagged=\ ether2 vlan-ids=10 add bridge=bridge1 comment="added by pvid" tagged=bridge1,ether1 untagged=\ ether3 vlan-ids=20 /system identity set name=MTS