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



  1. #7

    Padrão problemas com pppoe + radius + bandlimit

    lanhelp,

    Realmente a sintaxe é bem diferente do Cistron Radius. Eu fiz a instalação do FreeRadius e agora não consigo autenticar no sistema. Eu chego a fazer o pedido e dá um erro (que está abaixo):

    Aug 29 08:09:14 ns1 pppoe-server[1683]: Session 1 created for client 00:c0:9f:75:9a:75 (172.30.0.150) on eth2 using Service-Name ''
    Aug 29 08:09:14 ns1 pppd[1683]: Plugin radius.so loaded.
    Aug 29 08:09:14 ns1 pppd[1683]: RADIUS plugin initialized.
    Aug 29 08:09:14 ns1 pppd[1683]: Plugin radattr.so loaded.
    Aug 29 08:09:14 ns1 pppd[1683]: RADATTR plugin initialized.
    Aug 29 08:09:14 ns1 kernel: CSLIP: code copyright 1989 Regents of the University of California
    Aug 29 08:09:14 ns1 kernel: PPP generic driver version 2.4.2
    Aug 29 08:09:14 ns1 pppd[1683]: pppd 2.4.2b3 started by root, uid 0
    Aug 29 08:09:14 ns1 pppd[1683]: Using interface ppp0
    Aug 29 08:09:14 ns1 pppd[1683]: Connect: ppp0 <--> /dev/pts/1
    Aug 29 08:09:26 ns1 pppd[1683]: PAP peer authentication failed for nata
    Aug 29 08:09:26 ns1 pppd[1683]: Connection terminated.
    Aug 29 08:09:26 ns1 pppoe-server[1679]: Sent PADT
    Aug 29 08:09:26 ns1 pppd[1683]: Terminating on signal 15.
    Aug 29 08:09:26 ns1 pppoe[1702]: read (asyncReadFromPPP): Session 1: Input/output error
    Aug 29 08:09:26 ns1 pppd[1683]: Exit.
    Aug 29 08:09:26 ns1 pppoe-server[1679]: Session 1 closed for client 00:c0:9f:75:9a:75 (172.30.0.150) on eth2
    No Windows ele diz que o erro é o 691 (acesso negado, nome de usuário ou senha incorretos), mas já verifiquei e o usuário está devidamente cadastrado, dentro do grupo cliente200 e tudo mais.

    Att,

    Nataniel Klug

  2. #8

    Padrão problemas com pppoe + radius + bandlimit

    posta a saida do comando freeradius -x



  3. #9

    Padrão problemas com pppoe + radius + bandlimit

    lanhelp,

    Eu não conhecia este comando. Ao utiliza-lo notei que o FreeRadius, diferente do Cistron Radius, precisa de um shell válida para logar (talvez mudando alguma configuração isso não seja necessário) e como eu sempre utilizo a shell /bin/false ele não permitia o login.

    Agora consegui logar normalmente, mas o controle de banda não foi ativado. Efetuei o comando /sbin/tc -s qdisc (achando que podia listas as conexões e tal e o resultado foi o seguinte):

    [[email protected] nata]# /sbin/tc -s qdisc
    qdisc cbq 1: dev eth0 rate 10Mbit (bounded,isolated) prio no-transmit
    Sent 16501617 bytes 47084 pkts (dropped 0, overlimits 0 requeues 0)
    borrowed 0 overactions 0 avgidle 819 undertime 0
    qdisc pfifo_fast 0: dev eth1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
    Sent 31412044718 bytes 44693508 pkts (dropped 0, overlimits 0 requeues 0)
    qdisc pfifo_fast 0: dev eth2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
    Sent 320607925 bytes 412799 pkts (dropped 0, overlimits 0 requeues 0)
    qdisc cbq 1: dev ppp0 rate 10Mbit (bounded,isolated) prio no-transmit
    Sent 495332 bytes 580 pkts (dropped 3, overlimits 0 requeues 0)
    borrowed 0 overactions 0 avgidle 794 undertime 0
    [[email protected] nata]#
    Sabes mais alguma coisa que eu possa utilizar?

  4. #10

    Padrão problemas com pppoe + radius + bandlimit

    primeiro verifique se o arquivo /var/run/radattr.ppp0 contem as chaves download e upload com os valores corretos. Depois verifique o caminho do iptables em seu sistema. Nos scripts ip-up e ip-down o caminho do iptables esta hardcoded, no meu caso tive que substituir todas as ocorrencias de /usr/sbin/iptables por /sbin/iptables. Ou vc pode criar uma variavel tipo IPT contendo o caminho do iptables e substituir pelos scripts com $IPT (Forma mais clean)



  5. #11

    Padrão problemas com pppoe + radius + bandlimit

    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:

    [[email protected] 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
    [[email protected] 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:

    [[email protected] 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

    [[email protected] ppp]#
    Agora o IP-DOWN:

    [[email protected] 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:

    [[email protected] 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
    [[email protected] 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

  6. #12

    Padrão problemas com pppoe + radius + bandlimit

    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