Por causa do DNAT, você está agora em roteamento . Sua cadeia INPUT não é mais usada para esse tráfego DNAT e agora é a cadeia FORWARD que é percorrida. O novo destino é 172.21.0.2:8080
e é com isso que as regras devem se preocupar agora, não com <VM local IP>:8090
.
Portanto, com a DNAT em vigor, você deve bloquear seu tráfego com (na ordem correta: permitir exceção e, em seguida, proibir todo o restante):
iptables -A FORWARD -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -d 172.21.0.2 -p tcp --dport 8080 -j DROP
Para ter certeza de que é feito antes de qualquer regra do sistema, você pode fazer:
iptables -I FORWARD 1 -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -I FORWARD 2 -d 172.21.0.2 -p tcp --dport 8080 -j DROP
Essas regras podem impedir que outros contêineres cheguem a esse contêiner dependendo da configuração, portanto, talvez seja necessário adaptá-los (declarando a interface de entrada externa, por exemplo). De qualquer forma você tem que encontrar uma maneira de integrar isso muito bem com o método de firewall do sistema.