Visite: BR-Linux ·  VivaOLinux ·  Dicas-L


Página 3 de 3 PrimeiroPrimeiro 123
+ Responder ao Tópico

  1. lanhelp,

    Muito obrigado por toda esta ajuda. Depois disso eu vou criar um tutorial com todas estas dicas e postar aqui no fórum para que os próximos não perguntem tantas coisas.

    Vamos lá. Verifiquei o arquivo radattr.ppp0 e continha apenas os seguintes dados:

    [root@ns1 ppp]# cat /var/run/radattr.ppp0
    Framed-IP-Address 255.255.255.254
    Framed-MTU 576
    Service-Type Framed-User
    Framed-Protocol PPP
    Framed-Compression Van-Jacobson-TCP-IP
    [root@ns1 ppp]#
    Notei que não tem nada do Download nem do Upload aqui. Dentro do /etc/raddb/users está assim:

    # On no match, the user is denied access.

    DEFAULT group == "cliente200"
    Fall-Through = No,
    Download = 200,
    Upload = 100,
    Cliente = cliente
    Isso está bem no final do arquivo. Além disso fui verificar o comando iptables e realmente estava incorreto. Arrumei e ficou assim o arquivo IP-UP e, em seguida, o IP-DOWN:

    [root@ns1 ppp]# cat /etc/ppp/ip-up
    #! /bin/bash
    IPT="/sbin/iptables"

    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


    if [ $cliente == "cliente" ]
    then
    $IPT -I FORWARD -d $remoteIP -p tcp --dport 1:1024 -j DROP
    $IPT -I FORWARD -d $remoteIP -p tcp --dport 6000:9000 -j DROP
    fi


    /sbin/tc qdisc add dev $interface root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8
    /sbin/tc class add dev $interface parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$download"Kbit weight `expr $download / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
    /sbin/tc qdisc add dev $interface parent 1:$mark handle $mark sfq perturb 10
    /sbin/tc filter add dev $interface parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
    $IPT -t mangle -A POSTROUTING -d $remoteIP -j MARK --set-mark $mark


    /sbin/tc qdisc add dev eth0 root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8
    /sbin/tc class add dev eth0 parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$upload"Kbit weight `expr $upload / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
    /sbin/tc qdisc add dev eth0 parent 1:$mark handle $mark sfq perturb 10
    /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
    $IPT -t mangle -A FORWARD -s $remoteIP -j MARK --set-mark $mark


    echo "PPP started at $(date):
    interface = $interface
    Remote IP = $remoteIP
    download = $download
    upload = $upload
    mark = $mark
    " >/tmp/$interface

    [root@ns1 ppp]#
    Agora o IP-DOWN:

    [root@ns1 ppp]# cat /etc/ppp/ip-down
    #!/bin/bash
    IPT="/sbin/iptables"

    interface=$1
    remoteIP=$5
    download=`cat /tmp/$interface.download`
    upload=`cat /tmp/$interface.upload`
    cliente=`cat /tmp/$interface.cliente`

    contamark=`echo $interface | cut -c 4-99`
    mark=`expr $contamark + 500`

    if [ $cliente == "cliente" ]
    then
    $IPT -D FORWARD -d $remoteIP -p tcp --dport 1:1024 -j DROP
    $IPT -D FORWARD -d $remoteIP -p tcp --dport 6000:9000 -j DROP
    fi



    /sbin/tc qdisc del dev $interface root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8
    /sbin/tc class del dev $interface parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$download"Kbit weight `expr $download / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
    /sbin/tc qdisc del dev $interface parent 1:$mark handle $mark sfq perturb 10
    /sbin/tc filter del dev $interface parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
    $IPT -t mangle -D POSTROUTING -d $remoteIP -j MARK --set-mark $mark


    /sbin/tc qdisc del dev eth0 parent 1:$mark handle $mark sfq perturb 10
    /sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
    $IPT -t mangle -D FORWARD -s $remoteIP -j MARK --set-mark $mark
    /sbin/tc class del dev eth0 parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$upload"Kbit weight `expr $upload / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded


    echo "PPP started at $(date):
    interface = $interface
    Remote IP = $remoteIP
    download = $download
    upload = $upload
    mark = $mark
    " >/tmp/$interface
    O que me assustou é que mesmo alterando o path do iptables eu não notei nenhuma modificação na chain FORWARD (veja abaixo o retorno do comando iptables -L):

    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- anywhere anywhere
    DROP all -- 209.124.96.0/19 anywhere
    DROP all -- anywhere 209.124.96.0/19
    LOG all -f anywhere anywhere LOG level warning prefix `Pacote INPUT fragmentado: '
    DROP all -f anywhere anywhere
    ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
    DROP all -- anywhere anywhere state INVALID
    ACCEPT all -- ns1.cnett.com.br anywhere
    ACCEPT all -- 172.20.0.162 anywhere
    ACCEPT all -- 172.20.0.163 anywhere
    ACCEPT all -- ns2.cnett.com.br anywhere
    DROP all -- 172.20.0.160/29 anywhere

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- anywhere anywhere
    DROP all -- 209.124.96.0/19 anywhere
    DROP all -- anywhere 209.124.96.0/19
    LOG all -f anywhere anywhere LOG level warning prefix `Pacote FORWARD fragmentado: '
    DROP all -f anywhere anywhere
    ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
    DROP all -- anywhere anywhere state INVALID
    ACCEPT tcp -- 200.163.208.4 anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere 200.163.208.4 multiport dports smtp,pop3
    ACCEPT tcp -- avps.nocsul.net anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere avps.nocsul.net multiport dports smtp,pop3
    ACCEPT tcp -- mail.pr.gov.br anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere mail.pr.gov.br multiport dports smtp,pop3
    ACCEPT tcp -- 200.203.242.14 anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere 200.203.242.14 multiport dports smtp,pop3
    ACCEPT tcp -- pop3.uol.com.br anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere pop3.uol.com.br multiport dports smtp,pop3
    ACCEPT tcp -- smtps.uol.com.br anywhere multiport dports smtp,pop3
    ACCEPT tcp -- anywhere smtps.uol.com.br multiport dports smtp,pop3
    DROP tcp -- anywhere anywhere multiport dports smtp,pop3,netbios-ns,netbios-dgm,netbios-ssn,microsoft-ds
    DROP udp -- anywhere anywhere multiport sports smtp,pop3,netbios-ns,netbios-dgm,netbios-ssn,microsoft-ds
    ACCEPT all -- ns1.cnett.com.br anywhere
    ACCEPT all -- 172.20.0.162 anywhere
    ACCEPT all -- 172.20.0.163 anywhere
    ACCEPT all -- ns2.cnett.com.br anywhere
    DROP all -- 172.20.0.160/29 anywhere

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    DROP all -- 209.124.96.0/19 anywhere
    DROP all -- anywhere 209.124.96.0/19
    Veja que o IP que setei para a rede seria a classe 172.30.0.150~160 e ele não aparece na chain FORWARD como deveria. Já na MANGLE:

    [root@ns1 ppp]# /sbin/iptables -t mangle -L
    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination

    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    MARK all -- 172.30.0.157 anywhere MARK set 0x1f4

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

    Chain POSTROUTING (policy ACCEPT)
    target prot opt source destination
    MARK all -- anywhere 172.30.0.157 MARK set 0x1f4
    [root@ns1 ppp]#
    Ali está ele perfeitamente bem. Isso mostra que o script ip-up está sendo executado. Agora porque ele não executa o primeiro comando é algo que não sei. E também o porque dos dados download e upload não terem sido transferidos para aquele outro arquivo.

    Att,

    Nataniel Klug


  2.    Publicidade


  3. lanhelp,

    Repensei tudo e mudei o arquivo /etc/raddb/users retirando todos os outros defaults e deixando apenas o DEFAULT do grupo. Resolvido, agora eu consigo limitar a velocidade de download, mas a de UPLOAD não é limitada.

    O estranho é que eu fazendo um teste local, ou seja, da minha rede interna, eu não tenho limite de velocidade até o servidor (172.30.0.1), mas quando faço o teste a partir de um site (http://www.dslreports.com/speedtests) ele mostra exatamente a velocidade que eu setei.

    Só a do UPLOAD que não vai... Ela fica sempre no máximo permitido pelo link... Com relação ao IPTABLES na chain FORWARD eu acho que até removerei aquela instrução já que não preciso de bloqueio de portas.

    Agora só me resta descobrir como resolver o problema do upload. Se não conseguir vou limitar o UPLOAD via CBQ mesmo (todos os IPs terão a mesma faixa de upload e pronto).

    Att,

    Nataniel Klug

  4. Foi otimo vc falar no upload, na verdade nem prestei atencao nele... acho que esta ok, vou verificar se esta limitando aqui. :good:

  5. lanhelp,

    Verifique então esta anomalia do upload e me avise se tiver algum progresso. Eu estou implementando esta semana o PPPoE e terei que utilizar o sistema de upload que eu falei, mark nos pacotes e o CBQ rodando apenas no upload.

    Att,

    Nataniel Klug


  6.    Publicidade




Usuários que leram este tópico: 1