Como excluir múltiplos destinos do NAT NETMAP estático?

1

Eu tenho uma configuração NAT 1: 1 estática no iptables que exclui a sub-rede maior (para que os hosts NETMAP ainda possam acessar outros hosts locais que não sejam NAT estáticos) da seguinte forma:

*nat
-A PREROUTING --destination 128.128.196.32/27 -j NETMAP --to 10.10.20.32/27
-A POSTROUTING --source 10.10.20.32/27 ! -d 10.0.0.0/8 -j NETMAP --to 128.128.196.32/27

Eu também gostaria de excluir endereços IP voltados para o público, de modo que os hosts NAT estáticos ainda possam alcançar o endereço IP público de outro host NAT estático na máquina. Mas vários destinos negados não parecem ser suportados. Isso gera um erro:

*nat
-A PREROUTING --destination 128.128.196.32/27 -j NETMAP --to 10.10.20.32/27
-A POSTROUTING --source 10.10.20.32/27 ! -d 10.0.0.0/8 ! -d 128.128.196.0/24 -j NETMAP --to 128.128.196.32/27

Como posso configurar o iptables para permitir que hosts estáticos NAT NETMAPed alcancem outros endereços públicos na máquina iptables?

    
por Andy Shinn 12.12.2012 / 20:19

1 resposta

4

Você precisará usar uma cadeia adicional e RETURN antes das regras do NETMAP.

*nat
-N NETMAP_src101020
-A NETMAP_src101020 -d 10.0.0.0/8 -j RETURN
-A NETMAP_src101020 -d 128.128.196.0/24 -j RETURN
-A NETMAP_src101020 -j NETMAP --to 128.128.196.32/27
-A PREROUTING --source 10.10.20.32/27 -j NETMAP_src101020
-A PREROUTING --destination 128.128.196.32/27 -j NETMAP --to 10.10.20.32/27

Portanto, qualquer pacote de 10.10.20.32/27 é enviado para a cadeia NETMAP_src101020. Se o pacote for destinado a 10.0.0.0/8, então RETURN dessa cadeia; mesmo se o pacote for destinado a 128.128.196.0/24. Só então chega à regra atual do NETMAP.

Espero que isso faça sentido o suficiente; Eu acho que é mais fácil de explicar, mostrando-lhe do que uma explicação prolixa.

    
por 17.12.2012 / 06:13