Linux altera o endereço IP da origem do tráfego de entrada

4

Eu tenho um serviço da Web em execução na porta X. Ele nunca foi planejado para ser executado fora de uma rede local, mas gostaria de acessá-lo pela Internet. Portanto, preciso alterar o endereço IP de origem de todos os pacotes de entrada para um local (192.168.2.100, por exemplo). Caso contrário, o serviço da Web responderá com um erro.

Então, aqui está o que eu preciso:

Se eu enviar um pacote do meu computador doméstico com o IP X público para o endereço IP público Y do meu servidor, o endereço IP de origem (nesse caso, X) precisará ser alterado para um local (192.168.2.1, por exemplo). Depois disso, o pacote deve ser passado para o aplicativo da web que está sendo executado no mesmo servidor na porta 80.

    
por Ka Rl 09.06.2016 / 09:05

2 respostas

6

OK, agora acho que entendo o que você quer. Este é um caso muito especial e diferente da abordagem normal encaminhamento de porta que eu postei anteriormente (veja abaixo). As seguintes regras devem fazê-lo.

SNAT em pacotes de entrada

Eu assumo o seguinte:

  • <x> : IP público do servidor
  • <y> : IP público do cliente
  • <a> : IP interno do servidor ( 192.168.2.1 )
  • <b> : IP "faked" interno do cliente ( 192.168.2.100 )
  • <if> : interface externa (por exemplo, eth0 )

apenas SNAT

Esta regra irá alterar o endereço de origem do pacote:

iptables -t nat -A INPUT -p tcp -d <x> --dport 80 -s <y> -j SNAT --to-source <b>

Combinado DNAT e SNAT:

Estas regras alterarão o endereço de origem e destino do pacote:

iptables -t nat -A PREROUTING -i <if> -p tcp -d <x> --dport 80 -s <y> \
    -j DNAT --to-destination <a>:80
iptables -t nat -A INPUT -p tcp -d <a> -s <y> --dport 80 \
    -j SNAT --to-source <b>

Não se esqueça de ACEITAR os pacotes na tabela de filtros.

Regra de encaminhamento de porta DNAT comum para comparação (sem SNAT):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 \
    -j DNAT --to-destination 192.168.2.1:80

Isso encaminhará a porta 8080 nos pacotes recebidos na interface externa (neste exemplo eth0 ) para o host interno 192.168.2.1 para porta 80 . Substitua interface , protocolo , dport e para destino com suas configurações.

Esta regra aceita o pacote modificado:

iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT
    
por 09.06.2016 / 09:47
1

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport *$srcPortNumber* -j REDIRECT --to-port *$dstPortNumber*

Você irá alterar o atributo -i se a sua NIC não estiver na eth0

Editar # 1

Você pode digitar --dport e --to-port para definir o endereço ip com porta para exm: 192.168.0.1:80

    
por 09.06.2016 / 09:12