My hairpin setup has always worked. Yesterday we installed a mikrotik behind a Verizon Fios modem/router and it did not work. We put the mikrotik in the dmz of the Verizon. We can VPN to it, it’s just the hairpin that doesn’t work. I think the Verizon is somehow affecting the hairpin. We have never had an issue before. Here is our hairpin setup:
/ip firewall filter
FORWARD
add chain=forward comment=“DST NAT - Port Foward” dst-address=192.168.1.20
dst-port=81 protocol=tcp
It sounds like public address is on other router. In that case, your dstnat rule can’t work, because it’s looking for packets destined to local address. And if public address is somewhere else, it’s not local.
You’ll need another dstnat rule with dst-address= instead of dst-address-type=local. That would be problem for dynamic addresses, but it’s solvable if you put your dynamic hostname in address list, let RouterOS resolve it and use dst-address-list=.
The weird thing is, it works when using another isp at another location. It seems the problem is somehow with Verizon. We did the exact same thing with time warner and it works fine.
You may be right! I forgot that the I used an internal ip address for the camera system so that’s why it was working.
Can you help me figure out a way to make it work? A lot of times we have to put the mikrotik behind the clients router in the dmz zone because the clients router can’t be bridged. We have no other option. I don’t like to forward ports, but sometimes the clients request it. When we do, we need the hairpin to work.
Connections from internet (using forwarded port) will still go to 192.168.1.20. So either keep the old rule, or if you remove it, you’d have to add 192.168.1.20 to address list.