Two bridges sharing one port -revisited

This is a follow up to Two bridges sharing one port

Model : hAP AX Lite (=Device)

Goal is to have the following:

  1. Wifi and Ether 2 - DHCP server by router OS om Device; access to internet through WAN
  2. Ether 3 - DHCP client, passthrough to the WAN DHCP Server; access to internet through WAN
  3. Ether 4 - make sure i always retain access to the device

I followed (I hope) the instructions by @CGGXANNX and i must be missing something.

The following works:

  1. Ether 4 - gets an IP and can access the Device through WinBox; no internet access (as expected)
  2. Ether 3 - gets a correct IP from WAN DHCP server, has internet access
  3. Ether 2 and Wifi - No IP assigned and as such no internet

Here the config file:

# apr/08/2026 05:17:22 by RouterOS 7.6
# software id = 1VMW-EE1X
#
# model = L41G-2axD

/interface bridge
add admin-mac=48:A9:8A:8F:86:4D auto-mac=no comment=defconf ingress-filtering=no name=bridge vlan-filtering=yes
/interface wifiwave2
set [ find default-name=wifi1 ] channel.band=2ghz-ax .skip-dfs-channels=10min-cac .width=20/40mhz configuration.mode=ap .ssid=MikroTik-8F8650 disabled=no security.authentication-types=wpa2-psk,wpa3-psk
/interface vlan
add interface=bridge name=vlan-vlan vlan-id=200
add interface=bridge name=vlan-wan vlan-id=100
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
add comment="Management only" name=MGMT
add comment="Management and LAN" include=LAN,MGMT name=MGMTandLAN
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
add name=offbridge-dhcp-pool ranges=10.201.10.1-10.201.10.254
/ip dhcp-server
add address-pool=default-dhcp interface=vlan-vlan name=defconf
add address-pool=offbridge-dhcp-pool interface=ether4 name=offbridge-dhcp-server
/port
set 0 name=serial0
/interface bridge port
add bridge=bridge comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=ether2 pvid=200
add bridge=bridge comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=ether3 pvid=100
add bridge=bridge comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=wifi1 pvid=200
add bridge=bridge frame-types=admit-only-untagged-and-priority-tagged interface=ether1 pvid=100
/ip neighbor discovery-settings
set discover-interface-list=MGMTandLAN
/interface list member
add comment=defconf interface=vlan-vlan list=LAN
add comment=defconf interface=ether1 list=WAN
add comment=OffBridge interface=ether4 list=LAN
add interface=vlan-wan list=WAN
/ip address
add address=192.168.88.1/24 comment=defconf interface=vlan-vlan network=192.168.88.0
add address=10.201.10.1/24 interface=ether4 network=10.201.10.0
/ip dhcp-client
# DHCP client can not run on slave or passthrough interface!
add comment=defconf interface=ether1
add interface=vlan-wan
/ip dhcp-server network
add address=10.201.10.0/24 dns-server=10.201.10.1,10.201.10.1 gateway=10.201.10.1
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=192.168.88.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=input comment="modconf: allow from MGMT interface ether4" in-interface-list=MGMT
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" 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=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 time-zone-name=America/Los_Angeles
/tool mac-server
set allowed-interface-list=MGMTandLAN
/tool mac-server mac-winbox
set allowed-interface-list=MGMTandLAN

Where did i miss following the instructions ? or is something else going on

Thanks,

Wim

Two things are most probably creating problems:

  1. Prior to ROS v7.16 (like your version) you needed to manually add the bridge interface as a tagged member of the VLANs through the bridge VLAN table:
/interface bridge vlan
add bridge=bridge tagged=bridge vlan-ids=100,200
  1. If DNS aren't received through the WAN DHCP, some servers should be added like 8.8.8.8 or 1.1.1.1:
/ip dns
set servers=8.8.8.8,1.1.1.1
3 Likes

That did it - wow - thks

And i really should know better - always upgrade to a version that was around when a post/answer was given….

As stated by @TheCat12 in recent 7.16+ when you add vlan interfaces under bridge, it will create the dynamic connection for the bridge as tagged.

You can see in output of /interface/bridge/vlan print

Here's an example from RB760iGS with 7.19.6. See export of /interface at end. Note there is no /interface/bridge/vlan section, it is just the default.

[demo@MikroTik] > /interface/print
Flags: R - RUNNING; S - SLAVE
Columns: NAME, TYPE, ACTUAL-MTU, L2MTU, MAX-L2MTU, MAC-ADDRESS
#    NAME    TYPE      ACTUAL-MTU  L2MTU  MAX-L2MTU  MAC-ADDRESS      
0 R  ether1  ether           1500   1596       2026  DC:2B:AD:4D:EC:F1
1  S ether2  ether           1500   1596       2026  DC:2B:AD:4D:EC:F2
2  S ether3  ether           1500   1596       2026  DC:2B:AD:4D:EC:F3
3 RS ether4  ether           1500   1596       2026  DC:2B:AD:4D:EC:F4
4  S ether5  ether           1500   1596       2026  DC:2B:AD:4D:EC:F5
5  S sfp1    ether           1500   1596       2026  DC:2B:AD:4D:EC:F6
;;; WAN-vlan
6 R  br.100  vlan            1500   1592             DC:2B:AD:4D:EC:F2
;;; LAN-vlan
7 R  br.200  vlan            1500   1592             DC:2B:AD:4D:EC:F2
;;; vlan-aware
8 R  bridge  bridge          1500   1596             DC:2B:AD:4D:EC:F2
9 R  lo      loopback       65536                    00:00:00:00:00:00
[demo@MikroTik] > /interface/bridge/vlan print                         
Flags: D - DYNAMIC
Columns: BRIDGE, VLAN-IDS, CURRENT-TAGGED, CURRENT-UNTAGGED
#   BRIDGE  VLAN-IDS  CURRENT-TAGGED  CURRENT-UNTAGGED
;;; added by pvid
0 D bridge         1                  bridge          
                                      ether4          
;;; added by vlan on bridge
1 D bridge       100  bridge                          
                 200                                  
[demo@MikroTik] >
[demo@MikroTik] > /interface/export
# 2026-04-09 16:37:05 by RouterOS 7.19.6
# software id = *****
#
# model = RB760iGS
# serial number = ***********
/interface bridge
add admin-mac=******* auto-mac=no comment=vlan-aware name=bridge vlan-filtering=yes
/interface vlan
add comment=WAN-vlan interface=bridge name=br.100 vlan-id=100
add comment=LAN-vlan interface=bridge name=br.200 vlan-id=200
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=sfp1
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
add interface=br.100 list=WAN
add interface=br.200 list=LAN
1 Like

Solved by @TheCat12, I just showed how you can see the effect of the new changes to ROS 7.16 that dynamically add the tagged connections to the bridge for vlans where you add a vlan interface.

From the 17.6 release notes What's new in 7.16 (2024-Sep-20 16:00):

---snip---
*) bridge - added dynamic tagged entry when VLAN interface is created on vlan-filtering bridge;
---snip---
*) bridge - added message about who created a dynamic VLAN entry;
---snip---

This ROS change has made vlan configuration much less error prone, because forgetting to add the bridge in the /interface/bridge/vlan section was the reason for many people's problems.

BTW,

Unless your intent is for all vlans to be bridged between ether1 and ether3, I would remove the ingress-filtering on the bridge, or set it to ingress-filtering=yes (which is the default, so it won't show up in non-verbose exports). I would also probably limit frame types to untagged on ether1 and ether3, unless you are expecting to use tagged traffic.

1 Like

yes-was under the impression i could select more then one answer - so reverted; Your post also would have show how to solve it

In any case - thanks for all i learn from you on this forum

1 Like