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?
Tags networking iptables linux