[FUG-BR] IPFW e redirecionamento de portas com nat e ppp, argggg

Mario Lobo lobo em bsd.com.br
Sexta Setembro 3 19:45:55 BRT 2010


On Friday 03 September 2010 12:07:00 Leonardo Augusto wrote:
> Opa,
> 
> Obrigado pela resposta, mas...
> 
> A conexao com o modem é via PPPoe, nao é dhcp...
> 
> Segue o ifconfig desse servidor:
> 
> em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric
> 0 mtu 1500
>         options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
>         ether 00:0f:1f:f9:f4:10
>         inet 10.10.10.1 netmask 0xffffff00 broadcast 10.10.10.255
>         inet 10.10.10.4 netmask 0xffffff00 broadcast 10.10.10.255
>         media: Ethernet 100baseTX <full-duplex>
>         status: active
> ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
>         options=3<RXCSUM,TXCSUM>
>         inet 127.0.0.1 netmask 0xff000000
> tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
>         inet 189.25.108.69 --> 200.222.118.26 netmask 0xffffffff
>         Opened by PID 1867
> 
> 
> O problema é redirecionar a porta 7869 da rede 10.10.10.x via a tun0....
> 
> Segue o ipfw list:
> 
> 00100 allow ip from any to any via lo0
> 00200 deny ip from any to 127.0.0.0/8
> 00300 deny ip from 127.0.0.0/8 to any
> 00400 fwd 10.10.10.1,3128 tcp from 10.10.10.0/24 to any dst-port 80
> # para o squid....
> 00500 divert 8668 ip from any to any via tun0
> 65535 allow ip from any to any
> 
> 
> Voce conseguiu entender o cenário ?
> Em casa eu tenho modem que faz dhcp, aí no modem eu redireciono a
> porta a funciona, mas aqui
> na empresa é via ppp a conexao do gateway bsd com o modem...
> 
> []'s
> 
> 2010/9/2 Mario Lobo <lobo em bsd.com.br>:
> > On Thursday 02 September 2010 19:22:37 Leonardo Augusto wrote:
> >> Entao,
> >> 
> >> Nao sei se da pra configurar esse modem como bridge, eu conecto nele via
> >> ppp.
> >> 
> >> Nao tem jeito de fazer assim ?
> >> 
> >> 2010/9/2 Mario Lobo <lobo em bsd.com.br>:
> >> > On Thursday 02 September 2010 12:15:42 Leonardo Augusto wrote:
> >> >> Bom,
> >> >> 
> >> >> Só nat nao funciona, tem que ser feita alguma coisa, pois quado
> >> >> conecto o notebook diretamente no
> >> >> modem da gvt, eu faco o direcionamento das portas no modem e entao o
> >> >> sistema funciona, pois o notebook
> >> >> fica com ip 192.168.xxx, o debug externo tem ip válido e fixo.
> >> >> 
> >> >> Entao nao sei que tipo de redirecionamento o modem da gvt faz, pois
> >> >> quando faco isso funciona.
> >> >> 
> >> >> Acredito que tem que ser feito isso no gateway do bsd tambem, pois o
> >> >> cenário é parecido.
> >> >> 
> >> >> Como eu já disse, apenas o redirect port no natd.conf nao funciona.
> >> >> 
> >> >> Eu vi um exemplo onde se poria mais um divert no ipfw para a porta
> >> >> 7869.. mas tambem nao funciona.
> >> >> 
> >> >> :(
> >> >> 
> >> >> 2010/9/2 Anderson Eduardo <listas em secover.com.br>:
> >> >> > Em 2/9/2010 11:33, Leonardo Augusto escreveu:
> >> >> >> Entao, desculpe a falta de clareza, vamos la:
> >> >> >> 
> >> >> >> O servidor debug está na "rua" na porta 7869.
> >> >> >> 
> >> >> >> O client que vai utilizar o debug esta na rede interna atraz dum
> >> >> >> gateway freebsd:
> >> >> >> 
> >> >> >> gateway bsd ip interno =>  10.10.10.1
> >> >> >> gateway bsd ip externo =>  tun0, muda todos os dias (ppp)
> >> >> >> 
> >> >> >> maquinas da rede interna =>  10.10.10.xx
> >> >> >> 
> >> >> >> O que preciso é que a maquina da rede interna acesse a maquina
> >> >> >> externa do debug pegando
> >> >> >> o IP do tun0, no caso é um redirecionamento mesmo, da porta 7869.
> >> >> >> 
> >> >> >> O /etc/natd.conf esta assim :
> >> >> >> 
> >> >> >> interface tun0
> >> >> >> port 8668
> >> >> >> dynamic yes
> >> >> >> use_sockets yes
> >> >> >> same_ports yes
> >> >> >> redirect_port tcp 10.10.10.149:7869 7869
> >> >> >> 
> >> >> >> E o ipfw rules assim:
> >> >> >> 
> >> >> >> 00100 allow ip from any to any via lo0
> >> >> >> 00200 deny ip from any to 127.0.0.0/8
> >> >> >> 00300 deny ip from 127.0.0.0/8 to any
> >> >> >> 00400 fwd 10.10.10.1,3128 tcp from 10.10.10.0/24 to any dst-port
> >> >> >> 80 00500 divert 8668 ip from any to any via tun0
> >> >> >> 01100 allow ip from any to any
> >> >> >> 
> >> >> >> E nao esta funcionando ainda,
> >> >> >> Alguma sugestao ?
> >> >> >> 
> >> >> >> []'s
> >> >> >> 
> >> >> >> 2010/9/1 Anderson Eduardo<listas em secover.com.br>:
> >> >> >>> Em 1/9/2010 13:42, Leonardo Augusto escreveu:
> >> >> >>>> Olá povo,
> >> >> >>>> 
> >> >> >>>> Eu sou um retardado, peço desculpas por isso. Estou tentando
> >> >> >>>> fazer um redirecionamento de portas
> >> >> >>>> aqui e nao consigo de jeito nenhum.
> >> >> >>>> 
> >> >> >>>> A situacao é a seguinte, tenho um gateway freebsd 8 para uma
> >> >> >>>> rede com maquinas windows, aí tem um
> >> >> >>>> servico de debug que usa a porta 7869, mas so funciona se a
> >> >> >>>> maquina cliente tem um ip roteavel para fora.
> >> >> >>>> 
> >> >> >>>> Entao tenho que fazer com que "pareca" que a maquina da rede
> >> >> >>>> interna (10.10.10.55) seja vista com o ip
> >> >> >>>> da interface tun0 do ppp.
> >> >> >>>> O freebsd conecta num modem velox via ppp e entao temos a tun0
> >> >> >>>> lá com o ip "real" do modem.
> >> >> >>>> 
> >> >> >>>> Ja tentei por redirect_port no natd.conf e diverts no rc.ipfw de
> >> >> >>>> trocentas maneiras que achei no historico da lista
> >> >> >>>> e no google, mas nada funciona.
> >> >> >>>> 
> >> >> >>>> O ipfw desse gateway esta assim:
> >> >> >>>> 
> >> >> >>>> 00100 allow ip from any to any via lo0
> >> >> >>>> 00200 deny ip from any to 127.0.0.0/8
> >> >> >>>> 00300 deny ip from 127.0.0.0/8 to any
> >> >> >>>> 00400 fwd 10.10.10.1,3128 tcp from 10.10.10.0/24 to any dst-port
> >> >> >>>> 80 # SQUID 00500 divert 8668 ip from any to any via tun0
> >> >> >>>> 00700 deny udp from any to any dst-port 137-139 via tun0
> >> >> >>>> 00800 deny tcp from any to any dst-port 137-139 via tun0
> >> >> >>>> 00900 deny tcp from any to any dst-port 3306 via tun0
> >> >> >>>> 01000 deny udp from any to any dst-port 3306 via tun0
> >> >> >>>> 01100 deny tcp from any to any dst-port 2049 via tun0
> >> >> >>>> 01200 allow ip from any to any
> >> >> >>>> 
> >> >> >>>> O natd.conf esta assim:
> >> >> >>>> 
> >> >> >>>> cat /etc/natd.conf
> >> >> >>>> #
> >> >> >>>> # NAT
> >> >> >>>> #
> >> >> >>>> instance default
> >> >> >>>> interface tun0
> >> >> >>>> port 8668
> >> >> >>>> dynamic yes
> >> >> >>>> use_sockets yes
> >> >> >>>> same_ports yes
> >> >> >>>> 
> >> >> >>>> 
> >> >> >>>> Alguém já fez isso e tem como me dizer que regras por ali para
> >> >> >>>> que consiga fazer essa transparencia ?
> >> >> >>>> Ou um how to objetivo sobre o assunto, pois todos testes que fiz
> >> >> >>>> com divert, redirect, fwd, nada funciona.
> >> >> >>>> Entao fazer com que a estacao que conecte na porta 7869 pareca
> >> >> >>>> estar usando o ip externo do gateway, no caso do tun0 ?
> >> >> >>>> 
> >> >> >>>> Obrigado
> >> >> >>>> -------------------------
> >> >> >>>> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> >> >>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> >> >>> 
> >> >> >>> Qualquer redirecionamento, que funcione, vai ser transparente
> >> >> >>> para quem estiver acesso externamente.
> >> >> >>> 
> >> >> >>> Para mim, faltou você explicar um pouco melhor o seu cenário, não
> >> >> >>> deu para ficar claro de onde-para-onde você esta tentando
> >> >> >>> acessar.(Mas vou chutar)
> >> >> >>> 
> >> >> >>> Acredito que o servidor (debug) esteja fora da sua rede, você tem
> >> >> >>> um cliente atrás de um freebsd que precisa acessar esse servidor
> >> >> >>> de debug?
> >> >> >>> 
> >> >> >>> Se for isso, não precisa de redirecionamento nenhum, apenas NAT.
> >> >> >>> 
> >> >> >>> Desculpa qualquer coisa.
> >> >> >>> 
> >> >> >>> --
> >> >> >>> Anderson Eduardo
> >> >> >>> Diretor Geral
> >> >> >>> Tel.: +55 (71) 3641-6450
> >> >> >>> 
> >> >> >>> Secover - Serviços em Tecnologia e Segurança da Informação
> >> >> >>> http://www.secover.com.br
> >> >> >>> -------------------------
> >> >> >>> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> >> >>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> >> >> 
> >> >> >> -------------------------
> >> >> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> >> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> >> > 
> >> >> > Cara,
> >> >> > 
> >> >> > Isso não é um redirecionamento, é apenas NAT, seria um
> >> >> > redirecionamento se invertesse o seu cenário, o host externo
> >> >> > tentasse acessar o host interno.
> >> >> > 
> >> >> > E isso de pegar o IP da interface(tun0) faz parte do NAT por
> >> >> > padrão.
> >> >> > 
> >> >> > --
> >> >> > Anderson Eduardo
> >> >> > Diretor Geral
> >> >> > Tel.: +55 (71) 3641-6450
> >> >> > 
> >> >> > Secover - Serviços em Tecnologia e Segurança da Informação
> >> >> > http://www.secover.com.br
> >> >> > -------------------------
> >> >> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> >> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> >> 
> >> >> -------------------------
> >> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> > 
> >> > Não sei se eu entendi bem mas ta me parecendo que o modem está
> >> > configurado como router. De fato desta forma, voce terá 2 nats no
> >> > caminho e assim 2 redirecionamentos a serem feitos.
> >> > 
> >> > Cofigura o teu modem como bridge que o Free vai pegar um IP válido e o
> >> > redirect ai vai funcionar.
> >> > --
> >> > Mario Lobo
> >> > http://www.mallavoodoo.com.br
> >> > FreeBSD since 2.2.8 [not Pro-Audio.... YET!!] (99% winfoes FREE)
> >> > -------------------------
> >> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >> 
> >> -------------------------
> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > 
> > Pelo menos aqui em recife, a GVT, a pedido do cliente, configura o modem
> > no modo bridge.
> > 
> > Em todo caso, apesar de eu achar contraproducente, voce pode usar os 2
> > redirects.
> > 
> > Bota o free num IP fixo na lan do modem, redireciona no modem aporta que
> > voce quer para o IP do Free, e no Free redireciona essa porta para o IP
> > da maquina na lan dele. Veja que voce vai ter 3 redes:
> > 
> > Internet -- [modem] -- lan modem -- [Free] -- lan do Free
> > 
> > xx.xx.xx.xx            192.168.x.x            172.16.x.x
> > 
> > O nat/redirect do modem e o nat/redirect do free
> > 
> > è meio bagaceira mas deve funcionar.
> > 
> > --
> > Mario Lobo
> > http://www.mallavoodoo.com.br
> > FreeBSD since 2.2.8 [not Pro-Audio.... YET!!] (99% winfoes FREE)
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> 
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Leonardo;

A melhor coisa que eu posso fazer é te mostrar configuações reais que estão 
funcionando agorinha enquanto falamos, em 3 clientes-empresas com o cenario 
IGUAL ao seu. Free via pppoe, tun0, etc.., incluindo a minha rede aqui em 
casa!

Colocarei as partes pertinentes ok? Claro que suas interfaces serão diferentes 
(ou não!)

# rc.conf

# Interfaces -------------
network_interfaces="lo0 dc0 rl0 tun0"
ifconfig_lo0="inet 127.0.0.1"
ifconfig_dc0="inet 10.10.10.1 netmask 255.255.255.0"
ifconfig_rl0="up"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/natd.conf"
firewall_enable="YES"

# rc.firewall

enet="tun0"
inet1="dc0"

$fwcmd add 1 pass tcp from ${eip} to any 80
# redirect http to squid
$fwcmd add 2 fwd 127.0.0.1,3128 tcp from any to any 80 via ${inet1} in
# $fwcmd add 3 fwd 127.0.0.1,3128 tcp from any to any 80 via ${enet} in
# redirect to natd
$fwcmd add 3 divert natd all from any to any via ${enet}


# natd.conf

dynamic yes
unregistered_only yes
same_ports yes
redirect_port tcp 10.10.10.2:5800-5900 5800-5900

# ppp.conf

default:
  set device PPPoE:rl0
  enable lqr
  enable tcpmssfixup
  set lqrperiod 6
  set mru 1492
  set mtu 1492
  set timeout 0
  set log phase tun
  add default HISADDR
  enable dns
adsl:
 set authname xxxxxxxxxxx
 set authkey yyyyyyyyy


Espero que isso ajude. 

-- 
Mario Lobo
http://www.mallavoodoo.com.br
FreeBSD since 2.2.8 [not Pro-Audio.... YET!!] (99% winfoes FREE)


Mais detalhes sobre a lista de discussão freebsd