Por que essa regra do iptables que faz o encaminhamento de porta não está funcionando?

5

Eu tenho um servidor vinculado a localhost:7060 . Está usando o soquete ipv6 em vez do ipv4. Abaixo está netstat outout.

# netstat -an
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 10.200.32.98:1720      0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:4122           0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:4123           0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:4123         127.0.0.1:43051        ESTABLISHED
 tcp       0      0 10.200.32.98:5555      10.200.32.44:53162     ESTABLISHED
tcp6       0      0 :::5060                :::*                   LISTEN
tcp6       0      0 ::ffff:127.0.0.1:7060  :::*                   LISTEN
tcp6       0      0 :::23                  :::*                   LISTEN
tcp6       0      0 ::ffff:10.200.32.98:23 ::ffff:10.200.32.142:43505 ESTABLISHED
tcp6       0      0 ::ffff:127.0.0.1:43051 ::ffff:127.0.0.1:4123  ESTABLISHED
tcp6       0      0 ::ffff:10.200.32.98:23 ::ffff:10.200.32.44:53195 ESTABLISHED
udp6       0      0 :::5060                :::*                   CLOSE
# 

Eu quero configurar uma regra de encaminhamento de porta que aceite conexões na porta 24 (em todas as interfaces loopback e eth0) e encaminhe os dados para localhost:7060 .

É assim que estou configurando a regra iptables:

iptables -t nat -A PREROUTING -p tcp --dport 24 -j DNAT --to 127.0.0.1:7060**

Não está funcionando. Quando eu telnet de caixa diferente, vejo o seguinte

$telnet 10.200.32.98 24
Trying 10.200.32.98...

Se eu alterar o servidor para vincular a *:7060 e definir a regra a seguir, parece funcionar bem.

iptables -t nat -A PREROUTING -p tcp --dport 24 -j REDIRECT --to-port 7060

Mas isso tornará meu servidor disponível na interface WAN, do qual não gosto.

Eu sinto que tinha algo a ver com o soquete ipv6 (linha tcp6 na saída netstat). Tudo isso é feito em um dispositivo Android com uma imagem personalizada da plataforma Android.

Como faço para que isso funcione?

    
por videoguy 30.11.2011 / 17:22

2 respostas

0

Quando os pacotes de resposta retornam da porta 7060 e são enviados para o roteador, esses pacotes também precisam de uma operação de máscara de remetente, para mascarar esses endereços de origem de pacotes ao endereço do roteador (127.0.0.1) e porta como 24.So você precisa adicionar uma regra SNAT iptables para fazer isso funcionar.

iptables -t nat -A POSTROUTING -p tcp --sport 7060 -j MASQUERADE --to-ports 24

Mesmo que os pacotes sejam gerados pelo host local, ele também irá para a cadeia POSTROUTER. A operação REDIRECT faz automaticamente estas duas coisas para você, mas se seu serviço estiver em outro servidor em sua rede local, você terá que usar SNAT e DNAT.

    
por 15.12.2017 / 07:45
-1

Acho que você deve usar --sport 24 em vez de --dport 24 , pois o tráfego é recebido , não é de saída. Embora, como Garret disse , provavelmente você deve usar ip6tables ...

    
por 10.02.2012 / 09:35