Having the router use a provided /29 network instead of PPPoE default route

Hi all. I’m fairly new to RouterOS and setting up a somewhat complex home routing environment. I swear I have searched the forums and the documentation, but I think I am struggling to find the right terms to search on.

Here’s the deal. I’ve got BT Infinity for Business, which uses PPPoE. BT has assigned me a /29. Call it A.A.A.A/29. I’m using it. I have dst-nat and src-nat rules and everything is fine.

The thing is, when I connect the PPPoE client, BT also assigns B.B.B.B/32 to the PPPoE client connection. No big deal. It’s also sets a the default route using that IP. Now, A.A.A.A/29 and B.B.B.B/32 are nothing near each other. Two totally different networks. However, through the magic of BT, if I source packets from either IP range, they’ll work.

Here’s the problem. When the router itself issues a DNS query, the source IP of the DNS query is B.B.B.B/32. I use OpenDNS, which means I need my source IP of the DNS query (the one issued by the RouterOS itself) to be from my A.A.A.A/29.

Right now, my dhcp-server tells internal clients to use the router’s internal IP for DNS. Clients’ DNS queries come from clients to RouterOS. It recursively tries to resolve them, but its source IP is the B.B.B.B/32 address, so OpenDNS doesn’t apply my policy, because the DNS queries aren’t coming from my IP (one of the A.A.A.A/29 IPs). If my dhcp-server tells clients to use OpenDNS directly, then they get the OpenDNS policy applied because the client’s source IP is NATted correctly. So this is sorta functional, but I’m missing out on any caching or performance benefits from letting the RouterOS be a caching resolver on my internal network. I want clients to use RouterOS as their first resolver, and have RouterOS recursively resolve using OpenDNS, but with the source IP from the router in the right network.

I’m new, so it’s probably an easy fix. I just need to set the source IP for packets issued from the router itself.