Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Bom nesse artigo vamos falar um pouco sobre o Shaperd que vem para controle de banda nas distribuição debian, o foco desse artigo não é exaurir todas as funcionalidade da ferramente mas sim dar uma visão de como colocar a ferramente em produção e funcional.
- Versão do debian: a 5.0.4.
- Versão do Shaperd:0.2.1-5.2
- Versão do Iptables:1.4.2-6
- Versão do kernel:2.6.26-2-686
- Após instalação do sistema operacional foi configurado 2 interfaces de rede uma destinada a LAN e outra para WAN que segue as configuraçoes abaixo:
- Rede WAN eth0 com ip 143.X.X.247
- Rede LAN eth1 com ip 192.168.10.1 (gateway da rede iterna)
- Abrindo o arquivo para edição.
- vim /etc/network/interfaces
- ---------------------------------------------------------------------
- auto lo eth0
- iface lo inet loopback
- #Rede externa = WAN
- iface eth0 inet static
- address 143.X.X.247
- netmask 255.255.255.0
- network 143.X.X.0
- broadcast 143.X.X.255
- gateway 143.X.X.1
- # habilitar o NAT
- up iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE
- #Rede interna = LAN
- iface eth1 inet static
- address 192.168.10.1
- netmask 255.255.255.0
- network 192.168.10.0
- broadcast 192.168.10.255
- gateway 143.107.200.1
- dns-nameservers 143.X.X.45
- dns-search dominio.usp.br
- ---------------------------------------------------------------------
- Após configurado as interfaces de rede e hábilitado o NAT precisamos instalar os pacotes
- shell>#aptitude install shaperd
- Caso não esteja com o iptables instalado
- shell>#aptitude install iptables
- Ativando o modulo do kernel ip_queue
- shell>#modprobe ip_queue
- Pronto agora vamos a configuração do shaperd ele contem alguns exemplos no diretório usr/share/doc/shaperd/examples/ que foi o ponto de partida para esse arquivo de configuração que vou colocar aqui, mas vamos editar o arquivo em branco que se encontra no diretório /etc/shaperd e acrecentar a configuração abaixo.
- Abrindo o arquivo para edição.
- vim /etc/shaperd/shaperd.conf
- ---------------------------------------------------------------------
- # example.2.conf.ipq : priority-based shaping (for 2.4 kernels)
- #
- # send a SIGHUP to reload this file with the command killall -HUP shaperd
- # this is an "internal" log level (all logs are sent with facility daemon,
- # priority info; see the syslog manpage for more information).
- # valid levels are:
- # alert (1)
- # error (2)
- # warning (3)
- # info (4)
- # debug1 (5)
- # debug2 (6)
- # log levels beggining from warning (3) will log unmatched packets
- ###Nivel de log caso tenha problemas substitua info por debug2 e veja a msg, lembre-se de voltar por conta de não abarrotar seu /var com logs desnecessarios.
- log level = info
- # this is a required option. note that shaperd must have been built with
- # the correct forwarding mechanism(s) in order for these to work
- # see the README for further details
- # Foi utilizado ipq ao inves de divert(BSD)
- packet forwarding = ipq
- # this is useful for debugging
- # shaperd will run detached if set to "yes"
- #Para rodar como Daemon
- daemon = yes
- # full path to shaperd's pidfile
- # it will be generated in daemon mode only
- #Caminho para pidfile
- pidfile = /var/run/shaperd.pid
- #Criado uma classe chamada from_A
- class from_A {
- #Limite da Banda para essa regra
- bandwidth = 56 kbyte/s
- #prioridade dessa regra no caso PRIO-0 e o protocolo que essa regra vai atuar no caso TCP
- ipv4 classifier prio=0 proto=tcp \
- #Essa regra pega os dados que chegam pela eth1 do endereco 192.168.10.2 com destino a eth0 para qualquer IP e aplica o shaper
- inp_if=eth1 saddr=192.168.10.2 \
- out_if=eth0 daddr=0.0.0.0/0.0.0.0
- #Quando se usa o Borrow ele pega a banda reservada para a classe from_B quando não está em uso e utiliza
- #nesse caso a banda chegaria a 56kbyte/s mais 512 kbyte/s, caso queira deixar um valor fixo para a classe e so nao utilizar o borrow.
- borrow from from_B
- #prioridade dessa regra é 1 para protocolo UDP
- ipv4 classifier prio=1 proto=udp \
- #Essa regra trabalha encima dos dados que chegam pela eth1 de qualquer endereço da rede interna com destino a eth0 para qualquer IP
- inp_if=eth1 saddr=0.0.0.0/0.0.0.0 \
- out_if=eth0 daddr=0.0.0.0/0.0.0.0
- #limite de pacotes não fiz um estudo apronfudado para informar o qual limite seria bom portanto deixei como vem no exemplo.
- queue limits = 0 kb 100 packets
- }
- class from_C {
- bandwidth = 56 kbyte/s
- ipv4 classifier prio=0 proto=tcp \
- #Faz a regra inversa do form_A ou seja pega tudo que vem pela eth0 de qualquer IP
- #com destino a eth1 no endereco 192.168.10.2 e aplica o shaper nela
- inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
- out_if=eth1 daddr=192.168.10.2
- #Mesma ideia do borrow from_B utilza a banda se desponivel da classe from_D
- borrow from from_D
- #protocolo UDP
- ipv4 classifier prio=1 proto=udp \
- #Faz a regra inversa do form_A ou seja pega tudo que vem pela eth0 de qualquer IP
- #com destino a eth1 no para qualquer ip e aplica o shaper nela
- inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
- out_if=eth1 daddr=0.0.0.0/0.0.0.0
- queue limits = 0 kb 100 packets
- }
- class from_B {
- bandwidth = 512 kbyte/s
- ipv4 classifier prio=0 proto=tcp \
- #Essa regra pega os dados que chegam pela eth1 do endereco 192.168.10.3 com destino a eth0 para qualquer IP e aplica o shaper
- inp_if=eth1 saddr=192.168.10.3 \
- out_if=eth0 daddr=0.0.0.0/0.0.0.0
- queue limits = 0 kb 100 packets
- }
- class from_D {
- bandwidth = 512 kbyte/s
- ipv4 classifier prio=0 proto=tcp \
- #Faz a regra inversa do form_B ou seja pega tudo que vem pela eth0 de qualquer IP
- #com destino a eth1 no endereco 192.168.10.3 e aplica o shaper nela
- inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
- out_if=eth1 daddr=192.168.10.3
- queue limits = 0 kb 100 packets
- }
- ---------------------------------------------------------------------
- Subindo as regras do Firewall, com o iptables vamos "direcionar" os pacotes para o queue para que seja entregue para o shaperd podendo assim ele fazer o shapper, lembrando que quando se direciona o trafego de de determinados ips e no shaperd não tem configurações de shaper para o referido IP ele fica perdido ou seja se você jogar toda a rede e so fizer regra para alguns os outros ficarão sem acesso. Para evitar isso pode-se subir a regra um por um ou se jogar optar por jogar a rede toda lembre de configurar eles no shaperd, lembrando também que se parar o shaperd retire essas linhas do iptables.
- #Configuração do iptables para a maquina com IP=192.168.10.2
- iptables -A FORWARD -s 192.168.10.2/32 -i eth1 -o eth0 -j QUEUE
- iptables -A FORWARD -d 192.168.10.2/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
- #Configuração do iptables para a maquina com IP=192.168.10.3
- iptables -A FORWARD -s 192.168.10.3/32 -i eth1 -o eth0 -j QUEUE
- iptables -A FORWARD -d 192.168.10.3/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
- #Configuração do iptables para toda a rede 192.168.10.0/24
- #iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -o eth0 -j QUEUE
- #iptables -A FORWARD -d 192.168.10.0/24 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
- Bom basicamente é isso para que funcione de forma simples você pode fazer perfumaria nele especificando portas nas configurações do shaperd.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement