Não funciona DNAT/SNAT...
Olá pessoal.
Primeiramente, segue minha topologia:
- Firewall Linux:
eth0: 200.x.x.x
eth1: 192.168.2.254
- Possuo outra subrede:
192.168.3.0/24
- No Firewall Linux, possuo a rota criada para 192.168.3.0/24:
route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.1
- Onde 192.168.2.1 é o gateway da RPV/Copel.
As subredes 192.168.2.0/24 - 192.168.3.0/24 estão se comunicando perfeitamente.
O que não estou conseguindo é fazer o DNAT para o IP 192.168.3.7, sendo que estou tentando da seguinte forma:
$ipt -t nat -A PREROUTING -p tcp -m tcp -d 200.x.x.x/32 --dport 8080 -j DNAT --to 192.168.3.7:8080
$ipt -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.3.7/32 --sport 8080 -j SNAT --to-source 20.X.X.X:8080
Simplesmente não funciona! Não consigo realizar o DNAT "por dentro" da rede privada virtual.
Quem possuir alguma dica, desde já agradeço.
Re: Não funciona DNAT/SNAT...
Pessoal, resolvi de forma paleativa usando o tal do 'redir':
redir --lport 8080 --cport 8080 --caddr=192.168.3.7
Mas, não gostaria de usar isto! Eu usava este cara há uns 8 anos atrás ... apenas usei pra testes e funcionou! =]
Sobre a regra do iptables, nao consegui fazer funcionar ainda... já segui vários exemplos de redirecionamneto de portas que há net ... Agora, o redirecionamento via iptables funciona sem problemas para qquer host estando na rede 192.168.2.0/24, que é a rede a do firewall ...
Vou continuar pesquisando... quem puder dar uma dica, por favor!
[]'s
Re: Não funciona DNAT/SNAT...
iptables -t nat -A PREROUTING -p tcp -d 200.x.x.x/32 --dport 8080 -j DNAT --to 192.168.3.7:8080
Re: Não funciona DNAT/SNAT...
Bom Dia,
A liberação de pacotes entres as redes esta ok certo?
echo "1" > /proc/sys/net/ipv4/ip_forward
Seu Firewall consegue pingar este IP da rede .3.x ?
att
Re: Não funciona DNAT/SNAT...
Sim, consigo pingar este IP 192.168.3.7 sem problemas .... Sobre a regra, o que pude constatar é que o SNAT não está de acordo, ou seja, os pacotes chegam até o destino (DNAT), mas não sabem como retornar (SNAT) ....
Re: Não funciona DNAT/SNAT...
Imagino que seja legal começar os testes definindo melhor as regras, adicione a placa de rede nas linhas do IP tables...
-i ETH_externa
e -i ETH_interna
Veja se isso já pode ajudar de alguma forma... porque os pacotes parecem estar se perdendo.
Att
Re: Não funciona DNAT/SNAT...
Acrescentei as interfaces e ficou da seguinte forma:
$ipt -t nat -A PREROUTING -p tcp -m tcp -i eth0 -d 200.20.20.20/32 --dport 3389 -j DNAT --to 192.168.3.7:3389
$ipt -t nat -A POSTROUTING -p tcp -m tcp -o eth1 -s 192.168.3.7/32 --sport 3389 -j SNAT --to 200.20.20.20:3389
Onde:
eth0 = Wan
eth1 = Lan
Mas, não funcionou ...
Estou fazendo testes com host dentro da subrede do Firewall mesmo:
Firewall
eth0=200.20.20.20
eth1=192.168.2.254
Servidor 2003=192.168.2.1
$ipt -t nat -A PREROUTING -p tcp -m tcp -i eth0 -d 200.20.20.20/32 --dport 3389 -j DNAT --to 192.168.2.1:3389
$ipt -t nat -A POSTROUTING -p tcp -m tcp -o eth1 -s 192.168.2.1/32 --sport 3389 -j SNAT --to 200.20.20.20:3389
Por enqto. sem sucesso...
Obrigado pelas respostas....
Re: Não funciona DNAT/SNAT...
Me diz uma coisa,
O que você quer é... acessar o servidor WTS de fora da sua rede? remotamente é isso?
Se esta for a ideia Acesso remoto WTS, você não precisa de SNAT.
Outro detalhe é que o "-o eth1" (aqui é a interface de saida).
Mas arranca a regra de SNAT.
Seguinte, o pacote entra em sua rede na porta 3389 e é redirecionado para 192.168.2.1 e depois para 192.168.3.7 certo? então no caminho de volta ele sai de 192.168.3.7 passa para 192.168.2.1 e ai sim chega ao firewall para sair...
Em sua regra de SNAT vc coloca que a origem é 192.168.3.7 porem no meio do caminho sua origem foi alterada para 192.168.2.1 que é um router.
Por isso imagino que a regra de SNAT esta ferrando tudo.
Retire o SNAT deve funcionar. e no nat a interface da linha deve ser a da internet.
Boa sorte.
Re: Não funciona DNAT/SNAT...
Coloca um tcpdump no teu roteador 192.168.2.1 e cola aqui, assim é mais facil de analisar.
Você só vai precisar utilizar SNAT se o gateway da tua rede 192.168.3.0 NÃO for o roteador que conecta com a rede 192.168.2.0 ou se o gateway desse roteador NÃO for 192.168.2.254.
Cola as rotas do roteador 192.168.2.1.
Miguel Xavier
Re: Não funciona DNAT/SNAT...
Aproveito o tópico pois meu problema é parecido, explicarei da maneira mais detalhada possível.
Tenho um server com 3 placas de rede (os endereços obviamente não são estes):
eth0 - 192.168.1.1 rede 192.168.1.0/24
eth1 - 200.200.200.200 (CTBC)
eth2 - 201.201.201.201 (Virtua)
Tenho um servidor interno cujo IP é 192.168.1.10 e que possui um servidor WWW respondendo na porta 80 para conexões que entram pelo link da CTBC.
A regra que eu uso é a seguinte:
iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to-dest 192.168.1.10
Possuo regras de SNAT nass interfaces eth1 e eth2.
O problema está no fato de que os desenvolvedores precisam testar a aplicação acessando pelo IP externo da CTBC mesmo estando dentro da rede local.
Criei portanto a seguinte regra de DNAT:
iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -d 200.200.200.200 -j DNAT --to-dest 192.168.1.10
A partir desse momento os pacotes passaram a chegar no servidor, porém eles chegam no server com o endereço de origem da rede 192.168.1.0, o que faz com que o servidor responda diretamente ao computador de origem, que descarta o pacote, pois não espera nenhuma resposta de 192.168.1.10 e sim de 200.200.200.200.
Tentei algumas regras de SNAT, a última delas foi a seguinte:
iptables -t nat -I POSTROUTING -d 192.168.1.10 -j SNAT --to-source 200.200.200.200
A ideia é forçar o retorno desses pacotes para o servidor, porém mesmo assim não está funcionando.
Sinto que estou deixando passar batido algo banal, gostaria muito de uma ajuda de vocês para ver onde está o furo.
Agradeço pela atenção.
Re: Não funciona DNAT/SNAT...
Crushing,
Coloque a seguinte regra de SNAT:
iptables -t nat -I POSTROUTING -o eth0 -s 192.168.1.0/24 -d 192.168.1.10 -p tcp -j SNAT --to-source 192.168.1.1
Isso deve resolver, coloque um tcpdump nos dois servidores e nos mostre o trafego de pacotes:
tcpdump -i eth0 port 80 -nn
Cole sua tabela nat também:
iptables -t nat -L -nv
Abração
Miguel Xavier
Re: Não funciona DNAT/SNAT...
Agradeço pela atenção, leugim. Porém já estou com exatamente esta regra de firewall e mesmo assim não funciona.
Segue abaixo minhas regras de firewall no gateway:
# Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT
# Completed on Thu Oct 7 16:29:25 2010
# Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
*mangle
:PREROUTING ACCEPT [1994958:1390387734]
:INPUT ACCEPT [39483:4654146]
:FORWARD ACCEPT [1953387:1385497131]
:OUTPUT ACCEPT [22258:2303461]
:POSTROUTING ACCEPT [1975645:1387800592]
COMMIT
# Completed on Thu Oct 7 16:29:25 2010
# Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -i eth1 --dport 80 -j DNAT --to-destination 192.168.1.10
-A PREROUTING -p tcp -m tcp -i eth1 --dport 7531:7532 -j DNAT --to-destination 192.168.1.10
-A PREROUTING -p tcp -m tcp -m multiport -d 200.200.200.200 -i eth0 -j DNAT --to-destination 192.168.1.10 --dports 80,7531,7532
-A POSTROUTING -p tcp -m tcp -m multiport -s 192.168.1.0/24 -d 192.168.1.10 -o eth0 -j SNAT --to-source 192.168.1.1 --dports 80,7531,7532
-A POSTROUTING -o eth2 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -p tcp -m tcp -i eth1 --dport 25 -j DNAT --to-destination 192.168.1.20
COMMIT
# Completed on Thu Oct 7 16:29:25 2010
Assim que possível farei um dump dos pacotes...
Re: Não funciona DNAT/SNAT...
Aparentemente está configurado perfeitamente, coloque o tcpdump no firewall e nas extremidades, para que possamos analisar melhor.
Abraço
Miguel Xavier
Re: Não funciona DNAT/SNAT...
Buenas novamente, ressucitando o tópico, continuo sem entender o problema, contudo tem mais um sintoma:
Usando o comando netstat-nat eu percebo que ele adiciona uma entrada à lista quando o acesso é externo à rede, porém ao fazer este acesso a partir da LAN ele não adiciona nenhum registro.