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):
Citação:
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
problemas com pppoe + radius + bandlimit
posta a saida do comando freeradius -x
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):
Citação:
[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?
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)
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:
Citação:
[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:
Citação:
# 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:
Citação:
[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:
Citação:
[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):
Citação:
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:
Citação:
[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
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