terça-feira, 9 de janeiro de 2007

Limitando banda no FreeBSD com ipfw + vlan

Este artigo é referente a um projeto que eu desenvolvi para um condominio, para compartilhar a internet pra todos os assinantes, mas é claro, limitar o usuário a velocidade que ele contratou.

O q estrutura esta mais ou menos assim

LINK- | FreeBSD + IPFW |---- TRUNK --- |CISCO |------ CLIENTE 1 192.168.30.X

                           |------- CLIENTE 2 192.168.31.X


                             |-------- CLIENTE 3 192.168.32.X


Para limitarmos a banda, vamos usar o ipfw com suporte à DUMMYNET

options DUMMYNET

Feito isto, agora podemos começar a criar as regras:

Criei 2 scripts..para automatizar..a tarefa...vou explicar cada um deles

---------------------------------------------------------------------------

# Configuracao VLANS IPS c/ NAT


############# Parte Inferior ##############


# cliente 1


ifconfig vlan0 vlan 1 vlandev fxp0


ifconfig vlan0 inet 192.168.30.1 netmask 255.255.255.0



# cliente 2


ifconfig vlan1 vlan 2 vlandev fxp0


ifconfig vlan1 inet 192.168.31.1 netmask 255.255.255.0



# cliente 2


ifconfig vlan2 vlan 3 vlandev fxp0


ifconfig vlan2 inet 192.168.32.1 netmask 255.255.255.0


-------------------------------------------------------------------------


Este primeiro script configura as vlans automaticamente para cada cliente


 


Agora o segundo script que é responsável pelo limite de banda de cada cliente


-----------------------------------------------------------------------------


#! /bin/sh


sh /etc/vlans.sh




ipfw pipe 3 config bw 1740Kbit/s

ipfw pipe 4 config bw 1740Kbit/s


ipfw add 55 pipe 3 ip from any to 200.170.210.99/32


ipfw add 55 pipe 4 ip from 200.170.210.99/32 to any






 


# Conj:Terreo Cliente:Cliente 1


#ipfw pipe 10254 config bw 256Kbit/s


#ipfw pipe 11254 config bw 256Kbit/s


#ipfw add 10254 pipe 10254 ip from any to 192.168.30.0/24


#ipfw add 11254 pipe 11254 ip from 192.168.30.0/24 to any


#ipfw add 254 count ip from 192.168.30.0/24 to any


#ipfw add 254 count ip from any to 192.168.30.0/24



## Conj:13 Cliente: Cliente 2


ipfw pipe 1013 config bw 64Kbit/s


ipfw pipe 1113 config bw 64Kbit/s


ipfw add 1113 pipe 1113 ip from 192.168.31.0/24 to any


ipfw add 1013 pipe 1013 ip from any to 192.168.31.0/24


ipfw add 13 count ip from 192.168.31.0/24 to any


ipfw add 13 count ip from any to 192.168.31.0/24




## Conj:21/28 Cliente: Cliente 3

ipfw pipe 1022 config bw 512Kbit/s


ipfw pipe 1122 config bw 512Kbit/s


ipfw add 1122 pipe 1122 ip from 192.168.32.0/24 to any


ipfw add 1022 pipe 1022 ip from any to 192.168.32.0/24


ipfw add 22 count ip from 192.168.32.0/24 to any


ipfw add 22 count ip from any to 192.168.32.0/24


-----------------------------------------------------------------------------------


Como podemos ver..o segundo script chama o primeiro...daeo primeiro levanta as interfaces..e logo depois o segundo cria as regras para limitar a banda.


Eu não entrei aqui na parte do roteador..pq eu não sou especialista..mas no caso de configurar a vlan no FreeBSD ..com porta trunk como é o caso deste artigo..


Vou colocar aqui um trecho do artigo da FUG que fala sobre vlans, e que eu tambem tomei como base.


Nossa configuração está concluída no lado do FreeBSD, vou colocar a configuração que deve ser realizada switchs cisco catalyst com o IOS mensionado abaixo:


Cisco Catalyst – IOS 12.2(25)SEE2


Logue no switch com seu usuário e senha, entre em modo enable:


Switch# enable


Defina uma porta onde será conectado o FreeBSD com as nossas interfaces vlans, no nosso exemplo vamos escolher a porta FastEthernet 1.


Entre em como de configuração



Switch# configure terminal
Switch (config)# interface FastEthernet 1/0/1

Lembrando que a interface pode variar conforme o modelo do switch.



Switch (config-if)# switchport trunk encapsulation dot1q
Switch (config-if)# switchport mode trunk
Switch (config-if)# switchport trunk allowed vlan 1,2,3

Switch (config-if)# description “DESCRIÇÃO DA PORTA”


Com estas configurações na porta estamos deixando apenas trafegar as vlans 1, 2, 3, caso queira adicionar mais uma vlan no trunk do switch, utilize o comando abaixo:


Switch (config-if)# switchport trunk allowed vlan add 4


Adicionamos a vlan 4 na porta do switch.


Configure o restante das portas do switch em mode access conforme mensionado abaixo:



Switch (config-if)# interface FastEthernet 1/0/2
Switch (config-if)# switchport mode access
Switch (config-if)# switchport access vlan 1

Com isso a porta dois consequirá conversar com a interface vlan 1 do FreeBSD através da porta 1 do switch que esta configurada em mode trunk. Faça o mesmo com as outras portas definindo a vlan que deve ser acessada pela porta.


Com isto finalizamos nosso how-to, espero ter ajudado, este tipo de configuração normalmente é utilizado em firewalls e roteadores, faça um calculo de tráfego para nao ter gargalo físico na placa de rede, se o tráfego for grande em cada vlan utilize uma placa gigabit de boa qualidade.


Bom é isso ae..espero ter ajudado


Referências


FUG


SECFORUM


Bruno Moreira Zanelato

0 comentários:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger | Printable Coupons