Well, here's what I did, and it works!
First, /32 routing... I found
this post, which explains how to do it. The beauty on this, is that I can utilize a /28 (or whatever sized network) in multiple locations, as the shortest prefix is always preferred.
So, on my gateway:
/ip address
add address=12.34.56.209/28 disabled=no interface=lo0 network=12.34.56.208
add address=12.34.56.209/32 disabled=no interface=backbone network=12.34.56.219
On the remote system, I have a LOT of stuff going on. In addition to being an OSPF router, I'm also doing some VLAN bridging, and now NAT for an attached public access network.
/ip address
add address=172.17.85.233/26 comment="primary routing interface" disabled=no interface=backbone network=172.17.85.192
add address=12.34.56.219/28 comment="public access WAN" disabled=no interface=backbone network=12.34.56.208
add address=172.17.82.1/24 comment="public access LAN" disabled=no interface=ether8 network=172.17.82.0
Now, here's where things get tricky (for me at least). First, I mangled some stuff (based on a few posts I found):
/ip firewall mangle
add action=accept chain=prerouting disabled=no dst-address=172.17.0.0/16 in-interface=ether8
add action=mark-connection chain=prerouting connection-mark=no-mark disabled=no \
dst-address=!172.17.0.0/16 in-interface=ether8 new-connection-mark=need_nat \
passthrough=yes src-address=172.17.82.0/24
add action=mark-routing chain=prerouting connection-mark=need_nat disabled=no \
in-interface=ether8 new-routing-mark=to_nat passthrough=yes src-address=172.17.82.0/24
I'm rather confused on this though... the first mangle rule accepts traffic to local destinations, this is acceptable. The second rule does a connection mark and the third rule does a routing mark. I'm not sure why I need both of these, but when I try each on their own, I get no love.
Anyways, now that we're mangled, we need NAT and a route:
/ip firewall nat
add action=masquerade chain=srcnat connection-mark=need_nat disabled=no
/ip route
add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=12.34.56.209 routing-mark=to_nat scope=30 target-scope=10
Note that this is my only static route. The regular default and other routes are learned via OSPF.
This is not how I originally wanted to achieve this, but it works and does not interfere with my use of other addresses within the given /28 subnet. In fact, now that I have this working as a model, I'll be able to reclaim 6 additional addresses by not using a pair of /30 subnets elsewhere. Pretty cool.
Maybe someday, I'll sit down and learn ipchains and why there are so many different chains and types of marks.