What excatly is not working? Did you allow UDP 500 and esp protocol on both side on mkt firewall (input chain)? What the log says (you can turn on ipsec log, System-Logging section)?
IPsec will not work with this setup. For Site-to-Site to work properly both VPN end-points should have real IP addresses assigned to them. Placing your VPN end-points to DMZ is not enough. Switch your DSL routers to bridge mode, terminate PPPoE on your Mikrotik devices, and then try to setup IPsec again.
Unfortunately terminate PPPoE on my Mikrotik devices is not possible as the ISP has provided the DSL Routers which provide static public IPs. Is there a recommended site to site VPN when MikroTik’s only have a default gateway connecting to Internet?
I don’t see any problem here. Currently your DSL Router should be terminating PPPoE for you. Ask your ISP for the PPPoE username/password, configure DSL Router to work as a bridge, create PPPoE client interface on Mikrotik with the above mentioned username and password and you will have the same static IP address on your Mikrotik device as you have on your DLS router right now.
The problem is you have NAT Traversal disabled, yet you are connecting through NAT.
Make sure the DLS routers forward all L4 protocols to the mikrotiks, not just TCP/UDP. I have seen an issue like this with cheap dsl routers. IPSec works with its own protocol on L4, “IPSec ESP”.
Make sure you allow IPSec ESP, UDP 500 and UDP 4500 on both mikrotiks in the firewall input chain.
Make sure you enable NAT-T in both mikrotiks Peer config.
No it should not. In a typical site-to-site IPsec setup, phase 1 uses external VPN endpoint IP as its ID, so validation of the remote peer will be failing constantly on the responder device.
And that is what NAT-T is for. NAT-T makes it possible to use IPSec through NAT and it will work.
That is why NAT-T is configured in Phase 1 config; “/ip ipsec peer”.
True enough that I personally have NOT tried getting it working with both ends of the tunnel behind NAT, but we regularly deploy IPSec when one of the endpoints is behind NAT, and it works no problem.