The reason is again the fact that you use the unusual network setup with two subnets on the same interface but your firewall rules are copied from a setup which relies on interface name as an unambiguous information about packet source. So what actually happens is that you assign a routing-mark also to packets coming from the LTE gateway and destined to your LAN devices, which makes them use the default route with that routing-mark because the routing-mark wins over the fact that the destination address is in a locally present subnet.
So using @Sob’s approach here because your existing configuration is already complex enough, add the following to your configuration:
/ip route rule add dst-address=10.0.0.0/24 action=lookup-only-in-table table=main
This routing rule will override any routing mark assigned and make sure that packets for devices in local LAN will be routed properly, using the dynamic routes for directly connected subnets which are only added to the default routing table (main).
Also your PCC rules rely on the wrong assumption that whatever comes from bridge is coming from the LAN subnet. Your action=mark-connection rules rewrite already assigned connection-marks with new ones; this doesn’t matter too much for packets sent from the LAN subnet as the PCC gives the same results for all packets belonging to the same direction of the same connection, but it is a disaster for packets coming from the LTE where the roles of src and dst address and port are swapped so the PCC matches are different. One way to avoid this is to only assign connection-marks to packets belonging to connections which don’t have any yet. To do so, it is enough to add connection-mark=no-mark condition to the action=mark-connection rules.
You are another victim of a common misconception. The packets which come from the internet via the LTE gateway do not have the LTE gateway’s IP address as source one. They keep the actual IP address of the remote sender. So to identify such packets, you have to use a different set of conditions in that rule, such as in-interface=bridge src-address=!10.0.0.0/24.
The IP address of a gateway configured for a route is never used in packet’s header. It is only used to determine the MAC address of the gateway device so that the packet with the original destination IP address unchanged could be packed into an L2 frame and sent to that MAC address.
So all in all the following modifications are required:
/ip firewall mangle
add chain=input in-interface=pppoe-out1 connection-mark=no-mark action=mark-connection new-connection-mark=WAN1_conn
add chain=input src-address=192.168.8.1 in-interface=bridge src-address=!10.0.0.0/24 connection-mark=no-mark action=mark-connection new-connection-mark=WAN2_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting dst-address=192.168.8.0/24 action=accept src-address=192.168.8.1
add chain=prerouting dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses-and-ports:2/0 connection-mark=no-mark action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses-and-ports:2/1 connection-mark=no-mark action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=bridge action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=bridge action=mark-routing new-routing-mark=to_WAN2
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.8.1 routing-mark=to_WAN2 check-gateway=ping
/ip firewall nat
add chain=srcnat dst-address=192.168.8.1 action=masquerade
You can use DHCP to force a specific configuration to a specific host, but it is not possible to force a gateway from some subnet to a device which doesn’t have an IP address from that same subnet. So a device which has only an address from 10.0.0.0/24 cannot be given a gateway from 192.168.8.0/24.
What you probably actually want (do you remember the sticker “I wanted a Lamborghini, but I was unable to pronounce it?”) is that for a particular device, the PCC rules would be overridden and connections of that device would always be handled using the to-WAN2 table. So do exactly that - create a static DHCP lease for that device’s MAC address, causing it to always get the same IP address (say, 10.0.0.10) while the other settings like default gateway, DNS etc. remain the same like for all the other devices, and insert the following rule just before the PCC rules:
add chain=prerouting dst-address-type=!local in-interface=bridge src-address=10.0.0.10 connection-mark=no-mark action=mark-connection new connection-mark=WAN2_conn passthrough=yes