stop IPTABLES from prerouting to local IPs
Solution 1:
If you only want traffic to the host IP to get NATed somewhere else, it should help to specify the host IP with the -d
option in your iptables rule:
-A PREROUTING -i vmbr0 -p tcp -m tcp -d $HOSTIP --dport 2222 -j DNAT --to-destination 192.168.4.100:22
Solution 2:
The ACCEPT
target is the equivalent of IGNORE
in NAT rules. So to exempt 192.168.0.0/16
(I'm assuming you don't really mean 192.0.0.0/8
) addresses from any NAT you could say
iptables -t nat -I PREROUTING 1 -s 192.168.0.0/16 -j ACCEPT
Note that this will exempt those addresses from all NAT rules that follow in the PREROUTING
chain.