Here is the complete export:
# nov/05/2019 18:36:35 by RouterOS 6.44.6
# software id = ZBUE-6X7V
#
# model = RouterBOARD 3011UiAS
# serial number = *removed*
/interface bridge
add name=bridge1 protocol-mode=none
/interface ethernet
set [ find default-name=ether1 ] speed=100Mbps
set [ find default-name=ether2 ] speed=100Mbps
set [ find default-name=ether3 ] speed=100Mbps
set [ find default-name=ether4 ] speed=100Mbps
set [ find default-name=ether5 ] speed=100Mbps
set [ find default-name=ether6 ] speed=100Mbps
set [ find default-name=ether7 ] speed=100Mbps
set [ find default-name=ether8 ] speed=100Mbps
set [ find default-name=ether9 ] speed=100Mbps
set [ find default-name=ether10 ] speed=100Mbps
set [ find default-name=sfp1 ] advertise=\
10M-half,10M-full,100M-half,100M-full,1000M-half,1000M-full
/interface vlan
add comment="Management VLAN" interface=bridge1 name=MGMT vlan-id=99
add comment="My Office VLAN" interface=bridge1 name=VLAN10 vlan-id=10
add comment="My Guests VLAN" interface=bridge1 name=VLAN20 vlan-id=20
add comment="My Private VLAN" interface=bridge1 name=VLAN30 vlan-id=30
/interface ethernet switch port
set 5 vlan-mode=secure
set 6 default-vlan-id=10 vlan-mode=secure
set 7 default-vlan-id=20 vlan-mode=secure
set 8 default-vlan-id=30 vlan-mode=secure
set 9 default-vlan-id=99 vlan-mode=secure
set 11 vlan-mode=secure
/interface list
add comment="This list contains all VLANs that have internet access" name=\
InternetVLANs
add comment="This list contains all WAN ports" name=WAN
add comment="This list is used to temp allow traffic between Management VLAN a\
nd Office VLAN (e.g. for troubleshooting purposes)" name=MGMT-VLAN10
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add comment="Pool for Office" name=POOL_10 ranges=\
192.168.10.100-192.168.10.200
add comment="Pool for Guests" name=POOL_20 ranges=\
192.168.20.50-192.168.20.200
add comment="Pool for Private" name=POOL_30 ranges=\
192.168.30.50-192.168.30.200
/ip dhcp-server
add address-pool=POOL_10 disabled=no interface=VLAN10 name=DHCP_10
add address-pool=POOL_20 disabled=no interface=VLAN20 name=DHCP-serv_20
add address-pool=POOL_30 disabled=no interface=VLAN30 name=DHCP-serv_30
/interface bridge port
add bridge=bridge1 interface=ether6
add bridge=bridge1 interface=ether7 pvid=10
add bridge=bridge1 interface=ether8 pvid=20
add bridge=bridge1 interface=ether9 pvid=30
add bridge=bridge1 interface=ether10 pvid=99
/interface ethernet switch vlan
add independent-learning=yes ports=ether6,ether7,switch2-cpu switch=switch2 \
vlan-id=10
add independent-learning=yes ports=ether6,ether8,switch2-cpu switch=switch2 \
vlan-id=20
add independent-learning=no ports=ether6,ether9,switch2-cpu switch=switch2 \
vlan-id=30
add independent-learning=no ports=ether6,ether10,switch2-cpu switch=switch2 \
vlan-id=99
/interface list member
add interface=VLAN10 list=InternetVLANs
add interface=VLAN20 list=InternetVLANs
add interface=VLAN30 list=InternetVLANs
add interface=ether1 list=WAN
add interface=MGMT list=MGMT-VLAN10
add interface=VLAN10 list=MGMT-VLAN10
/ip address
add address=192.168.10.1/24 interface=VLAN10 network=192.168.10.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=192.168.99.1/24 interface=MGMT network=192.168.99.0
/ip dhcp-client
add comment="Internet gateway" dhcp-options=hostname,clientid disabled=no \
interface=ether1
/ip dhcp-server network
add address=192.168.10.0/24 gateway=192.168.10.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 cache-max-ttl=4h
/ip firewall filter
add action=accept chain=input comment=\
"Accept established and related connections" connection-state=\
established,related
add action=accept chain=input comment=\
"Accept DNS connections from VLANs with Internet connection" dst-port=53 \
in-interface-list=InternetVLANs protocol=udp
add action=accept chain=input comment="TEST: Accept DNS from all but WAN" \
dst-port=53 in-interface-list=!WAN protocol=udp
add action=accept chain=input comment=\
"TEST: Accept NetBIOS input from all but WAN" dst-port=137 \
in-interface-list=!WAN protocol=udp
add action=accept chain=input comment=\
"Allow ICMP traffic (e.g. ping) from non-WAN" in-interface-list=!WAN \
protocol=icmp
add action=accept chain=input comment=\
"Accept all connections from Management VLAN" in-interface=MGMT
add action=accept chain=input comment=\
"Accept WinBox connection from Office VLAN" dst-port=8291 in-interface=\
VLAN10 protocol=tcp
add action=drop chain=input comment=\
"TMP: Drop incomming WAN traffic separately to clean up drop log" \
in-interface-list=WAN
add action=drop chain=input comment=\
"Basic policy: drop everything unless allowed by a specific rule" \
disabled=yes log=yes log-prefix=InputChainDrop
add action=fasttrack-connection chain=forward comment=\
"FastTrack connection to improve troughput for established connections" \
connection-state=established,related disabled=yes
add action=accept chain=forward comment=\
"Accept established and related connections" connection-state=\
established,related
add action=accept chain=forward comment=\
"Allow outgoing traffic from Internet VLANs" in-interface-list=\
InternetVLANs out-interface-list=WAN
add action=accept chain=forward comment="Allow inter-VLAN traffic between Mana\
gement and Office VLAN --> Use only temporary for troubleshooting!!" \
in-interface-list=MGMT-VLAN10 out-interface-list=MGMT-VLAN10
add action=drop chain=forward comment=\
"Basic policy: drop everything unless allowed by a specific rule" \
disabled=yes log=yes log-prefix=ForwardChainDrop
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
/ip route rule
add action=drop comment="No routing from Guest to Office" disabled=yes \
dst-address=192.168.10.0/24 src-address=192.168.20.0/24
add action=drop comment="No routing from Guest to Management VLAN" disabled=\
yes dst-address=192.168.99.0/24 src-address=192.168.20.0/24
add action=drop comment="No routing from Private to Office" disabled=yes \
dst-address=192.168.10.0/24 src-address=192.168.30.0/24
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www address=192.168.99.0/24
set api disabled=yes
set winbox address=192.168.99.0/24,192.168.10.0/24
set api-ssl disabled=yes
/lcd
set default-screen=stats-all
/system clock
set time-zone-name=Europe/Brussels
/system ntp client
set enabled=yes primary-ntp=51.255.138.215 secondary-ntp=162.159.200.1
/system ntp server
set enabled=yes
/system package update
set channel=long-term
/system scheduler
add comment="Lookup and set NTP server IP addresses" interval=12h name=\
CheckNTPservers on-event=setntppool policy=read,write,test start-date=\
nov/01/2019 start-time=00:00:00
/system script
add dont-require-permissions=no name=setntppool owner=admin policy=\
read,write,test source="# Check and set NTP servers - \"setntppool\"\r\
\n\r\
\n# NTP server pools\r\
\n:local SYSntpa \"0.pool.ntp.org\";\r\
\n:local SYSntpb \"1.pool.ntp.org\";\r\
\n\r\
\n# Resolve the two ntp pool hostnames\r\
\n:local ntpipa [:resolve \$SYSntpa];\r\
\n:local ntpipb [:resolve \$SYSntpb];\r\
\n\r\
\n# Get the current settings\r\
\n:local ntpcura [/system ntp client get primary-ntp];\r\
\n:local ntpcurb [/system ntp client get secondary-ntp];\r\
\n\r\
\n# Define a variable so we know if anything's changed.\r\
\n:local changea 0;\r\
\n:local changeb 0;\r\
\n\r\
\n# Debug output\r\
\n:put (\"Old: \" . \$ntpcura . \" New: \" . \$ntpipa);\r\
\n:put (\"Old: \" . \$ntpcurb . \" New: \" . \$ntpipb);\r\
\n\r\
\n# Change primary if required\r\
\n:if (\$ntpipa != \$ntpcura) do={\r\
\n :put \"Changing primary NTP\";\r\
\n /system ntp client set primary-ntp=\"\$ntpipa\";\r\
\n :set changea 1;\r\
\n }\r\
\n\r\
\n# Change secondary if required\r\
\n:if (\$ntpipb != \$ntpcurb) do={\r\
\n :put \"Changing secondary NTP\";\r\
\n /system ntp client set secondary-ntp=\"\$ntpipb\";\r\
\n :set changeb 1;\r\
\n }"
According to manual ( https://wiki.mikrotik.com/wiki/Manual:Basic_VLAN_switching#Other_devices_with_built-in_switch_chip and https://wiki.mikrotik.com/wiki/Manual:Switch_Chip_Features#Setup_Examples ):
VLAN mode = secure, configured on the switch chip. Access ports get a PVID, trunk port get none.
/interface ethernet switch port
set 5 vlan-mode=secure
set 6 default-vlan-id=10 vlan-mode=secure
set 7 default-vlan-id=20 vlan-mode=secure
set 8 default-vlan-id=30 vlan-mode=secure
set 9 default-vlan-id=99 vlan-mode=secure
set 11 vlan-mode=secure
Special attention to
Note: For devices with > QCA8337 > and Atheros8327 switch chips a default vlan-header=leave-as-is should be used. When vlan-mode=secure is configured, it ignore switch port vlan-header options. VLAN table entries handle all the egress tagging/untagging and works as vlan-header=leave-as-is on all ports. It means what comes in tagged, goes out tagged as well, only default-vlan-id frames are untagged at the egress of port.
so VLAN-header options are not used (i.e. leave-as-is).
On the bridge I also configured VLAN IDs as a test afterwards, but they should not be required since the switch chip VLAN table is used and VLAN filtering on the bridge is not enabled:
/interface bridge port
add bridge=bridge1 interface=ether6
add bridge=bridge1 interface=ether7 pvid=10
add bridge=bridge1 interface=ether8 pvid=20
add bridge=bridge1 interface=ether9 pvid=30
add bridge=bridge1 interface=ether10 pvid=99
Although in the script hardware offloading is not selected (HW=yes), it is enabled:
[admin@MikroTik] > /interface bridge port print
Flags: X - disabled, I - inactive, D - dynamic, H - hw-offload
# INTERFACE BRIDGE HW PVID PR PATH-COST INTERNA... H
0 H ether6 bridge1 yes 1 0x 10 10
1 H ether7 bridge1 yes 10 0x 10 10
2 I H ether8 bridge1 yes 20 0x 10 10
3 I H ether9 bridge1 yes 30 0x 10 10
4 I H ether10 bridge1 yes 99 0x 10 10
[admin@MikroTik] >
Indepedant learning is not enabled for VLAN 30 and 99, I forgot this. But I don’t believe (I strongly hope) this is not the root of the issue.
Actually, I don’t think independant learning is required at all since I don’t expect the same MAC in different VLANs.
Small note: WAN2 is not yet configured, hence it’s not in the script.
Below an image of the ForwardChainDrop Rule log. I can see outbound DNS querries and HTTPs traffic, entering the router from Bridge 1.

Edit: Trying to get the code tags correct for the layout…