+ Responder ao Tópico



  1. #1

    Padrão Fiz um script com prioridade para VOIP. Ele está certo?

    Caros, após ler alguns tutoriais sobre o tema fiz o script abaixo que serve para regular as prioridades no meu link. A minha idéia foi priorizar o tráfego SIP (VoIP) para o servidor de onde compro os minutos e revendo para os meus clientes, para que as ligações não fiquem com delay.

    Abaixo colei o script e gostaria de saber se está correto (espero também ajudar a quem precisa dessas informações).

    Meu link: 2 megas
    Eth0 interface externa
    Eth1 rede interna

    #!/bin/sh

    #TOS (digo que todos os pacotes marcados com 10 devem ter espera mínima)
    iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 10

    #CONNMARK (patch-o-matic)
    iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
    iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT

    #MARCA P2P (marco com 13 p2p usando layer7)
    iptables -A PREROUTING -t mangle -m layer7 --l7proto fasttrack -j MARK --set-mark 13
    iptables -A PREROUTING -t mangle -m layer7 --l7proto ares -j MARK --set-mark 13
    … tem mais, mas a lista é meio longa

    ##OUTROS SIPS e skype-out
    iptables -A PREROUTING -t mangle -d ! 65.70.177.88 -m layer7 --l7proto sip -j MARK --set-mark 12 (todos os SIPs que não o meu marco com 12)
    iptables -A PREROUTING -t mangle -m layer7 --l7proto skypeout -j MARK --set-mark 12 (skype para fone fixo tb com 12)

    ##MEU SIP (marco com 12 todos os pacotes vindos e destinados ao servidor SIP de onde compro minutos)
    iptables -A PREROUTING -t mangle -p tcp -d 65.70.177.88 -j MARK --set-mark 10
    iptables -A PREROUTING -t mangle -p udp -d 65.70.177.88 -j MARK --set-mark 10
    iptables -A PREROUTING -t mangle -p tcp -s 65.70.177.88 -j MARK --set-mark 10
    iptables -A PREROUTING -t mangle -p udp -s 65.70.177.88 -j MARK --set-mark 10


    #syn flags (marco com 10 tambem os pacotes syn flags)
    iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 10

    #HTTP (marco com 11 o que for HTTP)
    iptables -A PREROUTING -t mangle -m layer7 --l7proto http -j MARK --set-mark 11

    #CONNMARK
    iptables -t mangle -A PREROUTING -j CONNMARK --save-mark

    AI COMECO O HTB:

    ## CONTROLE DE UPLOAD ETH0

    #Criando o ROOT
    tc qdisc add dev eth0 root handle 1: htb default 15
    tc class add dev eth0 parent 1: classid 1:1 htb rate 2048kbit ceil 2048kbit

    #MEU SIP e syn flags (prioridade maxima para o meu SIP e syn flags)
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 256kbit ceil 512kbit prio 0
    tc filter add dev eth0 parent 1:0 protocol ip prio 0 handle 10 fw classid 1:10
    tc qdisc add dev eth0 parent 1:10 handle 100: sfq perturb 10

    ##OUTROS SIPS e skype-out (pequena prioridade para outros SIPs e skypeout)
    tc class add dev eth0 parent 1:1 classid 1:12 htb rate 64kbit ceil 64kbit prio 5
    tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 12 fw classid 1:12
    tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10

    #P2P (menor prioridade de todas e pouquissima banda)
    tc class add dev eth0 parent 1:1 classid 1:13 htb rate 128kbit ceil 128kbit prio 6
    tc filter add dev eth0 parent 1:1 protocol ip prio 6 handle 13 fw classid 1:13
    tc qdisc add dev eth0 parent 1:13 handle 130: sfq perturb 10

    #resto (o que nao for das demais regras é para cair aqui)
    tc class add dev eth0 parent 1:1 classid 1:15 htb rate 1600kbit ceil 2048kbit prio 1
    tc qdisc add dev eth0 parent 1:15 handle 150: sfq perturb 10


    ##CONTROLE DE DOWNLOAD ETH1

    #Criando o ROOT
    tc qdisc add dev eth1 root handle 1: htb default 25
    tc class add dev eth1 parent 1: classid 1:1 htb rate 2048kbit ceil 2048kbit

    #MEU SIP e syn flags (maior prioridade)
    tc class add dev eth1 parent 1:1 classid 1:20 htb rate 256kbit ceil 512kbit prio 0
    tc filter add dev eth1 parent 1:0 protocol ip prio 0 handle 10 fw classid 1:20
    tc qdisc add dev eth1 parent 1:20 handle 200: sfq perturb 10

    #HTTP E HTTPS (segunda maior prioridade)
    tc class add dev eth1 parent 1:1 classid 1:21 htb rate 1024kbit ceil 2048kbit prio 1
    tc filter add dev eth1 parent 1:0 protocol ip prio 1 handle 11 fw classid 1:21
    tc qdisc add dev eth1 parent 1:21 handle 210: sfq perturb 10

    #resto (o que nao for das demais regras cai aqui)
    tc class add dev eth1 parent 1:1 classid 1:25 htb rate 512kbit ceil 2048kbit prio 2
    tc qdisc add dev eth1 parent 1:25 handle 250: sfq perturb 10


    #P2P (maximo 512 e com baixa prioridade)
    tc class add dev eth1 parent 1:1 classid 1:23 htb rate 256kbit ceil 512kbit prio 6
    tc filter add dev eth1 parent 1:1 protocol ip prio 6 handle 13 fw classid 1:23



    Uma coisa: vi em alguns tutoriais que depois de cada regra de marca colocam um –j RETURN assim:

    iptables -A PREROUTING -t mangle -m layer7 --l7proto http -j MARK --set-mark 11
    iptables -A PREROUTING -t mangle -m layer7 --l7proto http –j RETURN


    E ai, tá certo?

    Obrigado!
    Fabrício

  2. #2

    Padrão

    Kra gostei, da sua regra, vou postar aqui como coloquei no meus servidores GW, para priorizar o trafego, não sei se está completamente correto, mas se alguem puder ajudar ae, com essas regras. ficarei agradecido

    iptables -t mangle -A FORWARD -p UDP -s 0/0 -d 0/0 --dport 5060 -j MARK --set-mark 0x010
    iptables -t mangle -A FORWARD -p UDP -s 0/0 -d 0/0 --dport 5060 -j TOS --set-tos 0x010
    iptables -t mangle -A POSTROUTING -p UDP -s 0/0 -d 0/0 --dport 5060 -j TOS --set-tos 0x010
    iptables -t mangle -A POSTROUTING -p UDP -s 0/0 -d 0/0 --dport 5060 -j MARK --set-mark 0x010

    Coloquei a porta ao inves do protocolo.