Uso de 'IP da máquina local' na regra iptables?

1

Eu escrevi as regras iptables de encaminhamento de porta que planejo distribuir para várias máquinas de maneira automatizada usando Ansible . No entanto, a regra da cadeia de POSTROUTING requer uma modificação do endereço de origem para ser o da máquina local, para que a máquina que recebe os pacotes encaminhados saiba onde responder. A regra parece:

iptables -t nat -A POSTROUTING -d 192.168.11.2 -o eth1 -p tcp --dport 22 -j SNAT --to-source 192.168.11.1

Ou seja, depois de usar o DNAT em PREROUTING para alterar o endereço de destino para 192.168.11.2 (e ACCEPT ing), devo usar SNAT para alterar o endereço de origem no cabeçalho da rede antes de enviar o pacote para a rede.

Esta regra pode ser escrita de forma a especificar simbolicamente que --to-source deve ser "o IP da máquina local"? Eu realizei isso compilando os comandos necessários em uma série de comandos canalizados:

iptables -t nat -A POSTROUTING -d 192.168.11.2 -o eth1 -p tcp --dport 22 -j SNAT --to-source $(ifconfig eth1 | grep -i "inet " | awk '{print $2}')

No entanto, minha intenção é gerar um arquivo de configuração iptables e, se possível, implementá-lo em cada máquina.

    
por sherrellbc 04.01.2017 / 14:34

2 respostas

2

Os scripts de configuração do iptables são apenas scripts de shell. Você pode adicionar o endereço IP local a uma variável da maneira 'normal':

LOCALIP='hostname -i'

e, em seguida, substitua quaisquer instâncias de endereço IP com codificação

$LOCALIP
    
por 04.01.2017 / 14:52
0

Você poderia usar o alvo MASQUERADE em vez de SNAT.

Você pode querer ler Diferença entre SNAT e Masquerade no entanto, como MASQUERADE tem uma sobrecarga.

    
por 04.01.2017 / 16:29