No, sorry for confusing you, that one with port 666 was for @rextended. You can try this:
/ip firewall nat
add chain=dstnat dst-address-type=local protocol=tcp dst-port=81 action=dst-nat to-addresses=192.168.88.2
/ip firewall mangle
add chain=prerouting connection-mark=debug-pf action=log log-prefix=port-forward
add chain=prerouting connection-state=new dst-address-type=local protocol=tcp dst-port=81 action=mark-connection new-connection-mark=debug-pf log=yes log-prefix=port-forward-NEW passthrough=yes
add chain=forward connection-mark=debug-pf action=log log-prefix=port-forward
add chain=postrouting connection-mark=debug-pf action=log log-prefix=port-forward
And you should see this in log:
port-forward-NEW prerouting: in:lte1 out:(unknown 0), …, proto TCP (SYN), c.c.c.c:xxx->p.p.p.p:81, …
port-forward forward: in:lte1 out:bridge, …, proto TCP (SYN), c.c.c.c:xxx->192.168.88.2:80, NAT c.c.c.c:xxx->(p.p.p.p:81->192.168.88.2:80), …
port-forward postrouting: in:lte1 out:bridge, …, proto TCP (SYN), c.c.c.c:xxx->192.168.88.2:80, NAT c.c.c.c:xxx->(p.p.p.p:81->192.168.88.2:80), …
port-forward prerouting: in:bridge out:(unknown 0), …, proto TCP (SYN,ACK), 192.168.88.2:80->c.c.c.c:xxx, NAT (192.168.88.2:80->p.p.p.p:81)->c.c.c.c:xxx, …
port-forward forward: in:bridge out:lte1, …, proto TCP (SYN,ACK), 192.168.88.2:80->c.c.c.c:xxx, NAT (192.168.88.2:80->p.p.p.p:81)->c.c.c.c:xxx, …
port-forward postrouting: in:bridge out:lte1, …, proto TCP (SYN,ACK), 192.168.88.2:80->c.c.c.c:xxx, NAT (192.168.88.2:80->p.p.p.p:81)->c.c.c.c:xxx, …
#1 - request from client c.c.c.c comes to public address p.p.p.p
#2 - packet is passing through router after dstnat
#3 - packet successfully passed through router and is being sent to server
#4 - response from server
#5 - response passing through router
#6 - response being sent to client
If you don’t see #1, then requests are not reaching your router at all. If you don’t see #4, then internal server is not responding.