Páginas

segunda-feira, 30 de agosto de 2010

sexta-feira, 27 de agosto de 2010

IPCALC

Marcelo,

Usei o ipcalc como voc� indicou e funcionou perfeitamente.
Como forma de consulta, vou deixar registrado como procedi.

Linha de comando para o ipcalc:
ipcalc 192.168.26.0/24 -s 6

Address: 192.168.26.0 11000000.10101000.00011010. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.26.0/24 11000000.10101000.00011010. 00000000
HostMin: 192.168.26.1 11000000.10101000.00011010. 00000001
HostMax: 192.168.26.254 11000000.10101000.00011010. 11111110
Broadcast: 192.168.26.255 11000000.10101000.00011010. 11111111
Hosts/Net: 254 Class C, Private Internet

1. Requested size: 6 hosts
Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000
Network: 192.168.26.0/29 11000000.10101000.00011010.00000 000
HostMin: 192.168.26.1 11000000.10101000.00011010.00000 001
HostMax: 192.168.26.6 11000000.10101000.00011010.00000 110
Broadcast: 192.168.26.7 11000000.10101000.00011010.00000 111
Hosts/Net: 6 Class C, Private Internet


E o firewall ficou assim:


#!/bin/sh

ipfw -f flush

ipfw add 01 divert 8668 ip from any to any via sis0
ipfw add 02 deny tcp from any to any 3128 via sis0
ipfw add 101 allow tcp from 192.168.26.0/24 to 192.168.26.254 3128 via
rl0
ipfw add 102 allow tcp from 192.168.26.0/29 to any 80 via rl0 setup
keep-state
ipfw add 103 deny tcp from 192.168.26.0/24 to any 80 via rl0 setup
keep-state
ipfw add 300 allow ip from any to any


Valeu pela ajuda!

Daniel

> ent�o so usando o ipcalc e vendo se tem alguma possibilidade de escrever
> tipo 192.168.26.1/26 , sen�o � regra por regra acho que 1-6 num rola ,
> s� testando pra ver
>
>
>
> On Thu, 2005-03-10 at 13:15, Daniel Angelini Toledo wrote:
> > Desculpe, esqueci de mencionar. � ipfw vers�o 1.
> >
> > > man ipfw
> > >
> > >
> > > If you administer one or more subnets, you can take advantage of the
> > > ipfw2 syntax to specify address sets and or-blocks and write
> > > extremely
> > > compact rulesets which selectively enable services to blocks of
> > > clients,
> > > as below:
> > >
> > > goodguys="{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11}
> > > }"
> > > badguys="10.1.2.0/24{8,38,60}"
> > >
> > > ipfw add allow ip from ${goodguys} to any
> > > ipfw add deny ip from ${badguys} to any
> > > ... normal policies ...
> > >
> > > Marcelo
> > >

FreeBSD; IPFW + ALTQ

IPFW com ALTQ
August 18, 2009
O ALTQ (Alternate Queueing) é um sistema de enfileiramento de pacotes amplamente usado para implementação de QoS. Muitos administradores de redes que trabalham com *BSD estão acostumados a com a utilização do PF para implementação do ALTQ. Mas também é possível a utilização dele com o IPFW. Vamos ver:

O primeiro passo é compilar o kernel do seu BSD (FreeBSD no meu caso) com as opções necessárias, precisaremos usar o PF para a configuração inicial do ALTQ (se alguém conhecer uma ferramenta específica para gerenciamento das filas, comentários serão bem vindos). Bem, adicione as seguintes linhas no arquivo de configurações do seu kernel:

#PF
device pf

#ALTQ
options ALTQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_CBQ
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_HFSC
options ALTQ_NOPCC # se você usa sistemas SMP

# IPFIREWALL
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options LIBALIAS
options IPSTEALTH
options DUMMYNET
options IPDIVERT

Fiz uma regra de exemplo do ALTQ com subfilas e uso dos algoritmos de detecção e controle de congestionamento para demonstrar que é possível utilizá-lo no IPFW da mesma maneira como seria usado no PF. No seu pf.conf:

altq on nfe0 cbq bandwidth 100Mb queue { http, msn, resto }
. queue http bandwidth 10% cbq(rio,default)
. queue msn bandwidth 10%
. queue resto bandwidth 80% cbq(borrow, red) { smtp, pop }
. queue smtp bandwidth 50%
. queue pop bandwidth 50% cbq(ecn)

Ative o PF e carregue as regras: pfctl -e -f /etc/pf.conf

Para mandar o tráfego do IPFW para o ALTQ, ative-o com o comando: ipfw enable altq

A regra abaixo envia para fila filha smtp todo o tráfego que sai na interface nfe0 pela porta 25:

ipfw add 50 allow altq smtp tcp from any to any 25 via nfe0 out

Você pode verificar o tráfego nas filas com o comando: pfctl -vvsq

FreeBSD: Tunning

Tem, experimente trabalhar com as técnicas de tunning de Matt Dilon.
Exemplo de meu sysctl particular.

# Tunning 1 - Stack TCP/IP & kernel tuning

kern.maxfiles=131392
kern.maxfilesperproc=16424
kern.ipc.somaxconn=8192
kern.ipc.maxsockbuf=8388608

# Ideal, segundo Matt Dillon - man tuning



net.inet.tcp.always_keepalive=1
net.inet.tcp.keepidle=24000
net.inet.tcp.keepintvl=3000
net.inet.tcp.keepinit=70000
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.ip.intr_queue_maxlen=50

# Tuning 2 - Stack TCP/IP - Firewalling

net.inet.ip.fw.enable=1
net.inet.ip.fw.debug=1
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=500
net.inet.ip.fw.dyn_buckets=256
net.inet.ip.fw.dyn_max=3000
net.inet.ip.fw.dyn_ack_lifetime=300
net.inet.ip.fw.dyn_syn_lifetime=20
net.inet.ip.fw.dyn_fin_lifetime=2
net.inet.ip.fw.dyn_rst_lifetime=2
net.inet.ip.fw.dyn_udp_lifetime=10
net.inet.ip.fw.dyn_short_lifetime=5

# Blackhole - define blackhole pra tcp syn em portas sem daemon.
# Dificulta stealth portscans e diminui o impacto de ataques de DoS.

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

# ARP Exaustion - 1200 = 20 Minutos. Ideal.
net.link.ether.inet.max_age=1200
net.inet.icmp.bmcastecho=0

# Network Fine Tuning
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.link.ether.inet.max_age=1200
net.inet.icmp.bmcastecho=0
net.inet.ip.fastforwarding=1
net.inet.ip.forwarding=1
net.inet.ip.fw.one_pass=1
net.inet.icmp.maskrepl=0
net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535

# Ideal segundo Marcelo Araujo ;)
# T/TCP -- Tcp extensions for Transactions
net.inet.tcp.rfc1644=1

# Tuning de SOM
hw.snd.pcm0.vchans=4
hw.snd.maxautovchans=4

# Tunning memoria compartilhada para o XFREE
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

# Calcula o atraso de banda para cada conexao e
# limita a quantidade de dados enfileirados para
# apenas a quantidade requerida
net.inet.tcp.inflight_enable=1

# Prevenindo ataque DOS

net.inet.tcp.msl=7500
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.icmplin=50
kern.ipc.somaxconn=32768

# Usuarios nao veêm processos de outros usuarios
kern.ps_showallprocs=0

quinta-feira, 19 de agosto de 2010

FreeBSD: Automatizar instalação

http://www.cs.duke.edu/~gallatin/sysinstall.html
http://forums.freebsd.org/showthread.php?p=85274#post85274
http://www.bsdcan.org/2009/schedule/events/126.en.html
http://www.locolomo.org/howto/pxeboot/automatic-installation.html

terça-feira, 17 de agosto de 2010

FreeBSD: IPFW com ALTQ

O ALTQ (Alternate Queueing) é um sistema de enfileiramento de pacotes amplamente usado para implementação de QoS. Muitos administradores de redes que trabalham com *BSD estão acostumados a com a utilização do PF para implementação do ALTQ. Mas também é possível a utilização dele com o IPFW. Vamos ver:

O primeiro passo é compilar o kernel do seu BSD (FreeBSD no meu caso) com as opções necessárias, precisaremos usar o PF para a configuração inicial do ALTQ (se alguém conhecer uma ferramenta específica para gerenciamento das filas, comentários serão bem vindos). Bem, adicione as seguintes linhas no arquivo de configurações do seu kernel:

#PF
device pf

#ALTQ
options ALTQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_CBQ
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_HFSC
options ALTQ_NOPCC # se você usa sistemas SMP

# IPFIREWALL
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options LIBALIAS
options IPSTEALTH
options DUMMYNET
options IPDIVERT

Fiz uma regra de exemplo do ALTQ com subfilas e uso dos algoritmos de detecção e controle de congestionamento para demonstrar que é possível utilizá-lo no IPFW da mesma maneira como seria usado no PF. No seu pf.conf:

altq on nfe0 cbq bandwidth 100Mb queue { http, msn, resto }
. queue http bandwidth 10% cbq(rio,default)
. queue msn bandwidth 10%
. queue resto bandwidth 80% cbq(borrow, red) { smtp, pop }
. queue smtp bandwidth 50%
. queue pop bandwidth 50% cbq(ecn)

Ative o PF e carregue as regras: pfctl -e -f /etc/pf.conf

Para mandar o tráfego do IPFW para o ALTQ, ative-o com o comando: ipfw enable altq

A regra abaixo envia para fila filha smtp todo o tráfego que sai na interface nfe0 pela porta 25:

ipfw add 50 allow altq smtp tcp from any to any 25 via nfe0 out

Você pode verificar o tráfego nas filas com o comando: pfctl -vvsq

REFERÊNCIA

Squid: Delay Pools

#Neste tutorial vamos ver como se usa as delay pools.
#Delay pools é uma opção usada no squid para fazer limite de banda,
#neste tutorial vamos nos concentrar apenas em delay pools, delay class, delay access e delay parameters.
#Este tutorial já leva em conta que você já tenha algum conhecimento em squid, sendo porém alusivo também a
#quem está apredendo a usar o squid.

#Este tutorial vamos como exemplo duas delay pools.
#Seguindo assim uma linha muita usada com delay pools, vamos neste tutorial,
#usar as delay pools em nossa rede interna e para internet.

#Leve em conta que temos duas acl's criadas com os nomes de extensoes e interno.
#Essas acl's serão usadas em nosso tutorial.
#################################################################

acl extensoes url_regex -i .*

#está acl que criamos está pegando tudo que é relacionado a ponto ou seja,
#inclusive extensões html, jpeg, jpg, gif, php, png, htm e etc... Que são usadas em paginas de internet.
#se você quer bloquear tudo menos estas extensões faça assim...
acl extensoes url_regex -i .* !.html !.htm !.php !.jpeg !.jpg !.png !.gif e etc.......

#bloqueamos tudo exceto as seguintes extensões. Mas se o seu interesse é bloquear arquivos como mp3, avi, faça o seguinte.
acl extensoes url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov

#você também pode criar-las em um arquivo.
acl extensoes url_regex -i "caminho do arquivo"

#coloque as extensões dentro deste arquivo(mas apenas uma extensão por linha).
acl interno url_regex -i 192.168.1.0
#################################################################

#delay_pools:

#Está opção especifica o número de delay pools que você vai possuir, por exemplo, se você possui 2 delay pools, este número
#deve ser igual a 2, se você tem 3 delay pools, este número deve ser igual a 3, e assim por diante.

#delay_pools (número de delay pools)


delay_pools 2 #isto significa que nós possuimos 2 delay's pools.

#Como dito acima, o número de delay pools que vamos criar.
#################################################################

#delay_class:

#Define a classe de cada delay pool. Deve haver exatamente uma classe de delay para cada delay pool.

#delay_class (número da delay pool) (número da classe da delay poll)

delay_class 1 2 #isto significa que a delay pool 1 é uma delay class 2

delay_class 2 2 #isto significa que a delay pool 2 é uma delay class 2

#Como visto acima, nós temos duas delay pools e duas delay class,
#e também podemos ver que nossas delay class são todas classe 2.
#Não esqueça, o primeiro número é sua delay pool, e o segundo é a sua delay class.
#################################################################

#delay_access:

#Determina em qual delay pool uma requisição será encaixada. A primeira a combinar será utilizada, por isso verifique com #cuidado suas acls.

#delay_access (número da delay poll) allow|deny nome da acl

delay_access 1 allow palavras #estamos direcionando nossa delay pool 1(que é uma classe 2) para a acl palavras.
delay_access 2 allow interno #fazendo o mesmo que acima, porém para a acl interno(que também é uma classe 2).
#################################################################

#delay_parameters:
#Define os parâmetros para uma delay pool. Cada delay pool tem um número de alocação de tráfego associado.

#delay_parameters (número da delay pool) agregado (delay_class 1)

#delay_parameters (número da delay pool) agregado individual (delay_class 2)

#delay_parameters (número da delay pool) agregado network individual (delay_class 3)

#Aqui vou mostrar apenas a saída da delay class 3 pois está engloba todas a opções.

#delay_parameters 1 -1/-1 24000/24000 1000/1000

#vamos ao significado:

#-1/-1:
#Valor AGREGADO:aqui especificamos quanto toda a banda vai utilizar, no caso -1/-1 significa
#valor ilimitado, por isso, se você quer limitar sua banda nunca coloque -1/-1.

#24000/24000:
#Valor NETWORK(REDE):aqui especificamos quanto cada uma de nossas redes irá poder utilizar, no caso algo em torno de 23Kb/s.

#1000/1000:
#Valor INDIVIDUAL:aqui especificamos quanto cada um de nossos usuários poderá utilizar, no caso menos de um 1K/s.

#Cada valor tem duas areás, uma antes da barra e outra depois. Vamos lá.
#RESTORE:O antes da barra.
#Especifica quantos bits poderá ser tráfegado por segundo.

#MAX:E lógico, o depois da barra.
#Especifica quantos bits poderá trafegar no total.

#Delay pools sempre trabalham com bits, não se esqueça.

delay_parameters 1 -1/-1 500/1000 #leia acima para entender.
delay_parameters 2 -1/-1 15000/25000 #leia acima para entender.
#################################################################

#TUDO FICARIA ASSIM.
acl extensoes url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
acl interno url_regex -i 192.168.1.0

delay_pools 2

delay_class 1 2
delay_parameters 1 -1/-1 500/1000
delay_access 1 allow palavras

delay_class 2 2
delay_parameters 2 -1/-1 15000/25000
delay_access 2 allow interno
################################################################

FreeBSD: Usando PF com FIBs no FreeBSD

Com o advento das múltiplas tabelas de roteamento no FreeBSD (FIB) ficou muito fácil distribuir certos tipos de tráfego por determinados links. Por exemplo, vamos supor que temos 2 links com respectivos gateways 192.168.1.254 e 10.10.1.254, para adicionar as duas rotas como default em 2 tabelas diferentes faça o seguinte:

route add default 192.168.1.254
setfib 1 route add default 10.10.1.254
Agora temos a tabela 0 com a rota default 192.168.1.254 e a tabela 1 com a rota default 10.10.1.254, agora vamos enviar todo tráfego para porta 25 para o segundo link (10.10.1.254) usando o PF:

pass in quick on $int_if from any to port 25 rtable 1
Fonte: Lista do FUG.

FreeBSD: Limite por weight

Imaginem que tenho 2 clientes (10.1.1.2 e 10.1.1.3) que compartilham a
mesma banda de 512Kbps/256Kbps (download e upload) e eu quero dar
prioridade maior para trafego nas portas 25 e 110. Já pesquisei e li
várias mensagens no histórico da lista e cheguei as seguintes regras,
gostaria de saber de vocês se elas realmente fazem o que quero:

# banda de 512/256Kbps compartilhada entre 10.1.1.2 e 10.1.1.3
ipfw pipe 1 config bw 512Kbit/s queue 64Kbytes # IN
ipfw pipe 2 config bw 256Kbit/s queue 32Kbytes # OUT
ipfw queue 1 config weight 20 pipe 1 mask src-port 25,110
ipfw queue 2 config weight 20 pipe 2 mask dst-port 25,110
ipfw queue 3 config weight 10 pipe 1 mask src-ip 0x000000ff
ipfw queue 4 config weight 10 pipe 2 mask dst-ip 0x000000ff

# cliente 1
ipfw add queue 1 tcp from 10.1.1.2/32 to any 25,110 in
ipfw add queue 2 tcp from any 25,110 to 10.1.1.2/32 out
ipfw add queue 3 all from 10.1.1.2/32 to any in
ipfw add queue 4 all from any to 10.1.1.2/32 out

# cliente 2
ipfw add queue 1 tcp from 10.1.1.3/32 to any 25,110 in
ipfw add queue 2 tcp from any 25,110 to 10.1.1.3/32 out
ipfw add queue 3 all from 10.1.1.3/32 to any in
ipfw add queue 4 all from any to 10.1.1.3/32 out

terça-feira, 10 de agosto de 2010

FreeBSD: IPFW com suporte a layer2 (Ether_demux)

sysctl net.link.ether.ipfw=1

FreeBSD: Banda compartilhada

ipfw add pipe 1 all from any to 192.168.1.1
ipfw add pipe 1 all from 192.168.1.1 to any
ipfw pipe 1 config bw 256Kb/s
aqui se esta compartilhando 256k para upload e download