iptables: Não há DNAT na cadeia INPUT, alternativas?

1

Eu tenho um processo que acha que seu endereço IP local é 192.168.1.101 , executando em um host com endereço IP local 192.168.1.130 . Este processo está procurando por pacotes enviados de um servidor com o ip 80.80.80.80 .

Só para ficar claro, o processo espera receber pacotes como este:

  • src_addr : 80.80.80.80
  • dst_addr : 192.168.1.101

E envia pacotes com esta aparência:

  • src_addr : 192.168.1.101
  • dst_addr : 80.80.80.80

Há um pacote vindo do servidor que preciso processar e não consigo atualizar o processo nem permitir sua reconexão.

Meu pensamento era usar o iptables para alterar o endereço de destino do pacote quando ele chegasse. Isso significava usar as cadeias PREROUTING ou INPUT , como ele afirma here :

Chain Traversal Order

  • Incoming packets destined for the local system: PREROUTING -> INPUT

Este comando é exatamente o que eu quero:

iptables -t nat -A INPUT -s 80.80.80.80/32 -d 192.168.1.130/32 -p tcp -j DNAT --to-destination 192.168.1.101

Apenas quando o executo recebo:

x_tables: ip_tables: DNAT target: used from hooks INPUT, but only usable from PREROUTING/OUTPUT

Esse problema é mostrado na artigo da DigitalOcean , mas nenhuma razão é dada a respeito de porque uma regra como essa não é permitida. Eu também verifiquei o manual do iptables e ele nem menciona ter uma cadeia INPUT na tabela nat, nem o fluxograma do netfilter , o que é confuso.

Existe alguma maneira de realizar o que estou tentando fazer e deixar o processo ainda funcionar, mesmo que esteja usando um ip local diferente do host?

    
por David Elliott 13.04.2018 / 14:28

0 respostas