Você precisa apenas sair da tabela PREROUTING antes de chegar à linha DNAT :
iptables -t nat -I PREROUTING -p tcp -s <exempt ip> -j RETURN
Isso deve inserir ( -I ) uma nova regra para sair ( -j RETURN ) da tabela de roteamento de qualquer pacote do IP isento ( -s <exempt ip> ) como a primeira regra, para que seja atingido antes de chegar ao DNAT rule.
(Você também pode precisar fazer algo semelhante em POSTROUTING , não tenho certeza.)
A outra opção é criar um conjunto de IPs ( man ipset ) para os IPs que você deseja isentar e, em seguida, adicionar uma correspondência invertida às regras DNAT e SNAT :
ipset create exempt hash:ip
ipset add exempt <exempt ip 1>
ipset add exempt <exempt ip 2>
ipset add exempt <exempt ip 3>
iptables -t nat -A PREROUTING -p tcp --dport 80 -m set ! --match-set exempt src -j DNAT --to-destination 10.0.0.1:80 -i eth0
Isso é mais fácil de gerenciar porque você pode facilmente adicionar ou remover IPs isentos do ipset sem modificar o iptables.