[FUG-BR] Source Nat temporário no FreeBSD
Marcelo Gondim
gondim em bsdinfo.com.br
Quinta Junho 5 14:44:10 BRT 2014
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.
>> >
>> >
>> >
Mais detalhes sobre a lista de discussão freebsd