Ok, pode ser porque eu sou densa ou talvez não esteja encontrando a fonte certa, mas não consigo entender por que uma dessas configurações do IPTABLES seria melhor que a outra.
Aqui está a minha configuração:
Eu tenho uma caixa que está servindo como um proxy transparente e um roteador ou classificação. Ele possui duas interfaces, ETH0 e ETH1, e o seguinte esquema de endereço:
ETH0 = DHCP ETH1 = 192.168.5.1/24 servindo DHCP para a rede 192.168.5.0/24 para clientes atrás dela na LAN
Eu tenho o privoxy instalado e escutando na porta 8080 como um proxy transparente. O que estou realizando com essa configuração é poder soltar essa caixa em uma rede existente com configuração mínima e clientes conectados ao proxy.
Aqui está o meu arquivo IPTABLES original
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Essa configuração funciona bem e o tráfego flui para frente e para trás sem problemas. Recebo o endereço IP dos clientes de origem nos arquivos de log privoxy, e a vida é boa.
Minha confusão surge quando começo a olhar para as configurações de outras pessoas e vejo que elas estão usando DNAT em vez de REDIRECT, e estou tentando entender o verdadeiro benefício de uma sobre a outra. Aqui está um exemplo de configuração:
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Novamente, essa configuração também funciona e me fornece tudo o que preciso da perspectiva de log ...
Qual é o certo, ou talvez MAIS certo, do que o outro?
Obrigado por reservar um tempo para ler até aqui ...
REDIRECT
altera o endereço IP de destino a ser enviado para a máquina, conforme respondido por Warner @. Mas eu diria que a resposta não é totalmente correta ou um pouco enganadora.REDIRECT
não é apenas para redirecionar pacotes locais. É realmenteDNAT
em que o endereço IP de destino a ser usado está implícito, 127.0.0.1 se for um pacote local ou o endereço IP da interface da máquina, caso contrário, 192.168.5.1 no caso do OP.Portanto, nesta questão, não importa qual seja o destino final, os pacotes devem primeiro alcançar o proxy, portanto,
REDIRECT
é perfeitamente adequado.Como
REDIRECT
você não precisa especificar o endereço IP, ele será o correto, mas ele terá algumas vantagensDNAT
:Se o endereço IP da máquina for alterado por algum motivo, você não precisará modificar suas regras e, em particular
DNAT
, não funcionará para interfaces controladas por DHCP.Você pode escrever e manter as mesmas regras para vários sistemas (várias instâncias de proxy, por exemplo) sem manter versões ligeiramente diferentes devido aos endereços IP específicos.
fonte