Advertisement
Guest User

Untitled

a guest
May 26th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.19 KB | None | 0 0
  1. 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.
  2. Versão do debian: a 5.0.4.
  3. Versão do Shaperd:0.2.1-5.2
  4. Versão do Iptables:1.4.2-6
  5. Versão do kernel:2.6.26-2-686
  6.  
  7. 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:
  8.  
  9. Rede WAN eth0 com ip 143.X.X.247
  10. Rede LAN eth1 com ip 192.168.10.1 (gateway da rede iterna)
  11.  
  12. Abrindo o arquivo para edição.
  13. vim /etc/network/interfaces
  14. ---------------------------------------------------------------------
  15. auto lo eth0
  16. iface lo inet loopback
  17.  
  18. #Rede externa = WAN
  19. iface eth0 inet static
  20. address 143.X.X.247
  21. netmask 255.255.255.0
  22. network 143.X.X.0
  23. broadcast 143.X.X.255
  24. gateway 143.X.X.1
  25. # habilitar o NAT
  26. up iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE
  27.  
  28. #Rede interna = LAN
  29. iface eth1 inet static
  30. address 192.168.10.1
  31. netmask 255.255.255.0
  32. network 192.168.10.0
  33. broadcast 192.168.10.255
  34. gateway 143.107.200.1
  35.  
  36.  
  37. dns-nameservers 143.X.X.45
  38. dns-search dominio.usp.br
  39. ---------------------------------------------------------------------
  40.  
  41. Após configurado as interfaces de rede e hábilitado o NAT precisamos instalar os pacotes
  42. shell>#aptitude install shaperd
  43. Caso não esteja com o iptables instalado
  44. shell>#aptitude install iptables
  45. Ativando o modulo do kernel ip_queue
  46. shell>#modprobe ip_queue
  47.  
  48. 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.
  49. Abrindo o arquivo para edição.
  50. vim /etc/shaperd/shaperd.conf
  51. ---------------------------------------------------------------------
  52. # example.2.conf.ipq : priority-based shaping (for 2.4 kernels)
  53. #
  54. # send a SIGHUP to reload this file with the command killall -HUP shaperd
  55.  
  56. # this is an "internal" log level (all logs are sent with facility daemon,
  57. # priority info; see the syslog manpage for more information).
  58. # valid levels are:
  59. # alert (1)
  60. # error (2)
  61. # warning (3)
  62. # info (4)
  63. # debug1 (5)
  64. # debug2 (6)
  65. # log levels beggining from warning (3) will log unmatched packets
  66. ###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.
  67. log level = info
  68. # this is a required option. note that shaperd must have been built with
  69. # the correct forwarding mechanism(s) in order for these to work
  70. # see the README for further details
  71. # Foi utilizado ipq ao inves de divert(BSD)
  72. packet forwarding = ipq
  73.  
  74. # this is useful for debugging
  75. # shaperd will run detached if set to "yes"
  76. #Para rodar como Daemon
  77. daemon = yes
  78.  
  79. # full path to shaperd's pidfile
  80. # it will be generated in daemon mode only
  81. #Caminho para pidfile
  82. pidfile = /var/run/shaperd.pid
  83.  
  84. #Criado uma classe chamada from_A
  85. class from_A {
  86. #Limite da Banda para essa regra
  87. bandwidth = 56 kbyte/s
  88.  
  89. #prioridade dessa regra no caso PRIO-0 e o protocolo que essa regra vai atuar no caso TCP
  90. ipv4 classifier prio=0 proto=tcp \
  91.  
  92. #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
  93. inp_if=eth1 saddr=192.168.10.2 \
  94. out_if=eth0 daddr=0.0.0.0/0.0.0.0
  95.  
  96. #Quando se usa o Borrow ele pega a banda reservada para a classe from_B quando não está em uso e utiliza
  97. #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.
  98. borrow from from_B
  99. #prioridade dessa regra é 1 para protocolo UDP
  100. ipv4 classifier prio=1 proto=udp \
  101. #Essa regra trabalha encima dos dados que chegam pela eth1 de qualquer endereço da rede interna com destino a eth0 para qualquer IP
  102. inp_if=eth1 saddr=0.0.0.0/0.0.0.0 \
  103. out_if=eth0 daddr=0.0.0.0/0.0.0.0
  104. #limite de pacotes não fiz um estudo apronfudado para informar o qual limite seria bom portanto deixei como vem no exemplo.
  105. queue limits = 0 kb 100 packets
  106. }
  107.  
  108. class from_C {
  109. bandwidth = 56 kbyte/s
  110. ipv4 classifier prio=0 proto=tcp \
  111. #Faz a regra inversa do form_A ou seja pega tudo que vem pela eth0 de qualquer IP
  112. #com destino a eth1 no endereco 192.168.10.2 e aplica o shaper nela
  113. inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
  114. out_if=eth1 daddr=192.168.10.2
  115. #Mesma ideia do borrow from_B utilza a banda se desponivel da classe from_D
  116. borrow from from_D
  117. #protocolo UDP
  118. ipv4 classifier prio=1 proto=udp \
  119. #Faz a regra inversa do form_A ou seja pega tudo que vem pela eth0 de qualquer IP
  120. #com destino a eth1 no para qualquer ip e aplica o shaper nela
  121. inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
  122. out_if=eth1 daddr=0.0.0.0/0.0.0.0
  123. queue limits = 0 kb 100 packets
  124. }
  125.  
  126.  
  127. class from_B {
  128. bandwidth = 512 kbyte/s
  129. ipv4 classifier prio=0 proto=tcp \
  130. #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
  131. inp_if=eth1 saddr=192.168.10.3 \
  132. out_if=eth0 daddr=0.0.0.0/0.0.0.0
  133. queue limits = 0 kb 100 packets
  134. }
  135.  
  136. class from_D {
  137. bandwidth = 512 kbyte/s
  138. ipv4 classifier prio=0 proto=tcp \
  139. #Faz a regra inversa do form_B ou seja pega tudo que vem pela eth0 de qualquer IP
  140. #com destino a eth1 no endereco 192.168.10.3 e aplica o shaper nela
  141. inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
  142. out_if=eth1 daddr=192.168.10.3
  143. queue limits = 0 kb 100 packets
  144. }
  145.  
  146. ---------------------------------------------------------------------
  147.  
  148.  
  149. 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.
  150.  
  151. #Configuração do iptables para a maquina com IP=192.168.10.2
  152. iptables -A FORWARD -s 192.168.10.2/32 -i eth1 -o eth0 -j QUEUE
  153. iptables -A FORWARD -d 192.168.10.2/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
  154.  
  155. #Configuração do iptables para a maquina com IP=192.168.10.3
  156. iptables -A FORWARD -s 192.168.10.3/32 -i eth1 -o eth0 -j QUEUE
  157. iptables -A FORWARD -d 192.168.10.3/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
  158.  
  159. #Configuração do iptables para toda a rede 192.168.10.0/24
  160. #iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -o eth0 -j QUEUE
  161. #iptables -A FORWARD -d 192.168.10.0/24 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE
  162.  
  163.  
  164. 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