Pessoal, criei um script para bloqueio dos clientes em provedores que usam o mk-auth e que já entregam prefixos ipv6 para os clientes na rede.
/ipv6 firewall address-list remove [find list="pgcortev6"]; :foreach pgcorte in=[/ip firewall address-list find list="pgcorte"] do={:foreach pppblock in=[/ppp active find] do={:if ([/ip firewall address-list get $pgcorte address]=[/ppp active get $pppblock address]) do={:put "$[/ppp active get $pppblock name]";:foreach cliv6 in=[/ipv6 pool used find] do={:if ([/ppp active get $pppblock name]=[/ipv6 pool used get $cliv6 info]) do={/ipv6 firewall address-list add list="pgcortev6" address="$[/ipv6 pool used get [find info="$[/ppp active get $pppblock name]"] prefix ]"}}}}};
Ele funciona fazendo comparações dos ips que ficam na address-list "pgcorte" (adicionado dinamicamente pelo radius do mk-auth) com os ips que ficam em ppp active para conhecer os login (user name) dos clientes que se encontram bloqueados para posteriormente fazer outra checagem dos clientes que possuem suporte ipv6 (clientes que se encontram em ipv6 pool used) e assim adicionar o prefixo deles na pgcortev6 (criado por mim no scritp). Deixem ele no scheduler com tempo de execução a critério de vocês, aqui vou usar de 24h e com execução na madrugada. O script tempo de execução do script depende do número de clientes de cada provedor, mas no geral a execução é lenta devido a muitos foreach que coloquei (unica solução que encontrei). Estou aberto a sugestões e caso alguém encontre alguma outra maneira de fazer mais eficiente é só postar também.
abraços!
Respostas
muito obrigado pelo ajuda Fábio, sua dica é otima amigo...
parabens Fabio, aqui rodando 100%.
Agora só fica faltando os logs Pedro.
UPDATE:
fiz alguns acréscimos ao script já apresentado. Agora ele adiciona comentário na pgcortev6 do login do cliente juntamente com método de aquisição do prefixo ipv6 (remoto ou DHCPv6). PS: no anterior para quem cedia prefixos através do DHCPv6 para construção de redes ipv6 em roteadores com suporte ele não fazia o bloqueio.
/ipv6 firewall address-list remove [find list="pgcortev6"]; :foreach pgcorte in=[/ip firewall address-list find list="pgcorte"] do={:foreach pppblock in=[/ppp active find] do={:if ([/ip firewall address-list get $pgcorte address]=[/ppp active get $pppblock address]) do={:put "$[/ppp active get $pppblock name]";:foreach cliv6 in=[/ipv6 pool used find] do={:if ([/ppp active get $pppblock name]=[/ipv6 pool used get $cliv6 info]) do={/ipv6 firewall address-list add list="pgcortev6" address="$[/ipv6 pool used get [find info="$[/ppp active get $pppblock name]"] prefix ]" comment="REMOTE-$[/ppp active get $pppblock name]"}};:foreach cliv6 in=[/ipv6 dhcp-server binding find] do={:if ("<pppoe-".[/ppp active get $pppblock name].">"=[/ipv6 dhcp-server binding get $cliv6 server]) do={/ipv6 firewall address-list add list="pgcortev6" address="$[/ipv6 dhcp-server binding get [find server="<pppoe-".[/ppp active get $pppblock name].">"] address ]" comment="DHCPv6-$[/ppp active get $pppblock name]"}}}}};
abraços!
Fabio poderiam e auxiliar no ipv6
E tem como implementar o corte via corte por pool?
Desculpa a demora, em tempo ainda para te ajudar?
Altair santos de quadros disse:
Tem sim... mas teria que fazer alterações no script. O ideal seria você mudar a recurso de corte para address-list, que nesse caso só seria implementar o script.
abrç
waldemir santos gomes disse:
via pool nao é mais jogo nao enviar ? utilizamos desta maneira e funcioa perfeitamente, fizemos um plano chamado bloqueado, ele qual nao envia pool v6 apenas o pool pgcorte.
Bom dia, eu apenas preciso copia e colar essas regra no mikrotik? Fiz isso e nao apareceu nenhuma regra no "/ipv6 firewall address-list" acredito que seja porque estar com a opcao remove e nao entendi por que.
Bom dia, eu apenas preciso copia e colar essas regra no mikrotik? Fiz isso e nao apareceu nenhuma regra no "/ipv6 firewall address-list" acredito que seja porque estar com a opcao remove e nao entendi por que.
Fábio José disse: