DNAT genericamente?

1

Como você configuraria o iptables para enviar genericamente pacotes de alguma porta, digamos a porta tcp 80 para as máquinas corretas (que não estão todas na mesma sub-rede)?

Por exemplo: iptables -t nat -A PREROUTING -s 0.0.0.0//0 -p tcp -d $NATIP -j DNAT --to-destination $machineIP
iptables -t nat -A POSTROUTING -s $machineIP -p tcp -d 0.0.0.0//0 -j SNAT --to-source $NATIP

O acima iria enviar pacotes corretamente para e de uma única máquina, mas como você faria isso para n máquinas. Como eu não acredito que um destino genérico como 192.168.1.0/25 funcionaria.

Você de alguma forma marca os pacotes então quando eles retornam você pode enviá-los para o IP correto?
Isso é feito com algum outro comando?

    
por kevin 03.02.2013 / 18:12

1 resposta

0

Algumas considerações primeiro. Se você tiver 0.0.0.0/0 como origem ou destino, não precisará especificá-lo na sua regra.

Agora, considerando sua pergunta, se você tiver um NATIP para cada máquina, é apenas uma questão de criar um par de regras para cada máquina. Se você quiser usar o mesmo NATIP para várias máquinas, você precisa de algo para diferenciar, se não a porta, então o IP de origem. Caso contrário, o iptables, por si só, não pode escolher para onde enviar o pacote. (vai voltar a esse assunto)

Para fazer a saída NAT, você pode criar uma regra para cada máquina ou criar uma tabela e definir todos os IPs e sub-redes que você deseja traduzir.

iptables -t nat -N addrTranslate
iptables -t nat -A OUTPUT -s x.x.x.x -j addrTranslate
iptables -t nat -A OUTPUT -s y.y.y.y/24 -j addrTranslate
iptables -t nat -A addrTranslate -j SNAT --to z.z.z.z

Uma alternativa para várias máquinas NAT com um único endereço IP é configurar um proxy com o apache.

    
por 03.02.2013 / 20:35

Tags