[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: iptables, redirecionamento externo, dúvida



Olá, então o netfilter guarda um histórico dos pacotes e quando retorna ja sabe para quem encaminhar é isso?

Rodrigo, suas regras funcionaram mais tinham alguns erros.

iptables -t nat -A PREROUTING -p tcp -d 200.xxx.xxx.xxx -s 0/0 --dport 25 -j DNAT --to 200.xxx.xxx.yyy
iptables -t nat -A POSTROUTING -p tcp *-s* 200.xxx.xxx.yyy *-d* 0/0 *--sport* 25 -j SNAT --to xxx.xxx.xxx.xxx

Era exatamente esse mesmo erro que eu estava cometendo, quando os pacotes chegam na chain POSTROUTING o destino do pacote já está alterado ( nesse caso você estava utilizando o source como referência, mas seria o destino, pois o pacote ainda não saiu da interface ) o -s 0/0 é facultativo uma vez que omitido utiliza o mesmo valor como padrão, então os dois erros seriam apenas os itens em destaque acima, ficou bem parecido com as regras do Pedro Arthur, porém ele informou as interfaces de entrada e saída, como só utilizo uma interface não se faz necessário.

Então deixei as regras assim, e estão funcionando corretamente:

iptables -t nat -A PREROUTING -p tcp -d 200.xxx.xxx.xxx --dport 25 -j DNAT --to 200.xxx.xxx.yyy
iptables -t nat -A POSTROUTING -p tcp -d 200.xxx.xxx.yyy --dport 25 -j SNAT --to 200.xxx.xxx.xxx

Bom, na minha cabeça eu precisava pegar os pacotes que estavam voltando do servidor de destino e encaminhá-los também para o servidor que fez a requisição, mas o netfilter faz isso automaticamente, nesse caso ( resultado das regras acima ) ele apenas encaminha os pacotes que estão sendo recebidos do host que faz a requisição para o destino, a resposta do servidor é encaminhada automaticamente.

Agradeço pela atenção de todos.
A[]'s



Em 4/2/2009 16:21, Rodrigo Carvalho escreveu:
Considerando que a porta negociada seja sempre a 80

??=porta acima de 1024
xxx=qualquer numero (ou quase.. hehehe)
:80=porta 80
                                     
IPS: ???.???.????.???   235.xxx.xxx.xxx    235.xxx.xxx.yyy
       ----CLIENTE:??       ---> 80:SRV_A:??   ---->   80:SRV_B
       ----CLIENTE:??       <--- 80:SRV_A:??    <----   80:SRV_B

iptables -t nat -A PREROUTING   -p tcp -d 235.xxx.xxx.xxx -s 0/0 --dport 80 -j DNAT --to 235.xxx.xxx.yyy
iptables -t nat -A POSTROUTING -p tcp -s 235.xxx.xxx.yyy -d 0/0 --sport 80 -j SNAT --to 235.xxx.xxx.xxx

Bem.. eu não testei aqui.. mas.. acho q isso iria resolver o seu problema...
Teste aí e depois nos diga!

Att,
Rodrigo


2009/2/4 Allison Vollmann <allisonvoll@yahoo.com.br>
Em 4/2/2009 15:55, PEdroArthur_JEdi escreveu:

2009/2/4 Allison Vollmann<allisonvoll@yahoo.com.br>:
 
realmente funciona, mas tem um porém, só da certo se eu souber de quem vem a
conexão, se for feita através de outro host não tem como identificá-lo no
SNAT, ao menos que tenha alguma forma dinâmica de se fazer isso, pois creio
eu que precisa pegar o endereço *source* da conexão de entrada em PREROUTING
e inserilo como source do pacote em POSTROUTING, não sei se o netfilter
suporta isso de alguma forma ou existe algum modulo a parte, mas com apenas
3 hostd pré-definidos aparentemente funciona muito bem.d
   

Eu acho que as regras podem ser adaptadas da seguinte maneira:

iptables -t nat -A PREROUTING -i eth0 -d 235.xxx.xxx.xxx -p tcp
--dport 80 -j DNAT --to 235.xxx.xxx.yyy
iptables -t nat -A POSTROUTING -o eth0 -d 235.xxx.xxx.xxx -p tcp
--dport 80 -j SNAT --to 235.xxx.xxx.xxx

Nessa solução, o endereço 235.xxx.xxx.xxx sempre ficará como
intermediário, sendo dele a responsabilidade de atribuir o endereço de
origem apropriado. E se ter um intermediário não é problema, essa
solução pode ser usada para mais de um host, colocando-se diversos
DNATs.

 
O problema é se existirem N hosts que se conectem a ele através desse servidor pela mesma porta. Se forem poucos endereços da para definir da mesma maneira ou colocando em range, o único problema nesse caso é que ele iria repassar a conexão para todo mundo, e só quem pediu iria aceitar, agora se tiver que liberar para a internet inteira por exemplo acredito que não tenha como, por isso pedi se existe alguma forma de fazer o NAT dinamico, pois quando o pacote chega no servidor intermediario não tem como saber pra quem vai entregar ao menos que tenha algum jeito de marcar os pacotes e o servidor de destino fazer o mesmo.



--
To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org




--
Grato!
Rodrigo C. Carvalho
========================================
= SO: Debian Sarge 3.1       Iptables 1.3.1        SQUID 2.5  =
========================================


Reply to: