+ Responder ao Tópico



  1. #1

    Padrão PPPoE (arquivo ip-up e ip-down usando HTB)

    Pessoal,

    Precisei alterar algumas coisas nos arquivos ip-up e ip-down do Scorpion para que atendessem melhor as necessidades do meu provedor. Se alguem quiser usar estes arquivos estão a disposição:

    PS.: REPAREM na necessidade de indicar qual interface será usada no upload dos clientes (interface que é a saida para a internet).

    /etc/ppp/ip-up
    Código :
    #!/bin/bash
    #
    #---
    # Variaveis
    #---
    IPT="/usr/local/sbin/iptables"
    TC="/sbin/tc"
     
    UP="eth0"
     
    interface=$1
    remoteIP=$5
     
    download=`grep Download /var/run/radattr.$interface | awk '{ print $2; }'`
    upload=`grep Upload /var/run/radattr.$interface | awk '{ print $2; }'`
    cliente=`grep Cliente /var/run/radattr.$interface | awk '{ print $2; }'`
     
    contamark=`echo $interface | cut -c 4-99`
    mark=`expr $contamark + 500`
     
    echo "$download" > /tmp/$interface.download
    echo "$upload" > /tmp/$interface.upload
    echo "$cliente" > /tmp/$interface.cliente
    echo "$mark" > /tmp/$interface.mark
     
    if [ $download == ]
    then
    download="200"
    upload="100"
    fi
     
    #----
    # DOWNLOAD
    #----
    $TC qdisc del dev $interface root    2> /dev/null > /dev/null
    $TC qdisc add dev $interface root handle 1: htb
    $TC class add dev $interface parent 1: classid 1:1 htb rate "$download"Kbit
    $TC class add dev $interface parent 1:1 classid 1:${mark} htb rate "$download"Kbit ceil "$download"Kbit
    $TC qdisc add dev $interface parent 1:${mark} handle $mark sfq perturb 10
    $TC filter add dev $interface parent 1:0 protocol ip prio 1 u32 match ip dst ${remoteIP}/32 flowid 1:${mark}
     
    #----
    # UPLOAD
    #----
    $TC class add dev $UP parent 1:1 classid 1:${mark} htb rate "$upload"Kbit ceil "$upload"Kbit
    $TC qdisc add dev $UP parent 1:${mark} handle $mark sfq perturb 10
    $IPT -t mangle -A FORWARD -s $remoteIP -j MARK --set-mark $mark
    $TC filter add dev $UP parent 1:0 protocol ip prio 1 handle $mark fw classid 1:${mark}
     
     
    echo "PPP started at $(date):
    interface = $interface
    Remote IP = $remoteIP
    download = $download
    upload = $upload
    mark = $mark
    " >/tmp/$interface

    /etc/ppp/ip-down
    Código :
    #!/bin/bash
    #
    #---
    # Variaveis
    #---
    IPT="/usr/local/sbin/iptables"
    TC="/sbin/tc"
     
    UP="eth0"
     
    interface=$1
    remoteIP=$5
     
    download=`cat /tmp/$interface.download`
    upload=`cat /tmp/$interface.upload`
    cliente=`cat /tmp/$interface.cliente`
    mark=`cat /tmp/$interface.mark`
     
    if [ $download == ]
    then
    download="200"
    upload="100"
    fi
     
    #----
    # DOWNLOAD
    #----
    # Nao e necessario fazer nada ja que a interface ira ser baixada e na
    # subida dela serao apagadas todas as regras que nela existiam
     
    #----
    # UPLOAD
    #----
    $IPT -t mangle -D FORWARD -s $remoteIP -j MARK --set-mark $mark
    $TC class del dev $UP parent 1:1 classid 1:${mark} htb rate "$upload"Kbit ceil "$upload"Kbit
    $TC qdisc del dev $UP parent 1:${mark} handle $mark sfq perturb 10
    $TC filter del dev $UP parent 1:0 protocol ip prio 1 handle $mark fw classid 1:${mark}
     
    rm -rf /tmp/$interface*

  2. #2
    jrlinux
    Visitante

    Padrão Re: PPPoE (arquivo ip-up e ip-down usando HTB)

    Queria te agradecer....pois eu usei seu script.....mudei ele bastante para se adequar as minhas necessidades, mas foi por base nele que conseguio que eu queria.
    Mas meu ulload naum funciona ainda..nam sei o que eh.
    eu usei o ip-up apens para setar o downlad.
    o upload to usando htb tools.....mus ips saum fixos , portanto na interface de saida eles sempre seraum os mesmos dispensando colocar eles no ip-up.
    se tivwer um aluza, agradeço..senaum..obrigado kra,



  3. #3

    Padrão Re: PPPoE (arquivo ip-up e ip-down usando HTB)

    jr,

    Que bom que usou o script. Então o IP-UP pode colocar regras para o upload dos clientes, mas a única forma que realmente funcionou para mim foi usando marcação de pacotes com origem no cliente e destino em qualquer lugar. Algo assim:

    $IPT -t mangle -A PREROUTING -s <seu cliente ou -i interface pppoe do cliente> -j MARK --set-mark XXX

    Depois disso tu direciona esse mark para uma regra de QOS usando ou o CLASSIFY do iptables ou o fwmark do TC.