+ Responder ao Tópico



  1. #1
    cooperbr
    Visitante

    Padrão problemas com pppoe + radius + bandlimit

    olá a todos

    desculpem incomodar

    eu so novo nesta area e vi que aqui no brasil tem muita mais informação em geral.

    minha duvida sobre pppoe a a seguinte.... se puder dar uma ajuda fico muito agradecido.

    no howto no ponto 8


    8. Edite o arquivo /etc/radiusclient/servers e inclua o servidor de Radius
    e a senha dele


    agora como vou saber qual e a senha do servidor radius. onde pego esa info...

    e no ponto 14

    qual e o dicionario padrao do servidor radius


    14. edite o dicionario padrao do seu servidor de radius e tambem adicione

    ATTRIBUTE Download 78 integer
    ATTRIBUTE Upload 79 integer
    ATTRIBUTE Cliente 80 string


    bom basicamente esas sao minhas primeiras duvidas, se puder dar uma ajuda

    desde ja muito obrigadooo

    Marcelo

  2. #2

    Padrão Re: problemas com pppoe + radius + bandlimit

    Citação Postado originalmente por cooperbr
    olá a todos

    desculpem incomodar

    eu so novo nesta area e vi que aqui no brasil tem muita mais informação em geral.

    minha duvida sobre pppoe a a seguinte.... se puder dar uma ajuda fico muito agradecido.

    no howto no ponto 8


    8. Edite o arquivo /etc/radiusclient/servers e inclua o servidor de Radius
    e a senha dele


    agora como vou saber qual e a senha do servidor radius. onde pego esa info...
    preencha o arquivo /etc/freeradius/clients.conf com este bloco:
    Código :
    client 127.0.0.1 {
        secret = senhasecreta
        shortname = localhost
        nastype = other
    }
    Onde senhasecreta é a string que vc deve utilizar no arquivos /etc/radiusclient/servers juntamente com o nome do servidor, no caso, localhost.
    Citação Postado originalmente por cooperbr
    e no ponto 14

    qual e o dicionario padrao do servidor radius

    14. edite o dicionario padrao do seu servidor de radius e tambem adicione

    ATTRIBUTE Download 78 integer
    ATTRIBUTE Upload 79 integer
    ATTRIBUTE Cliente 80 string
    adicione as linhas em /etc/freeradius/dictionary
    Eu obtive sucesso utilizando numeros diferentes do howto, veja:
    Código :
    ATTRIBUTE Download 64 integer
    ATTRIBUTE Upload 65 integer
    ATTRIBUTE Cliente 66 string
    Citação Postado originalmente por cooperbr

    bom basicamente esas sao minhas primeiras duvidas, se puder dar uma ajuda

    desde ja muito obrigadooo

    Marcelo
    Softwares:
    pppd version 2.4.2b3 (do underlinux modificado e compilado)
    freeradius: FreeRADIUS Version 1.0.2, for host , built on May 23 2005 at 22:00:58 Debian Sarge
    Roaring Penguin PPPoE Version 3.5 Debian Sarge

    Qualquer dúvida, estamos aí.

  3. #3

    Padrão problemas com pppoe + radius + bandlimit

    lanhelp,

    Novamente vou te encomodar. Fiz todo o procedimento, instalei novamente o radius (agora o freeradius) e também o ppp e rp-pppoe. Refiz tudo. Acontece o seguinte:

    Aug 26 15:13:51 ns1 pppoe-server[7346]: Session 6 created for client 00:c0:XX:XX:XX:75 (172.30.0.155) on eth2 using Service-Name ''
    Aug 26 15:13:51 ns1 pppd[7346]: Plugin radius.so loaded.
    Aug 26 15:13:51 ns1 pppd[7346]: RADIUS plugin initialized.
    Aug 26 15:13:51 ns1 pppd[7346]: Plugin radattr.so loaded.
    Aug 26 15:13:51 ns1 pppd[7346]: RADATTR plugin initialized.
    Aug 26 15:13:51 ns1 pppd[7346]: pppd 2.4.2b3 started by root, uid 0
    Aug 26 15:13:51 ns1 pppd[7346]: Using interface ppp0
    Aug 26 15:13:51 ns1 pppd[7346]: Connect: ppp0 <--> /dev/pts/1
    Aug 26 15:14:01 ns1 pppd[7346]: PAP peer authentication failed for nata
    Aug 26 15:14:01 ns1 pppd[7346]: Connection terminated.
    Aug 26 15:14:01 ns1 pppoe-server[6329]: Sent PADT
    Aug 26 15:14:01 ns1 pppoe-server[26384]: Sent PADT
    Aug 26 15:14:01 ns1 pppd[7346]: Terminating on signal 15.
    Aug 26 15:14:01 ns1 pppoe[7347]: read (asyncReadFromPPP): Session 6: Input/output error
    Aug 26 15:14:01 ns1 pppd[7346]: Exit.
    Aug 26 15:14:01 ns1 pppoe-server[6329]: Session 6 closed for client 00:c0:9f:XX:XX:75 (172.30.0.155) on eth2
    Agora o freeradiu não aceita meu usuário e senha... Sabes me dizer o que pode ser?

    freeradius-1.0.1-1
    ppp-2.4.2-6.4.FC3
    rp-pppoe-3.5-22

    (compilei o radiusclient do scorpion obviamente).

    Att,

    Nataniel Klug

  4. #4

    Padrão problemas com pppoe + radius + bandlimit

    Ola,

    Envie a saida do seu freeradius(freeradius -x) e o arquivo /etc/freeradius/users que fica mais facil te ajudar.

    t+

  5. #5
    Visitante

    Padrão problemas com pppoe + radius + bandlimit

    oi lanhelp

    acontece que toda vez que dou um start no serviço radiusd
    da erro

    se comento as linhas

    DEFAULT Group = "cliente128k", Simultaneous-Use = "1"
    Fall-Through = Yes
    Download = 128
    Upload = 64
    Cliente = cliente

    o radius funciona
    que pode ser

    Obrigado

  6. #6

    Padrão problemas com pppoe + radius + bandlimit

    a sintaxe do freeradius é um pouco diferente pelo que entendi. da uma olhada no meu arquivo users:

    Código :
    DEFAULT group == "suspensos"
            Auth-Type := Reject,
            Reply-Message = "Sua conta esta desativada por falta de pagamento",
                    Fall-Through = No
     
    DEFAULT Service-Type == Framed-User
            Framed-IP-Address = 255.255.255.254,
            Framed-MTU = 1500,
            Service-Type = Framed-User,
            Fall-Through = Yes
     
    DEFAULT Framed-Protocol == PPP
            Framed-Protocol = PPP,
            Framed-Compression = Van-Jacobson-TCP-IP,
            Fall-Through = Yes
     
    DEFAULT group == "suspensos"
                    Auth-Type := Reject,
                    Reply-Message = "Sua conta esta desativada, entre em contato",
                    Fall-Through = Yes
     
    DEFAULT group == "plano64"
                    Download = 64,
                    Upload = 32,
                    Cliente = cliente,
                    Fall-Through = No
     
    DEFAULT group == "plano128"
                    Download = 128,
                    Upload = 64,
                    Cliente = cliente,
                    Fall-Through = No
     
    DEFAULT group == "plano196"
                    Download = 196,
                    Upload = 64,
                    Cliente = cliente,
                    Fall-Through = No
     
    DEFAULT group == "plano256"
                    Download = 256,
                    Upload = 64,
                    Cliente = cliente,
                    Fall-Through = No

  7. #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

  8. #8

    Padrão problemas com pppoe + radius + bandlimit

    posta a saida do comando freeradius -x

  9. #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):

    [root@ns1 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
    [root@ns1 nata]#
    Sabes mais alguma coisa que eu possa utilizar?

  10. #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)

  11. #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:

    [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

  12. #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

  13. #13

    Padrão problemas com pppoe + radius + bandlimit

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

  14. #14

    Padrão problemas com pppoe + radius + bandlimit

    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