Change the rule to:
add action=masquerade chain=srcnat comment="hairpin nat" \
dst-address=192.168.88.0/24 src-address=192.168.88.0/24
Note: You don’t need dst-address=!192.168.88.1 or dst-address-type=!local. If you look at the flowchart from here:
If the destination address is 192.168.88.1 (the router’s address) then SRCNAT is skipped (step #24).