I’ve tagging this entry as a final answer to conclude this post on Implementing a VLAN Solution. I have a reached a milestone of discovery that I needed. The project is by no means complete. I will be taking what I have learned and begin to apply it. I suspect I will return as I begin to know more of what I don’t know and seek answers. Thank you to the people that provided input.
Before I leave I thought it only reasonable to share my outcome. My hope is that it helps someone else in their quest. I constructed a small development network using one router and two switches. I configured the network to support VLAN Bridging. I arrived at this point after discovering VLAN interfaces didn’t accomplish all that I needed.
I’ve including no theory, you have to discover that on your own and no reasoning for doing something. This dev network has most of the VLAN configuration challenges I believe I will face in my production network. I needed a sandbox to learn about VLANs.
The drawing is the dev_network showing the VLAN implemented. I’ve included an export of the router configuration.
# 2026-01-10 12:21:38 by RouterOS 7.20.6
# software id = JPC6-9H6F
#
# model = RB750Gr3
#
/interface bridge
add auto-mac=no comment=bridge_mgmt name=bridge
add comment=bridge_LAN name=bridge_LAN
add comment=bridge_VLAN name=bridge_VLAN vlan-filtering=yes
/interface vlan
add comment=VLAN interface=bridge_VLAN name=vlan110 vlan-id=110
add comment=VLAN interface=bridge_VLAN name=vlan120 vlan-id=120
add comment=VLN interface=bridge_VLAN name=vlan130 vlan-id=130
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
add name=dhcp_pool1 ranges=192.168.87.200-192.168.87.254
add name=dhcp_pool2 ranges=192.168.110.200-192.168.110.254
add name=dhcp_pool3 ranges=192.168.120.200-192.168.120.254
/ip dhcp-server
add address-pool=dhcp_pool1 comment=bridge_LAN interface=bridge_LAN name=\
dhcp1
add address-pool=dhcp_pool2 comment=VLAN interface=vlan110 name=dhcp2
add address-pool=dhcp_pool3 comment=VLAN interface=vlan120 name=dhcp3
/disk settings
set auto-media-interface=bridge auto-media-sharing=yes auto-smb-sharing=yes
/interface bridge port
add bridge=bridge comment=bridge_mgmt interface=ether2
add bridge=bridge_LAN comment=bridge_LAN interface=ether3
add bridge=bridge_VLAN comment=bridge_VLAN interface=ether4
add bridge=bridge_VLAN comment=bridge_VLAN interface=ether5
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface bridge vlan
add bridge=bridge_VLAN comment=VLAN tagged=ether5,ether4,bridge_VLAN \
vlan-ids=110
add bridge=bridge_VLAN comment=VLAN tagged=ether5,ether4,bridge_VLAN \
vlan-ids=120
add bridge=bridge_VLAN comment=VLAN tagged=ether5,ether4,bridge_VLAN \
vlan-ids=130
/interface list member
add comment=bridge_mgmt interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
add comment=bridge_LAN interface=bridge_LAN list=LAN
/ip address
add address=192.168.88.1/24 comment=bridge_mgmt interface=bridge network=\
192.168.88.0
add address=192.168.87.1/24 comment=bridge_LAN interface=bridge_LAN network=\
192.168.87.0
add address=192.168.110.1/24 comment=VLAN interface=vlan110 network=\
192.168.110.0
add address=192.168.120.1/24 comment=VLAN interface=vlan120 network=\
192.168.120.0
add address=192.168.130.1/24 comment=VLAN interface=vlan130 network=\
192.168.130.0
/ip dhcp-client
add comment=defconf interface=ether1
/ip dhcp-server network
add address=192.168.87.0/24 dns-server=192.168.87.1 gateway=192.168.87.1
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=\
192.168.88.1
add address=192.168.110.0/24 dns-server=192.168.1.110 gateway=192.168.110.1
add address=192.168.120.0/24 dns-server=192.168.120.1 gateway=192.168.120.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan type=A
/ip firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment=\
"defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-state=established,related hw-offload=yes
add action=accept chain=forward comment=\
"defconf: accept established,related, untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
/ipv6 firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" \
dst-port=33434-33534 protocol=udp
add action=accept chain=input comment=\
"defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\
udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \
protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\
ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\
ipsec-esp
add action=accept chain=input comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=\
!LAN
add action=fasttrack-connection chain=forward comment="defconf: fasttrack6" \
connection-state=established,related
add action=accept chain=forward comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment=\
"defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \
hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=\
500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\
ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\
ipsec-esp
add action=accept chain=forward comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=\
!LAN
/system clock
set
/system identity
set name=FarmStar
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
I’ve included the image of the SwitchOS configurations screens to establish the VLANs..
The router uses MikroTik default configuration (i.e. firewall rules) with a few of my tweaks. This is NOT a production ready configuration. It was created in a development environment as a learning tool for VLANs and NOT hardened for a production release.
Router Details for the VLAN’ing
Ether1 is running a DHCP client that connects to my home network.
• VLAN110 192.168.110.1/24 DHCP
• VLAN120 192.168.120.1/24 DHCP
• VLAN130 192.168.130.1 NO DHCP
• VLAN170 is not on the router. It was an exercise on how to carve out a VLAN between two switches that don’t involve the router.