Как да разделим мрежата с VLAN-и в MikroTik, когато устройството е зад основен рутер. Практични стъпки за VLAN10/20/30, WiFi, DHCP и Firewall.
⚠ Този материал е за офиси, в които MikroTik не е основният рутер,
а вътрешен „умен рутер“ зад главния gateway. В примера MikroTik има адрес
10.0.0.100/24 на ether1, а основният рутер е 10.0.0.1.
Целта е проста: малък MikroTik зад основен рутер да управлява няколко напълно изолирани мрежи, например Guest WiFi, видео и стрийминг, плюс основната LAN мрежа. Показваме всичко стъпка по стъпка с команди, които можете да копирате и поставите директно.
Ако търсите не просто пример, а работещо изпълнение в реална среда, тази конфигурация може да бъде адаптирана според вашата топология, switch-ове, безжични точки и политики за достъп. При нужда можем да съдействаме и с мрежов одит и документация, оптимизация на MikroTik и WiFi site survey и heatmap.
Основен рутер (ISP / core): 10.0.0.1/24
MikroTik RB941 (вътрешен рутер): 10.0.0.100/24 на ether1
MikroTik управлява:
- VLAN10 → 192.168.40.0/24 (Guest / WiFi гости)
- VLAN20 → 192.168.20.0/24 (Видео / IPTV / стрийминг)
- VLAN30 → 192.168.30.0/24 (LAN / основни устройства)
- WireGuard → 172.14.1.0/28 към 192.168.10.0/24 и 192.168.88.0/24
Тук MikroTik е зад основен рутер, но поема цялата логика за сегментация на мрежата, DHCP и firewall. Това е добър подход, когато искате да запазите основния gateway непроменен, но да добавите вътрешен контрол, изолация между отделни групи устройства и по-добра управляемост на трафика. Подобен модел се използва често при корпоративни рутери и мрежова конфигурация, Zero Trust сегментация и структурирани мрежови среди.
Ако изграждате подобна среда в офис, магазин, склад или обект с камери и WiFi за посетители, най-важното е не просто да разделите устройствата по VLAN, а да определите кои сегменти трябва да имат достъп един до друг и кои трябва да останат напълно изолирани. Точно тук са полезни техническият одит, L2/L3 мрежовият одит и документация и правилното проектиране на VLAN сегментация.
Създаваме един bridge с включен VLAN filtering и три VLAN интерфейса върху него. Това е стандартна основа при оптимизация и доработка на MikroTik и по-сложни рутерни конфигурации:
/interface bridge
add arp=proxy-arp name=bridge1 vlan-filtering=yes
/interface vlan
add interface=bridge1 name=vlan10 vlan-id=10
add interface=bridge1 name=vlan20 vlan-id=20
add interface=bridge1 name=vlan30 vlan-id=30
Bridge-ът служи като обща основа, върху която после ще опишем кои портове и безжични интерфейси принадлежат към съответния VLAN. Така конфигурацията остава чиста и по-лесна за поддръжка.
Ether2/3/4 и виртуалните WiFi интерфейси се добавят към bridge с PVID според VLAN-а, към който трябва да принадлежат. Това е типично за среди с WiFi точки, контролери и политики за безжична мрежа и L2 управляеми комутатори:
/interface bridge port
add bridge=bridge1 interface=ether2 pvid=10 comment="Guest / VLAN10"
add bridge=bridge1 interface=ether3 pvid=20 comment="Video / VLAN20"
add bridge=bridge1 interface=ether4 pvid=30 comment="LAN / VLAN30"
add bridge=bridge1 interface=wlan-lan pvid=10
add bridge=bridge1 interface=wlan2 pvid=20
add bridge=bridge1 interface=wlan3 pvid=30
add bridge=bridge1 interface=wlan1 comment=defconf
add bridge=bridge1 interface=ether1 comment="WAN to 10.0.0.0/24"
PVID определя към кой VLAN да попадне нетагнатият трафик на конкретния порт. Това е удобно, когато към него са включени крайни устройства, които не работят с tagged VLAN трафик.
Bridge1 играе ролята на trunk (tagged), а портовете към устройствата са untagged. Ако използвате L2 switch или L3 switch, тук се определя как ще се подава трафикът към него:
/interface bridge vlan
add bridge=bridge1 vlan-ids=10 tagged=bridge1 untagged=wlan-lan,ether2
add bridge=bridge1 vlan-ids=20 tagged=bridge1 untagged=wlan2,ether3
add bridge=bridge1 vlan-ids=30 tagged=bridge1 untagged=wlan3,ether4
Ако по-късно включите управляем switch, просто добавете неговия порт в tagged= списъка за нужните VLAN-и.
Това е един от най-важните моменти в конфигурацията. При грешка тук може да получите смесване на трафик, липса на DHCP в даден сегмент или странно поведение при достъп между отделни устройства.
Имаме основен wlan1 и три виртуални AP интерфейса, по един за всеки сегмент. Така може да имате
служебна мрежа, мрежа за гости и отделна мрежа за видео или IoT. При по-големи обекти това често се комбинира с
UniFi/Omada контролер и политики или
инсталация на безжични точки:
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
add authentication-types=wpa-psk,wpa2-psk mode=dynamic-keys name=wifi-video
add authentication-types=wpa-psk,wpa2-psk mode=dynamic-keys name=wifi-lan
add authentication-types=wpa-psk,wpa2-psk mode=dynamic-keys name=guest
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-XX disabled=no distance=indoors frequency=auto mode=ap-bridge ssid=MikroTik-2BCD25 wireless-protocol=802.11
add disabled=no master-interface=wlan1 name=wlan-lan security-profile=wifi-lan ssid=wlan-lan wps-mode=disabled
add disabled=no master-interface=wlan1 name=wlan2 security-profile=wifi-video ssid=wlan-video wps-mode=disabled
add disabled=no master-interface=wlan1 name=wlan3 security-profile=guest ssid=wlan-guest wps-mode=disabled
Този подход е полезен, когато искате да държите гостите отделно от служителите, а видеонаблюдението или смарт устройствата да не са в една и съща мрежа с основните работни станции.
Всеки VLAN получава собствен gateway и DHCP pool. Това е основата на правилната сегментация и често се комбинира с по-пълна мрежова конфигурация, документация на адресното пространство и DNS настройки:
/ip address
add address=192.168.40.1/24 interface=vlan10 network=192.168.40.0
add address=192.168.20.1/24 interface=vlan20 network=192.168.20.0
add address=192.168.30.1/24 interface=vlan30 network=192.168.30.0
add address=10.0.0.100/24 interface=ether1 network=10.0.0.0
/ip pool
add name=pool10 ranges=192.168.40.10-192.168.40.100
add name=pool20 ranges=192.168.20.10-192.168.20.100
add name=pool30 ranges=192.168.30.10-192.168.30.100
/ip dhcp-server
add address-pool=pool10 interface=vlan10 name=dhcp10
add address-pool=pool20 interface=vlan20 name=dhcp20
add address-pool=pool30 interface=vlan30 name=dhcp30
/ip dhcp-server network
add address=192.168.40.0/24 gateway=192.168.40.1
add address=192.168.20.0/24 gateway=192.168.20.1
add address=192.168.30.0/24 gateway=192.168.30.1
/ip dns
set allow-remote-requests=yes servers=10.0.0.1
/ip dns static
add address=10.0.0.100 name=router.lan type=A comment=defconf
Отделният DHCP за всеки сегмент е това, което прави VLAN-ите на практика удобни за ежедневна работа. Така всяка група устройства получава собствени адреси, gateway и предвидимо поведение.
Базови правила плюс отделни chains за VLAN10/20/30. Това е сърцето на вътрешната изолация и е близко до реални реализации на Firewall и IPS конфигурации, одит на сигурността и Zero Trust политики:
/ip firewall address-list
add address=198.51.100.10 list=allowed_to_router
add address=192.168.10.0/24 list=allowed_to_router
add address=172.14.1.2 list=allowed_to_router
add address=192.168.40.0/24 list=allowed_to_router
add address=198.51.100.20 list=allowed_to_router
/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes
# Winbox only from trusted IPs and internal networks
add chain=input action=accept protocol=tcp dst-port=8291 src-address-list=allowed_to_router comment="Allow Winbox on WAN from allowed IPs"
add chain=input action=accept protocol=tcp dst-port=8291 src-address=192.168.40.0/24
add chain=input action=accept protocol=tcp dst-port=8291 src-address=192.168.20.0/24
add chain=input action=accept protocol=tcp dst-port=8291 src-address=192.168.30.0/24
# ICMP, loopback, WireGuard to the router
add chain=input action=accept protocol=icmp comment="defconf: accept ICMP"
add chain=input action=accept dst-address=127.0.0.1 comment="defconf: accept to local loopback (for CAPsMAN)"
add chain=input action=accept protocol=udp dst-port=13231
add chain=input action=accept in-interface=wireguard1
# IPsec traffic (default)
add chain=forward action=accept ipsec-policy=in,ipsec comment="defconf: accept in ipsec policy"
add chain=forward action=accept ipsec-policy=out,ipsec comment="defconf: accept out ipsec policy"
# Established / related / untracked
add chain=forward action=accept connection-state=established,related,untracked
# Drop Winbox from other IPs on WAN
add chain=input action=drop protocol=tcp dst-port=8291 in-interface-list=WAN comment="Block Winbox on WAN from others"
# Drop invalid + drop everything to the router not from LAN
add chain=input action=drop connection-state=invalid comment="defconf: drop invalid"
add chain=forward action=drop connection-state=invalid comment="defconf: drop invalid forward"
add chain=input action=drop in-interface-list=!LAN comment="defconf: drop all not coming from LAN"
Сегментация между VLAN-ите чрез под-вериги (jump към отделни chains):
/ip firewall filter
# Jump to per-VLAN chains
add chain=forward in-interface=vlan10 action=jump jump-target=vlan10-chain
add chain=forward in-interface=vlan20 action=jump jump-target=vlan20-chain
add chain=forward in-interface=vlan30 action=jump jump-target=vlan30-chain
# VLAN10 – Guest → Internet only
add chain=vlan10-chain action=accept out-interface-list=WAN comment="Guest > Internet"
add chain=vlan10-chain action=drop dst-address=192.168.20.0/24 comment="Guest > Video"
add chain=vlan10-chain action=drop dst-address=192.168.30.0/24 comment="Guest > LAN"
# VLAN20 – Video → Internet only
add chain=vlan20-chain action=accept out-interface-list=WAN comment="Video > Internet"
add chain=vlan20-chain action=drop dst-address=192.168.40.0/24 comment="Video > Guest"
add chain=vlan20-chain action=drop dst-address=192.168.30.0/24 comment="Video > LAN"
# VLAN30 – LAN → Internet, but no Guest/Video
add chain=vlan30-chain action=accept out-interface-list=WAN comment="LAN > Internet"
add chain=vlan30-chain action=drop dst-address=192.168.40.0/24 comment="LAN > Guest"
add chain=vlan30-chain action=drop dst-address=192.168.20.0/24 comment="LAN > Video"
# Drop new WAN traffic that is not dst-nated
add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN comment="defconf: drop all from WAN not DSTNATed"
На практика именно тук решавате кой сегмент има право да вижда друг. Ако искате по-фин модел, например NVR да вижда камери, но гостите да нямат достъп до нищо вътрешно, това се прави на това ниво.
Използваме accept правила за трафика през тунела и едно основно masquerade към WAN. Темата е важна при среди с VPN инфраструктура, защитна стена и по-сложен вътрешен routing:
/ip firewall nat
# No NAT for traffic to 10.0.0.0/24 over the tunnel
add action=accept chain=srcnat src-address=172.14.1.0/28 dst-address=10.0.0.0/24
add action=accept chain=srcnat src-address=192.168.10.0/24 dst-address=10.0.0.0/24
# Main masquerade towards the main router
add action=masquerade chain=srcnat out-interface-list=WAN comment="NAT to main router"
При двойния NAT често се стига до объркване при достъп между вътрешни мрежи, VPN тунели и услуги, които трябва да останат видими от определени сегменти. Затова е важно да знаете точно къде позволявате NAT и къде съзнателно го избягвате.
Реалната част от конфигурацията за WireGuard изглежда така. Ако свързвате повече от един обект, полезни са и цялостната VPN инфраструктура, политиките за контрол на достъпа и описаната маршрутизация и документация:
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/ip address
add address=172.14.1.5/28 interface=wireguard1 network=172.14.1.0
/interface wireguard peers
add interface=wireguard1 name=Sofia endpoint-address=203.0.113.10 endpoint-port=13231 public-key="xxxxxxxxxxxgvo0SKzchG/9GXZZgizyncj9I4TY=" allowed-address=192.168.10.0/24,172.14.1.2/32,10.0.0.0/24,10.0.0.100/24 persistent-keepalive=25s
add interface=wireguard1 name="Sofia Maze" endpoint-address=203.0.113.20 endpoint-port=13231 public-key="xxxxxxxxxxxxx+K6FWt3Fp7Pm69BJ1J6uHISCLSRSg=" allowed-address=192.168.88.0/24,172.14.1.1/32,10.0.0.0/24,10.0.0.100/24 persistent-keepalive=25s
/ip route
add dst-address=192.168.10.0/24 gateway=172.14.1.2
add dst-address=192.168.88.0/24 gateway=172.14.1.1
Ако имате повече от един офис или обекти с отделни мрежи, WireGuard е логично продължение на тази архитектура. Така не просто разделяте локалната среда, а я свързвате контролирано с други локации.
Това са допълнителни настройки, които в практиката са много полезни при SNMP мониторинг, QoS и оптимизация на MikroTik и наблюдение на мрежова и сървърна инфраструктура:
/queue simple
add comment="Limit guest internet to 3Mbps up/down" name=guest-speed target=192.168.40.0/24 max-limit=3M/3M
/snmp
set contact=admin@nsc-bg.com enabled=yes
/system clock
set time-zone-name=Europe/Sofia
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
Това са допълнения, които често се пропускат в кратките примери, а после имат значение в реалната експлоатация, наблюдението и контрола върху административния достъп.
Ако искате тази конфигурация да бъде приложена и съобразена с реалната ви среда, можем да съдействаме с планиране, настройка и проверка на работата след внедряване.
Пишете ни на office@ntg.bg или заявете кратка консултация.