Tunnel server - redirecionar conexões

1. Tunnel server - redirecionar conexões

Lucas
rglnx

(usa Outra)

Enviado em 28/09/2011 - 00:08h

Boa Noite,

Estou tentando criar um tunnel server, que irá receber conexões e redirecionar para outro ip.

Tem como fazer pelo iptables? Se sim, como?

Olhando no Google vi a possibilidade de criar regras no iptables para redirecionar, algo do tipo:

iptables -t nat -i <ethX> -A PREROUTING -p tcp --dport <porta do servidor que irá receber a conexão> -j REDIRECT --to <ip para onde vai redirecionar> --to-port <porta para onde vai redirecionar>

É mais ou menos isso? Tá faltando alguma coisa?
Essa chain PREROUTING deve ser criada? E essa policy o que seria?

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Obrigado desde já.


  


2. Re: Tunnel server - redirecionar conexões

Antonio Thomacelli
tonnytg

(usa Outra)

Enviado em 28/09/2011 - 02:35h

Boa noite, da para fazer sim, o chain e policy seriam variaveis dentro do iptables em grosso modo.
Exemplo:
iptables -t nat -A PREROUTING -d 189.120.102.10 -p tcp --dport 5900 -j DNAT --to-destination 10.0.3.21  


No comando acima, falo que tudo que chegar para o ip externo, 189.120.102.10 na porta 5900 vai ser direcionado para o ip 10.0.3.21

Um outro exemplo se o ip não for fixo.

 iptables -t nat -A PREROUTING -s 0/0 -d 0/0 -p tcp --dport 5900 -j DNAT --to-destination 10.0.3.21  






3. Re: Tunnel server - redirecionar conexões

Lucas
rglnx

(usa Outra)

Enviado em 28/09/2011 - 09:28h

Beleza, mas aí vem outra dúvida.

Eu criei uma chain chamada PREROUTING, com o comando:

iptables -N PREROUTING 


Agora ficou assim:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain PREROUTING (0 references)
target prot opt source destination


Usei o comando que você passou para criar uma regra:

iptables -t nat -A PREROUTING -s 0/0 -d 0/0 -p tcp --dport 6003 -j DNAT --to-destination <IP>:<PORTA> 


Ele não dá erro nenhum, mas ao usar iptables -L ele mostra o mesmo resultado, como se não tivesse nenhuma regra no PREROUTING.
E agora?

O INPUT, OUTPUT e FORWARD possuem (policy ACCEPT) e o PREROUTING não, isso é normal?

Obrigado.


4. Re: Tunnel server - redirecionar conexões

Lucas
rglnx

(usa Outra)

Enviado em 28/09/2011 - 10:41h

Ninguém pode ajudar?


5. Re: Tunnel server - redirecionar conexões

Antonio Thomacelli
tonnytg

(usa Outra)

Enviado em 28/09/2011 - 11:56h

rglnx escreveu:

Ninguém pode ajudar?



Bom o INPUT, OUTPUT e FORWARD são regras padrões do iptables:

INPUT = ENTRADA -> Tudo que vem de fora.
OUTPUT = SAIDA -> Tudo que sai de você para forá
FORWARD = ENTRADA E SAIDA -> Tudo que sai de você e volta. (Ex. Ao abrir uma pagina na internet, você envia solicitação e recebe conteudo)



O PREROUTING é uma opção do iptables não precisa declarar ela, ela serve para redirecionamento, por isso que ela não entra com a politica de ACCEPT.

Só com o comando que te passei já esta funcionando o redirecionamento.



Chain INPUT (policy ACCEPT)
### INPUT = ENTRADA, os accept ta aceitando tudo de fora
### para seu pc. ex. Se eu mandar ssh para vc eu consigo.

target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
### Ta rejeitando saida e entrada de tudo.
### Por causa disso sua net não deve estar funcionando.
### Deve depois liberar ela
### ex:
### iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
### comando acima libera somente o que estiver estabilizado e for requisições novas.

target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
### Não ta direcionada a saida para nenhum lugar
### Essa parte deve estar sobrescrevendo a regra do FORWARD, permitindo sua net funcionar.


target prot opt source destination


Chain PREROUTING (0 references)
### Você não criou ainda nenhum redirecionamento por isso está 0 references

target prot opt source destination




6. Re: Tunnel server - redirecionar conexões

Lucas
rglnx

(usa Outra)

Enviado em 28/09/2011 - 13:05h

Beleza, sobre o PREROUTING está ok.
Agora consigo ver usando "iptables -t nat -L"
Veja que aparece o comando que você disse para inserir.

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:tunnel to:xxx.x.xxx.xx:xxxx

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Eu coloquei no /etc/services o serviço de tunnel:

tunnel          6003/tcp                # Tunnel
tunnel 6003/udp # Tunnel


E também adicionei uma regra no INPUT para liberar essa porta:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:tunnel
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited


Mas se eu tento dar um telnet por essa porta, ele não conecta.
É isso mesmo? Não era para ele conseguir conectar?

Alguém por favor dá uma luz!


7. Re: Tunnel server - redirecionar conexões

Antonio Thomacelli
tonnytg

(usa Outra)

Enviado em 30/09/2011 - 01:16h

Esse comando iptables -t nat -L ele retorna o que sua maquina consegue fazer, como ela é o host vai informar tudo liberado.
O ideal a se fazer é criar um script com as regras do iptables e inserir tudo o que você precisa.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts