Altq + PF
Enviado: 09/Ago/2012 10:35
Tenho um servidor rodando MPD5 + FreeRadius para fazer autenticação de usuários via PPPoE e gostaria de fazer controle de banda dos usuários conectados, de modo que, cada vez que um usuário se conecta é criada uma nova regra para ele.
Queria fazer isso usando Altq + PF, dinamicamente. Estou há tempos procurando uma solução pela Internet mas ninguem sabe como fazer, a maioria recomenda o uso do IPFW ou do authpf. O Authpf não serve para o que eu quero, e o IPFW se tornaria complicado pois teria que migrar o firewall todo para IPFW.
Teria algum meio de adicionar queues usando o pfctl? Pois preciso que crie 2 queues novos para cada usuários que se conecta, afim de limitar a banda de uso dele
Um dos queues teria que ficar sobre um altq e o outro teria que ser criado. Ex:
ng0 = Conexão do servidor com a internet
Esse altq teria que ser fixo e eu teria que ir adicionando novos queues automaticamente quando o usuário conecta e removendo quando desconecta
altq on ng0 bandwidth 5Mb cbq queue { up_m1 up_m2 }
queue up_m1 bandwitdh 512Kb cbq(default)
queue up_m2 bandwidth 256Kb cbq
E para controlar o down eu teria que criar um altq novo a cada conexão. Ex:
altq on ng1 bandwidth 1Mb cbq queue down_m1
queue down_m1 bandwidth 1Mb cbq(default)
altq on ng2 bandwitdh 512Kb cbq queue down_m2
queue down_m2 bandwidth 512Kb cbq(default)
pass out on ng0 from 1.2.3.4 to any queue up_m1
pass out on ng1 from any to 1.2.3.4 queue down_m1
pass out on ng0 from 5.6.7.8 to any queue up_m2
pass out on ng2 form any to 5.6.7.8 queue down_m2
Queria fazer isso usando Altq + PF, dinamicamente. Estou há tempos procurando uma solução pela Internet mas ninguem sabe como fazer, a maioria recomenda o uso do IPFW ou do authpf. O Authpf não serve para o que eu quero, e o IPFW se tornaria complicado pois teria que migrar o firewall todo para IPFW.
Teria algum meio de adicionar queues usando o pfctl? Pois preciso que crie 2 queues novos para cada usuários que se conecta, afim de limitar a banda de uso dele
Um dos queues teria que ficar sobre um altq e o outro teria que ser criado. Ex:
ng0 = Conexão do servidor com a internet
Esse altq teria que ser fixo e eu teria que ir adicionando novos queues automaticamente quando o usuário conecta e removendo quando desconecta
altq on ng0 bandwidth 5Mb cbq queue { up_m1 up_m2 }
queue up_m1 bandwitdh 512Kb cbq(default)
queue up_m2 bandwidth 256Kb cbq
E para controlar o down eu teria que criar um altq novo a cada conexão. Ex:
altq on ng1 bandwidth 1Mb cbq queue down_m1
queue down_m1 bandwidth 1Mb cbq(default)
altq on ng2 bandwitdh 512Kb cbq queue down_m2
queue down_m2 bandwidth 512Kb cbq(default)
pass out on ng0 from 1.2.3.4 to any queue up_m1
pass out on ng1 from any to 1.2.3.4 queue down_m1
pass out on ng0 from 5.6.7.8 to any queue up_m2
pass out on ng2 form any to 5.6.7.8 queue down_m2