Página 1 de 3 123 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1

    Padrão Controle de banda 1mb-512kb p/ dados e 512kb p/ Voip

    é o seguinte tenho uma rede com servidor de internet deboan 4.0 etch com iptables+squid funcionando perfeitamente...e instalamos um servidor asterisk que vai ser nosso servidor de telefonia Voip e temos 1mb de link full embratel que está sendo instalado então vamos lá:
    faixa de ip da rede: 10.0.1.x

    servidor de internet:

    IP: 10.0.1.254 placa eth0 interna
    IP: 200.254.x.x placa eth1 externa

    servidor asterisk:
    IP: 10.0.1.5 placa eth1 porta 1010 para acesso externo com ssh

    então...estou precisando colocar a metade do link para o Voip e a outra metade para dados...como faço para colocar 512 só para o asterisk e os outros 512 para a rede toda??

  2. #2

    Padrão

    Citação Postado originalmente por lfernandosg Ver Post
    é o seguinte tenho uma rede com servidor de internet deboan 4.0 etch com iptables+squid funcionando perfeitamente...e instalamos um servidor asterisk que vai ser nosso servidor de telefonia Voip e temos 1mb de link full embratel que está sendo instalado então vamos lá:
    faixa de ip da rede: 10.0.1.x

    servidor de internet:

    IP: 10.0.1.254 placa eth0 interna
    IP: 200.254.x.x placa eth1 externa

    servidor asterisk:
    IP: 10.0.1.5 placa eth1 porta 1010 para acesso externo com ssh

    então...estou precisando colocar a metade do link para o Voip e a outra metade para dados...como faço para colocar 512 só para o asterisk e os outros 512 para a rede toda??

    Se voce descobrir como faz, posta ai.

  3. #3

    Padrão

    tenta isso aqui!!!


    #!/bin/bash


    #AKI TU COLOCA AS PORTA QUE FAZEM PARTE DO MATCH
    PORTADOVOIP=""
    PORTADOVOIP2=""

    tc qdisc add dev eth0 root handle 1: htb default 50


    tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300kbit ceil 512kbit
    tc class add dev eth0 parent 1:1 classid 1:50 htb rate 256kbit ceil 512kbit
    tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
    tc qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10



    U32="tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 "
    U32=$U32"match ip src 10.0.1.0/24 match ip dst 0.0.0.0/0"

    $U32 match ip sport $PORTADOVOIP 0xffff flowid 1:10
    $U32 match ip sport $PORTADOVOIP2 0xffff flowid 1:10


    qqr coisa grita montei na correria!

    Abraços
    Última edição por arium; 29-04-2008 às 11:38.

  4. #4

    Padrão

    vamos lá vou colocando as dúvidas embaixo para eu enteder oq eu fez:

    AKI TU COLOCA AS PORTA QUE FAZEM PARTE DO MATCH
    PORTADOVOIP=""
    PORTADOVOIP2=""

    dúvida: ele limita no caso pelas portas?pode ser por ip tb, no caso 512 para 10.0.1x que é o servidor asterisk e o restante ficaria default para toda a rede?

    tc qdisc add dev eth0 root handle 1: htb default 50

    dúvida: aqui no caso o degault seria o 256kb de up e 512down?como meu link é dedicado de 1mb up e down então posso colocar como default 512k up e down correto?

    tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300kbit ceil 512kbit
    tc class add dev eth0 parent 1:1 classid 1:50 htb rate 256kbit ceil 512kbit
    tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
    tc qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10



    U32="tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 "
    U32=$U32"match ip src 10.0.1.0/24 match ip dst 0.0.0.0/0"

    $U32 match ip sport $PORTADOVOIP 0xffff flowid 1:10
    $U32 match ip sport $PORTADOVOIP2 0xffff flowid 1:10

    essa parte do $U32 não entendi,duas variáveis iguais....pode me ajudar?


    outra coisa...como sei que o HTB é saída, ele controla o up e download ok?se sim, para upload ele não usaria a interface eth1 qu seria a wan do servidor de internet?

    desde já agradeço.

  5. #5

    Padrão

    sim isso eh um filtro de portas!!! as pastas do voip vc atribui nas variaveis
    PORTADOVOIP=""
    PORTADOVOIP2=""
    .
    .
    .
    PORTADOVOIPX=""

    #essa linha cria a classe root apenas e o que não for classificado vai receber a tag 50

    tc qdisc add dev eth0 root handle 1: htb default 50

    # diz que tua interface root tem 1mb
    tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit

    #diz que a classe 1:10 tem 300k de banda garantida e por ir até 512kps (o que sobra ele compensa no outro link e vice versa.. vc pode colocar soh o rate sem o ceil.. dae el vai assumir que vc quer GARANTIA TOTAL DOS 512 o que nao tem muito fundamento)

    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300kbit ceil 512kbit


    # a logica eh quase a mesma mais pra o que não está tageado ou seja o que nao passa pela regra anterior passa por essa regra (como eu setei default 50 lah em cima se lembra?)

    tc class add dev eth0 parent 1:1 classid 1:50 htb rate 256kbit ceil 1024kbit

    #a moral disso de baixo é para que uma classe nao "roube" os recursos das demais na mesma classe

    tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
    tc qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10

    #sobre as variaveis eh soh uma concatenação vc pode usar assim se quiser

    ao invez disso:
    U32="tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 "
    U32=$U32"match ip src 10.0.1.0/24 match ip dst 0.0.0.0/0"


    isso:

    tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip src 10.0.1.0/24 match ip dst 0.0.0.0/0



    ele controla down e up!
    para controlar o down eu usei ali na regra que o SRC dos pacote eh tua rede interna

    soh subistituir por DST e repetir as regras que ele vai controla o down

    mais acho que down nao precisa neh?

    Abraços!

  6. #6

    Padrão

    mas numa rede interna o down tb não é consumido? o correto não seia limitar o up por exemplo 128k e o down 256? e sim preciso de 512 garantido de down e up para o asterisk até porque meu link permite isso...banda garantida full só se tiver algum problema em colocar...

  7. #7

    Padrão

    bem vamo faze o seguinte!! vamo facilitar as coisas!

    vamos faze só por porta e rachando o link no meio 512/512 down/up pro teu servidor asterisk com prioridade maxima dos pacotes

    e 512/512 pro resto do teu link!

    #!/bin/bash
    tc qdisc add dev eth0 root handle 1: htb default 50
    tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit
    tc class add dev eth0 parent 1:1 classid 1:50 htb rate 512kbit
    tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
    tc qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10
    tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip src 10.0.1.5 flowid 1:10
    tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.1.5 flowid 1:10


    Abraços

  8. #8

    Padrão

    uma última dúvida, onde colocar as variáveias das portas:
    PORTADOVOIP=""
    PORTADOVOIP2=""
    .
    .
    .
    PORTADOVOIPX=""

    ou as portas do asterisk nas regras??

  9. #9

    Padrão

    o ultimo script que te passei nao usa porta e sim o ip do teu server.. pode usa ele fica mais facil tah completo ali no post acima

  10. #10

    Padrão

    ah entendi o estiver fora do 10.0.1.5 vai para toda a rede com 512 por default correto?

  11. #11

    Padrão

    eh pra ser isso mesmo

  12. #12

    Padrão

    já fizo em um servidor ontem que não é produção para teste...segunda testo e posto o resultado.só uma dúvida, me indicaram o bandlimit ele faz isso colocar o resto da banda para rede toda ou tenho que colocar todos ips da rede? me disseram que era mais simples mas essa sua regra tb achei simples.outra coisa, disseram que para o bandlimite pegar o upload tem que ser a versão p2p.

  13. #13

    Padrão

    kra como diria arnaldo cesar coelho!

    A REGRA EH CLARA! hehe

    tudo que nao for do ip do teu asterix ali vai entra como Default e vai se chappeado por uma classe 1:50 de 512 por 512

    o asterix vai ser chapeado por uma classe 1:10 de outros 512 por 512


    e deu nao precisa fazer mais nada nem configurar mais nada

  14. #14

    Padrão

    boa tarde...nosso link de produção só veio funciona hoje da embratel então antes eu estava rodando o banswitch e nesse novo para o asterisk coloquei seu script só que dá o erro abaixo quando vou rodá-lo

    linux:/home/novaf# /etc/init.d/banda start
    /etc/init.d/banda: line 2: tc: command not found
    /etc/init.d/banda: line 3: tc: command not found
    /etc/init.d/banda: line 4: tc: command not found
    /etc/init.d/banda: line 5: tc: command not found
    /etc/init.d/banda: line 6: tc: command not found
    /etc/init.d/banda: line 7: tc: command not found
    /etc/init.d/banda: line 8: tc: command not found
    /etc/init.d/banda: line 9: tc: command not found

    outra antes eu estava usando o ip externo entao o pessoal da obelisk entrava direto no servidor vai ssh digitando : 200.xxx.169.xxx

    e preciso que entra com ip externo mas que seja redirecionado para o ip interno dela 10.0.1.5.

  15. #15

    Padrão

    O problema é que requisicoes internas tambem estariam dentro do controle, entao, ficaria 512k para out e in.

    O ideal seria colocar 2 placas de rede nesse servidor, deixar um ip valido nele (já que asterisk atras de nat nao vai funcionar direito com SIP (devido aos pacotes RTP)), e, fazer o controle de banda por interface.

    Interface externa deixa a 512, interface interna deixa sem nada.

    Dificilmente vai se conseguir fazer controle de banda por porta (RTP utiliza portas altas e justamente onde p2p tambem usa), ou faz por IP ou por interface.

    Nessa situacao creio que seria melhor utilizar por interface.

    Com FreeBSD, 4 linhas resolveriam esse problema

    Saudações,

  16. #16

    Padrão

    mas o script passado não é por porta e sim por ip interno..então para facilitar sem problemas eu deixo só o ip válido mesmo então como faço para limitar para 200.xxx.254.xxx asterisk usando o server linux com debian 4.0 com iptables+squid?

    lembrando que preciso deixar 512kb para o asterisk e o restante para a rede interna.

    rodando o script acima deu o erro passado

  17. #17

    Padrão

    Citação Postado originalmente por lfernandosg Ver Post
    boa tarde...nosso link de produção só veio funciona hoje da embratel então antes eu estava rodando o banswitch e nesse novo para o asterisk coloquei seu script só que dá o erro abaixo quando vou rodá-lo

    linux:/home/novaf# /etc/init.d/banda start
    /etc/init.d/banda: line 2: tc: command not found
    /etc/init.d/banda: line 3: tc: command not found
    /etc/init.d/banda: line 4: tc: command not found
    /etc/init.d/banda: line 5: tc: command not found
    /etc/init.d/banda: line 6: tc: command not found
    /etc/init.d/banda: line 7: tc: command not found
    /etc/init.d/banda: line 8: tc: command not found
    /etc/init.d/banda: line 9: tc: command not found

    outra antes eu estava usando o ip externo entao o pessoal da obelisk entrava direto no servidor vai ssh digitando : 200.xxx.169.xxx

    e preciso que entra com ip externo mas que seja redirecionado para o ip interno dela 10.0.1.5.
    Ola amigo,

    O seu debian não tem instalado o iproute!
    O tc faz parte desse pacote!

    Código :
    apt-get install iproute

    Falowww!!

  18. #18

    Padrão

    zenun disse tudo

  19. #19

    Padrão

    certo realmente não instalei...vou fazer isso hoje e posto a reposta mas estou com outra dúvida:

    no lugar do ip interno 10.0.1.5 posso usar o ip válido mesmo(ex.: 189.201.xxx.345)?ou esse scritp passado só funciona com ip interno?e no caso, vou rodar o script no servidor de internet ex.: 200.xxx.201.xxx

    OBS: vou usar um ip válido do meu bloco de ips e não o ip válido do servidor linux(onde está o script) já que o pessoal da obelisk tem seu próprio iptables para proteger o asterisk.

  20. #20

    Padrão

    esse script eh pra controle por porta nao por ip.

    vc libera as portas XYZ pra usar X kps e as outras pra usa Ykps