DNAT

1. DNAT

Cloves Pereira Costa Jr
clovesjr

(usa Slackware)

Enviado em 05/12/2007 - 08:51h

Pessoal...

Me ajudem com o codigo abaixo:

iptables -t nat -A PREROUTING -s $ip_origem -p $protocolo --dport $porta_origem -j DNAT --to $ip_destino:$porta_destino

O problema com este código é o seguinte: ele não está direcionando as conexões externas para o destino correto. Este mesmo código está direcionando todas as conexões para a firewall localmente, como se estivesse usando o REDIRECT.

Alguém sabe me dizer o que pode estar acontecendo?

Estou mandando abaixo a saida do comando "iptables -t nat -vnL" na chain PREROUTING.

0 0 DNAT tcp -- * * XXX.YY.ZZZ.W 0.0.0.0/0 tcp dpt:22 to:192.168.102.1:22
0 0 DNAT tcp -- * * XXX.YY.ZZZ.W 0.0.0.0/0 tcp dpt:80 to:192.168.102.1:80
0 0 DNAT tcp -- * * XXX.YY.ZZZ.W 0.0.0.0/0 tcp dpt:80 to:192.168.102.1:80
0 0 DNAT tcp -- * * XXX.YY.ZZZ.W 0.0.0.0/0 tcp dpt:8080 to:192.168.102.1:8080
0 0 DNAT tcp -- * * XXX.YY.ZZZ.W 0.0.0.0/0 tcp dpt:80 to:192.168.102.165:80


  


2. Re: DNAT

Thiago Fernandes de Melo
m4tri_x

(usa Ubuntu)

Enviado em 05/12/2007 - 10:00h

jah aconteceu cmg, mais eu nem fui atras de saber oque eh, eu sei o redir.

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=2451


[]´s


3. tenta isso:

Fernandino Mesquita e Silva
FireBird

(usa Debian)

Enviado em 05/12/2007 - 10:15h

iptables -t nat -I PREROUTING -p <protocolo> -m mac --mac-source <MacAddress do indivíduo> -s <ip origem> -d 0/0 -j DNAT --to <ip do proxy>:<porta de comunicação>


se kiser, pode tirar o mac (-m mac --mac-source<MacAddress do individuo)


4. Re: DNAT

Silvio Soares da Silva Junior
silviojunior

(usa Slackware)

Enviado em 05/12/2007 - 11:20h

use a interface na sua regra como abaixo

iptables -t nat -A PREROUTING -i $IF_EXT -p tcp --dport 5900 -j DNAT --to-destination 192.168.254.202:5900

$IF_EXT # Interface externa, ex. ppp0 (velox)

como por exemplo: as conexoes na interface externa na porta 5900 vão diretamente pra maquina 192.168.254.202.

entendeu?

uma coisa, se a politica padrão do FORWARD estiver como DROP, não se esqueça de liberar para a maquina em questão.

abraço




5. Re: DNAT

Cloves Pereira Costa Jr
clovesjr

(usa Slackware)

Enviado em 05/12/2007 - 11:41h

Valeu pelas dicas...

Vou tentar usar o "redir" para analisar seu funcionamento.

Quanto ao uso da interface no redirecionamento, não posso usar somente este recurso porque tenho vários IPs externos nesta interface e cada um é direcionado para um serviço diferente em servidore diferentes. Foi falha minha não ter explicado isso antes.

Quanto à regra de FORWARD, todos estão configurados corretamente.

O que achei mais estranho neste problema que estou enfrentando é que por padrão, quando o a table NAT não consegue resolver uma regra criada, o pacote é descartado. No meu caso, as regras estão criadas mas os pacotes não estão sendo direcionados para os servidores corretos.

Ainda não desisti em resolver este problema, portanto caso alguém tenha mais alguma sugestão, por favor me avisem.

[]s


6. Re: DNAT

Silvio Soares da Silva Junior
silviojunior

(usa Slackware)

Enviado em 05/12/2007 - 11:49h

OK, depois de informar a interface, use o -s para informar o source, tente isso.

-i $IF_EXT -s $REDE ou $IP

assim temos mais controle nas regras.

abs


7. Ainda não deu...

Cloves Pereira Costa Jr
clovesjr

(usa Slackware)

Enviado em 06/12/2007 - 16:48h

To ficando maluco...

Já revisei todo o código mas ainda não encontrei o erro.

To enviando mais detalhes do meu script para verificar se alguem pode me ajudar. Somente uma observação (não sei se vai ajudar em alguma coisa): possuo dois links de acesso com balanceamento de carga para saída de tráfego (isto está funcionando corretamente). O primeiro link está na eth1 (GVT) e o segundo na eth2 (BrT). A eth0 é a minha LAN.

CONFIGURAÇÃO DAS CHAINS

INPUT - DROP
FORWARD - DROP
OUTPUT - DROP

ARQUIVO DE ORIGEM DOS DADOS DAS VARIAVEIS

eth1:tcp:189.26.xxx.y:22:192.168.102.1:22
eth1:tcp:189.26.xxx.z:80:192.168.102.1:80
eth2:tcp:189.11.xx.yy:80:192.168.102.1:80
eth1:tcp:189.26.xxx.z:8080:192.168.102.1:8080
eth1:tcp:189.26.xxx.w:80:192.168.102.165:80

OBS.: todos os dados das variaveis abaixo tem como origem os dados acima

REGRAS DE INPUT

for LINHA in ${input_tcp_gvt};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -A INPUT -i $interface_origem -p $protocolo --dport $porta_origem -j ACCEPT
done
for LINHA in ${input_udp_gvt};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -A INPUT -i $interface_origem -p $protocolo --dport $porta_origem -j ACCEPT
done
for LINHA in ${input_tcp_brt};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -A INPUT -i $interface_origem -p $protocolo --dport $porta_origem -j ACCEPT
done
for LINHA in ${input_udp_brt};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -A INPUT -i $interface_origem -p $protocolo --dport $porta_origem -j ACCEPT
done

REGRAS DE FORWARD

for LINHA in ${direcionamentos};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -A FORWARD -i $interface_origem -s $ip_origem -p $protocolo -o $IF_LAN -d $ip_destino -j ACCEPT
$iptables -A FORWARD -i $IF_LAN -s $ip_destino -p $protocolo -o $interface_origem -d $ip_origem -j ACCEPT
done

REGRAS DE PREROUTING

for LINHA in ${direcionamentos};do
interface_origem=`echo ${LINHA} | cut -d: -f1`
protocolo=`echo ${LINHA} | cut -d: -f2`
ip_origem=`echo ${LINHA} | cut -d: -f3`
porta_origem=`echo ${LINHA} | cut -d: -f4`
ip_destino=`echo ${LINHA} | cut -d: -f5`
porta_destino=`echo ${LINHA} | cut -d: -f6`
$iptables -t nat -A PREROUTING -i $interface_origem -s $ip_origem -p $protocolo --dport $porta_origem -j DNAT --to $ip_destino:$porta_destino
done

Por favor, alguém me ajude...

[]s


8. Re: DNAT

Vinicius de Carvalho Blatner
blatner

(usa Slackware)

Enviado em 06/12/2007 - 17:55h

Tente fazer o seguinte:

Por exemplo na linha abaixo:

" $iptables -A FORWARD -i $IF_LAN -s $ip_destino -p $protocolo -o "

Deixe ela desta maneira

" $iptables -A FORWARD -i $IF_LAN -d $ip_destino -p $protocolo -o "

Apenas troque o -s por -d no seu código

Faça uma pequena avaliação do código principalmente na chain PREROUTING mas a solução é essa

estou a total disposição


[]s


9. deu certo!!!

Cloves Pereira Costa Jr
clovesjr

(usa Slackware)

Enviado em 06/12/2007 - 17:58h

Valeu pela ajuda...

Na verdade o que estava errado era a chain PREROUTING. Tive que trocar o "-s" pelo "-d".

Foi falha minha...

[]s






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts