[FUG-BR] Source Nat temporário no FreeBSD

Rafael Ganascim rganascim em gmail.com
Quinta Junho 5 17:01:54 BRT 2014


Em 05/06/2014 14:44, "Marcelo Gondim" <gondim em bsdinfo.com.br> escreveu:
>
> Em 05/06/14 13:46, Thiago Andrighetti escreveu:
> > Bom, já uqe eu vou ter que rebootar de qq jeito então hehehe, por causa
> > do kernel que tenho que habilitar o DIVERT, seria melhor então eu
> > habilitar o PF  ao invés de usar o natd ?
> >
> > Só reforçando, que só vou fazer essa regra pra acessar meus radios,
> > depois não vou usar mais nat nehum nessa maquina.
> Opa Thiago,
>
> Eu uso ipfw + pf sendo que o pf eu uso somente para NAT. Para quem veio
> de Linux eu acho o NAT do pf mais tranquilo de assimilar.
> No kernel eu costumo habilitar isso abaixo para ipfw e pf:
>
> options         IPFIREWALL
> options         IPFIREWALL_VERBOSE
> options         IPFIREWALL_VERBOSE_LIMIT=100
> options         IPFIREWALL_DEFAULT_TO_ACCEPT
> options         IPFIREWALL_NAT
> options         LIBALIAS
> options         DUMMYNET
> options         IPDIVERT
>
> # Habilitando PF e ALTQ
> device pf
> device pflog
> device pfsync
> options         ALTQ
> options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
> options         ALTQ_RED        # Random Early Detection (RED)
> options         ALTQ_RIO        # RED In/Out
> options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
> options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
> options         ALTQ_NOPCC      # Required for SMP build
>
> Abaixo uns exemplos de regras no pf.conf da vida:
>
> ext_if = "em0"
> int_if = "em1"
> table <masq> persist { 192.168.255.0/24, 10.0.0.0/8, 192.168.173.0/24,
> 192.168.174.0/24 }
> set skip on lo0
> set limit states 40000
>
> #### NAT 1:1
> binat on $ext_if from 192.168.255.2 to any -> 186.xxx.xxx.13
>
> #### NAT redirecionamento
> rdr on $ext_if proto tcp from any to 186.xxx.xxx.14 port 80 ->
> 192.168.255.1 port 80
>
> #### NAT N:1
> nat on $ext_if from <masq> to any -> 186.xxx.xxx.9
>
> Para testar se tem erro nas regras: pfctl -nf pf.conf
> Para carregar as regras: pfctl -f pf.conf
> Para mostrar as regras: pfctl -s nat
>
> Bem isso é só para ajudar mas o ideal é você estudar o PF mesmo porque
> tem muito mas muito mais opções.
> >
> >
> > Em 05-06-2014 09:49, jeimerson escreveu:
> >>      21/01/01 18:29 - Como usar o NATD no FreeBSD com o ipfw
> >>
> >>                                                               Denis S.
Silva
> >> # $FreeBSD: 0.2 2000/01/21 01:33:01 dennix Exp $
> >>
> >> Como usar o NATD (network address translator) no FreeBSD com o ipfw
> >>
> >> Breve introducao;
> >> Recompilando o kernel;
> >> Configuracao:
> >>    Servidor;
> >>    Estacoes;
> >> Testando;
> >>
> >> Breve introducao;
> >>    O NAT funciona como um proxy transparente, tambem conhecido como
> >>    IP Masquerading ele ira funcionar como um roteador para uma pequena
LAN,
> >>    oque significa depois de configurar a sua maquina bsd como gateway,
> >>    voce pode (apartir de outras maquinas em sua rede) surfar na
Internet
> >>    utilizando um IP Valido(** ip valido para a internet**)
> >>    Em outras palavras faz com que voce possa acessar a InterNet com uma
> >>    unica conexao dedicada e varios micros ligados em LAN (rede local),
> >>    atraves de uma conexao PROXY*.
> >>
> >>    Esse "how-to" eh para a seguinte configuracao
> >>    O funcionamento do natd eh parecido com o no Wingate(windows),
> >>    Ipchains(linux).
> >>    O esquema seria algo proximo de:
> >>
> >> +------
> >> + pc1 + ---
> >> +------    |
> >> + pc2 + ---
> >> +------    |       +-----+     ++++++++++++
> >> + pc3 + --- ++++++++ BSD +++++++ Internet +
> >> +-----+    |       +-----+     ++++++++++++
> >> + pc3 + ---
> >> +-----+    |
> >> + pc4 + ---
> >> +-----+
> >>
> >>
> >> rem> Visao geral da configuracao do BSD:
> >> rem> Subistitua o 200.x.x.1/255.255.255.224 pelo seu IP valido e sua
> >> rem> Netmask correspondente
> >> ed0     - 200.x.x.1 / 255.255.255.224
> >> ed1     - 192.168.0.1 / 255.255.255.0
> >> gateway - 200.x.x.2
> >> dns     - 200.x.x.3
> >>
> >> pcX:
> >> IP      192.168.0.10
> >> Netmask 255.255.255.0
> >> Gateway 192.168.0.1
> >> DNS     200.x.x.3
> >>
> >> BSD - A maquina FreeBSD
> >> pcX - Maquina cliente podendo ser Windows, OS/2, BeOS e/ou qquer outro
> >> que suporte TCP/IP
> >>
> >> Uma explicacao simples sobre a faixa de IP's disponivel para
intranet/rede
> >> local (IANA) de acordo com a RFC1597
> >> No nosso exemplo utilizamos a Classe C (192.168.0.0)
> >>
> >> Classe De Rede  Netmask       Endereco De Rede
> >> A               255.0.0.0     10.0.0.0    - 10.255.255.255
> >> B               255.255.0.0   172.16.0.0  - 172.31.255.255
> >> C               255.255.255.0 192.168.0.0 - 192.168.255.255
> >>
> >> Explicacao sobre termos usados no artigo "shell>", "edit>" e "rem>":
> >> shell> sua shell (c shell, bash, korn, ...)
> >> edit> seu editor de textos preferido (ee, vi, pico, ...)
> >> rem> comentarios
> >>
> >> Recompilando o kernel
> >> ---------------------
> >>
> >> rem> Eh necessario recompilar o kernel adicionando as seguintes opcoes:
> >> edit> /usr/src/sys/i386/conf/NATD
> >> #
> >> # NATD -- FreeBSD/i386
> >> # FreeBSD 4.2
> >> #
> >> # $FreeBSD: src/sys/i386/conf/NATD,v 1.0 2000/01/21 13:16:07 dennix
Exp $
> >> options         INCLUDE_CONFIG_FILE
> >> options         IPDIVERT
> >> options         IPFIREWALL              #firewall
> >> options         IPFIREWALL_FORWARD      #enable transparent proxy
support
> >> options         IPFIREWALL_DEFAULT_TO_ACCEPT    #allow everything by
default
> >> options         TCP_DROP_SYNFIN         #drop TCP packets with SYN+FIN
> >> options         TCP_RESTRICT_RST        #restrict emission of TCP RST
> >> #options         IPFIREWALL_VERBOSE     #print information about
> >> #options         IPFIREWALL_VERBOSE_LIMIT=100   #limit verbosity
> >>
> >> Configuracao
> >> ------------
> >>
> >> Configuracao do Servidor:
> >>
> >> edit> /etc/rc.conf
> >> natd_enable="YES"
> >> natd_interface="ed0"
> >> natd_flags="-l -f /etc/natd.conf"
> >> gateway_enable="YES"
> >> firewall_enable="YES"
> >> firewall_type="UNKNOW"
> >> firewall_quiet="YES"
> >> network_interfaces="ed0 ed1 lo0"
> >> ifconfig_ed0="inet 200.x.x.1 media netmask 255.255.255.224"
> >> ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0"
> >> defaultrouter="200.x.x.2"
> >> hostname="bsdbox"
> >>
> >> edit> /etc/natd.conf
> >> # qual a placa de rede que tem conexao com a internet
> >> interface ed0
> >> # para funcionar o ftp/dcc eh necessario as linhas abaixo
> >> dynamic yes
> >> same_ports yes
> >> use_sockets yes
> >>
> >> edit> /etc/rc.local
> >> /sbin/ipfw -f flush
> >> /sbin/ipfw add divert natd all from any to any via ed0
> >> /sbin/ipfw add pass all from any to any
> >>
> >> rem> depois de fazer todas essas configuracoes no servidor reboote-o
> >>
> >> Configuracao das Estacoes clientes:
> >> rem> exemplo de configuracao
> >> rem> IP: 192.168.0.2
> >> rem> Netmask: 255.255.255.0
> >> rem> Gateway: 192.168.0.1
> >>
> >> Testando
> >> --------
> >> rem> Para testar tente pingar de uma estacao para fora da rede
> >> rem> pingado de uma maquina windows
> >> C:\WINDOWS\Desktop>ping free.bsd.com.br
> >>
> >> Disparando contra free.bsd.com.br [200.243.51.4] com 32 bytes de dados:
> >>
> >> Resposta de 200.243.51.4:bytes=32 tempo=83ms Tempo de vida=249
> >> Resposta de 200.243.51.4:bytes=32 tempo=68ms Tempo de vida=249
> >> Resposta de 200.243.51.4:bytes=32 tempo=83ms Tempo de vida=249
> >> Resposta de 200.243.51.4:bytes=32 tempo=68ms Tempo de vida=249
> >>
> >> Estat?sticas do Ping para 200.243.51.4:
> >>       Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda),
> >> Tempos aproximados de ida e volta em milissegundos:
> >>       M?nimo = 68ms, Máximo =  83ms, Média =  75ms
> >>
> >> C:\WINDOWS\Desktop>  rem> pingando de uma maquina bsd
> >> pupa# ping free.bsd.com.br
> >> PING free.bsd.com.br (200.243.51.4): 56 data bytes
> >> 64 bytes from 200.243.51.4: icmp_seq=0 ttl=249 time=64.093 ms
> >> 64 bytes from 200.243.51.4: icmp_seq=1 ttl=249 time=87.913 ms
> >> 64 bytes from 200.243.51.4: icmp_seq=2 ttl=249 time=73.586 ms
> >> 64 bytes from 200.243.51.4: icmp_seq=3 ttl=249 time=65.479 ms
> >> ^C
> >> --- free.bsd.com.br ping statistics ---
> >> 4 packets transmitted, 4 packets received, 0% packet loss
> >> round-trip min/avg/max/stddev = 64.093/72.768/87.913/9.466 ms
> >>
> >> rem> se a saida for algo assim ta funcionando
> >>
> >> ---
> >> Paz profunda,
> >>                Denis S. Silva
> >>
> >>      ?
> >>
> >>      Fonte www.free.bsd.com.br
> >>
 __________________________________________________________________
> >>
> >>      De: thiagoapadua em yahoo.com.br
> >>      Enviada: Quinta-feira, 5 de Junho de 2014 08:58
> >>      Para: freebsd em fug.com.br
> >>      Assunto: [FUG-BR] Source Nat temporário no FreeBSD
> >>      Só complementando, tenho o IPFW habilitado.
> >>      Em 05-06-2014 08:45, Thiago Andrighetti escreveu:
> >>      > Olá!
> >>      >
> >>      > Já adianto que sou novo em FreeBSD, minha experiência vem do
Linux
> >>      e Mikrotik.
> >>      > Coloquei em funcionamento um FreeBSD com Openbgpd para ser meu
> >>      roteador de borda, tudo certo e funcionando.
> >>      > O que acontece, é que a interface que recebe meu link esta
ligada em
> >>      um radio, pois o link chega de longe, e esses
> >>      > radios foram configurados por outra pessoa, eles só estão com
IP,
> >>      não tem gateway configurado. Como consequencia
> >>      >
> >>      > do FreeBsd eu pingo ele, pois tenho um ip na mesma faixa, mas de
> >>      outras máquinas que estão antes do FreeBSD não
> >>      >
> >>      > consigo acessar esses radios.
> >>      > No Linux ou Mikrotik eu resolveria fazendo um SNAT de tudo que
vai
> >>      pro ip do radio mudando a origem do pacote
> >>      > para o ip que está na placa do FreeBSD, na verdade era isso que
eu
> >>      fazia no Mikrotik.
> >>      > Mas no FreeBSD fiquei meio perdido ainda nesta parte de NAT,
até nem
> >>      habilitei nada de natd no rc.conf pois não
> >>      > imaginei que iria usar, esqueci desses radios benditos.
> >>      >
> >>      > Tem alguma regra que eu possa fazer essa mudança de origem de
> >>      pacote, pra eu poder acessar esses radios e colocar
> >>      > o bendito gateway correto?
> >>      >
> >>      > Queria ver algo só temporário, pra não ter nat nenhum no router
> >>      freebsd.
> >>      >
> >>      > Desculpem o tamanho da mensagem, e obrigado.
> >>      >
> >>      >
> >>      >
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Se for só para acessar os radios, faça um túnel SSH para o BSD e acesse-os.

# ssh -L 80:ip-do-radio:80 root em ip-do-bsd

E então no seu browser: http://127.0.0.1/

Abs


Mais detalhes sobre a lista de discussão freebsd