[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