Bashing my head in here.
I should note the problem I’m trying to solve. I have a dynamic WANIP, and I am self-hosting a box with ssh on it for remote access and git repository stuff. Obviously, without NAT hairpinning, if I attempt to connect to my box using my public IP within my own network, my endpoint is my router and not my box. This is terribly frustrating as one might guess.
I’ve read multiple forum posts about this topic already. Maybe it’s a lack of understanding on my part or I’m missing something obvious, but adding this following rule:
chain=srcnat action=masquerade src-address=192.168.69.0/24 dst-address=192.168.69.0/24 log=yes log-prefix="hairpindebug:"
… does not do anything. I’m using an rb750r3 with pretty much just a stock configuration, minus some other NAT rules for port forwarding. I have zero clue why this may not be working, and so I must drag myself to the dark dungeon known as the forum to try and see if any more knowledgeable people can help me out. I will be posting the rest of my filter and NAT rules just in case those are the culprits, and I will post whatever else configuration that might need to be looked at. Thank you very much in advance.
Filter Rules:
0 D ;;; special dummy rule to show fasttrack counters
chain=forward action=passthrough
1 ;;; defconf: accept established,related,untracked
chain=input action=accept connection-state=established,related,untracked log=no
log-prefix=""
2 ;;; defconf: drop invalid
chain=input action=drop connection-state=invalid
3 ;;; defconf: accept ICMP
chain=input action=accept protocol=icmp log=no log-prefix=""
4 ;;; defconf: accept to local loopback (for CAPsMAN)
chain=input action=accept dst-address=127.0.0.1
5 ;;; defconf: drop all not coming from LAN
chain=input action=drop in-interface-list=!LAN
6 ;;; defconf: accept in ipsec policy
chain=forward action=accept ipsec-policy=in,ipsec
7 ;;; defconf: accept out ipsec policy
chain=forward action=accept ipsec-policy=out,ipsec
8 ;;; defconf: fasttrack
chain=forward action=fasttrack-connection connection-state=established,related
9 ;;; defconf: accept established,related, untracked
chain=forward action=accept connection-state=established,related,untracked
10 ;;; defconf: drop invalid
chain=forward action=drop connection-state=invalid
11 ;;; defconf: drop all from WAN not DSTNATed
chain=forward action=drop connection-state=new connection-nat-state=!dstnat
in-interface-list=WAN
NAT Rules:
0 ;;; NAT Hairpin
chain=srcnat action=masquerade src-address=192.168.69.0/24
dst-address=192.168.69.0/24 log=yes log-prefix="hairpindebug:"
1 ;;; defconf: masquerade
chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix=""
ipsec-policy=out,none
2 X ;;; debian-music.local expose http port
chain=dstnat action=dst-nat to-addresses=192.168.69.6 to-ports=80 protocol=tcp
in-interface-list=WAN dst-port=80 log=no log-prefix=""
3 ;;; Expose debian-music.local ssh port
chain=dstnat action=dst-nat to-addresses=192.168.69.6 to-ports=22 protocol=tcp
in-interface-list=WAN dst-port=22 log=yes log-prefix="ssh:debian-music.local:"