While using recursive routing in a different routing table than the main, if you use a recursive route over a wireguard tunnel it won’t work because nexthope can’t be calculated.
If you change the routing table of the routes to the main one it works as expected, so this seems to happend on tables different than the main one.
As an example, this would be the config on the routing table “spain”:
/ip/route> print detail where routing-table=spain
11 As ;;; Check connectivity over gateway 1
dst-address=8.8.4.4/32 routing-table=spain gateway=wireguard_interface immediate-gw=wireguard_interface distance=1 scope=10 target-scope=10 suppress-hw-offload=no
6 Is ;;; Route if connectivity works over gateway 1
dst-address=0.0.0.0/0 routing-table=spain gateway=8.8.4.4 immediate-gw="" check-gateway=ping distance=1 scope=30 target-scope=11 suppress-hw-offload=no
This doesn’t work, but if you change this routes to the main table, they will start working.
Mikrotik support tells me that recursive routing needs an IP gateway, but in wireguard, the concept of IP gateway does not apply. You have peers and you can route traffic to that peers, but you don’t use an IP to route traffic, you use the wireguard interface itself, and it will handle the routing with it’s peers. Could there be a way to make it work? If it works on main routing table it could be possible to make it work on other tables.

