Página 4 de 4 PrimeiroPrimeiro 1234
+ Responder ao Tópico



  1. Citação Postado originalmente por cleciorodrigo Ver Post
    Vejo sempre o pessoal se perguntando se é possivel enviar clientes para uma página de aviso usando PPPoE, então resolvi contribuir com este script.

    :foreach ID in=[/ppp active find] do={
    :foreach LOGIN in=[/ppp active get $ID name] do={
    :foreach IP in=[/ppp active get $ID address] do={
    :foreach UPTIME in=[/ppp active get $ID uptime] do={
    :if ($UPTIME = 1s) do={
    :log info ("Adicionando IP do cliente do Address Lists: " . $IP);
    /ip firewall address-list add list=Aviso disabled=no address=$IP;
    }

    :if ($UPTIME >= 1m) do={
    :log info ("Removendo IP do cliente do Address Lists: " . $IP);
    /ip firewall address-list remove [find address=$IP]
    }
    }
    }
    }
    }

    Este script adiciona o IP do usuário com uptime igual a 1 segundo em um address list, quando o usuário atinge uptime igual ou maior que 1 minuto o IP dele é removido do address list, ae basta uma regra de redirecionamento dos IPs do address list para o servidor web que hospeda a página que o cliente ira visualizar, detalhe se o cliente começar a navegar apos um minuto o IP dele não vai estar no address list e a regra não se aplicara a ele, existe várias formas de fazer isso, esse foi somente um exemplo.

    1 milhão de desculpa em ressuscitar o tópico, mais é que antes eu não precisava desse redirecionamento, e hoje eu to vendo o quão importante é. Seguinte cara, eu criei um script em system/scripts como aviso. Rodei o Script e talz, mais agora eu não sei como fazer o redirecionamento dos clientes..

    Os meus cliente pppoe recebem a faixa de ip 192.168.200.x não tenho nem ideia de como redirecionar o cliente depois de conectado e depois que ele entrar na adress list não sei também o que fazer.

    Cara, achei bagual demais poder direcionar o cliente pra uma pagina.. No meu caso não quero por uma pagina de cobrança ou aviso.. Quero só redirecionar o cliente pra pagina que eu quiser.

    Se puder me ajudar cara, ficaria muito grato.. Desde já agradeço.

    OBs: o Script já ta rodando.

  2. Olá amigo, mais uma vez eu aqui.. Desculpe novamente.. Estou tentao ver o que o script faz, até agora ele coloca em Adress List em dynamic, ele não entra como um ip fixo.. Pra eu conseguir fazer isso, não seria interessante eu colocar cada cliente em um ip fixo, setado nas regras de cadastro de cliente em secrets?

    Estou aguardando resposta, obrigado.



  3. ola. uso aqui uma rb1100ahx2 e tenho um site www.meu.com.br da pra redirecionar toda vez que um cliente conecta em pppoe, assim que ele for abrir um site abre primeiro u meu?
    ai eu posso usar este site para qualquer coisa aviso propaganda e etc.

  4. uma boa ideia,pra quem puder ajudar e uma solução pratica muito interessante



  5. Um aproach diferente, e eu acho que um pouco melhor, porém mais complexo seria assim.


    Nos profiles do PPP no RouterOS mesmo, você tem um parâmetro lá chamado "Address List", o qual o usuário daquele perfil, ao se conectar, vai ser adicionado a address-list com aquele nome automaticamente.


    Se você usa Radius, tem um parametro do Radius específico da Mikrotik, para que o usuário a se conectar seja adicionado a uma address-list. No User Manager (Radius da Mikrotik) esse parâmetro já está embutido nos Limitations, que são usados nos profiles. Em outros servidores Radius, é só adicionar o parametro, conforme descrito na Wiki.


    http://wiki.mikrotik.com/wiki/Manual...dor_dictionary


    O parametro é o Mikrotik-Address-List, de ID 19.


    Digamos que você colocou lá uma address-list chamada "Addr-Start", para indicar que o cliente recem iniciou a sessão. Neste ponto, você pode adicionar no NAT, duas regras. Uma para redirecionar o cliente para o seu servidor Web, e outra para adicionar ele numa segunda address list, algo como:


    Código :
    /ip firewall nat chain=dstnat src-address-list="Addr-Start" protocol=tcp dst-port=80,443 action=dst-nat to-addresses=IP.DO.SERVIDOR.WEB
    /ip firewall nat chain=dstnat src-address-list="Addr-Start" protocol=tcp dst-port=80,443 action=add-src-to-address-list address-list="Addr-Redirected" address-list-timeout=20s


    Neste ponto, o cliente vai ser redirecionado para a página da web personalizada e vai ser adicionado a uma segunda address-list chamada "Addr-Redirected", então, nos criamos um script no scheduler, para rodar a cada 10 segundos, e colocamos assim lá:


    Código :
    :foreach addr in=[/ip firewall address-list find list="Addr-Redirected"] do={
      :local ip [/ip firewall address-list get $addr address]
      /ip firewall address-list remove [find list="Addr-Start" address=$ip]
    }


    Dessa forma, a cada 10 segundos, esse script vai ser executado e vai verificar todos os endereços na address-list "Addr-Redirected", que sao os clientes QUE JÁ FORAM REDIRECIONADOS para a pagina de aviso, e vai excluir o address-list "Addr-Start" que foi adicionado automaticamente quando ele conectou. O item com o IP do usuário que foi adiconado na address-list "Addr-Redirected" vai ser excluído automaticamente após 20 segundos conforme expecificado na regra do nat com o parametro "address-list-timeout=20s", deixando tudo limpinho para as próximas rodadas.


    O problema disso é que, se a sua rede tem algum problema e o usuário ficar caindo e reconectando, cada vez que isso acontece ele vai ser redirecionado novamente para a pagina de aviso, mas isso ja acontecia no script postado inicialmente também.


    A vantagem de fazer dessa forma, é consumir menos recursos da RB visto ela não precisar correr TODOS os clientes PPPoE cada vez que o script é executado, ela mantem uma ordem de execução voltada somente para quem precisa ser redirecionado.


    Outro problema, é se você tem uma rede boa e o usuário nunca desliga o equipamento dele que faz a conexão com o seu servidor PPPoE. Ele vai receber o aviso na primeira vez e se ficar 10 dias sem desligar, é 10 dias sem aviso. Para esses casos, você pode criar um segundo script no scheduler para rodar digamos 1 vez a cada 12 horas, e verificar as conexões PPPoE que já estão rodando a mais de 1 dia e adicionar o IP delas na address-list "Addr-Start" novamente, e assim ele vai ser redirecionado mais uma vez, algo assim:


    Código :
    :foreach user in=[/ppp active find uptime>=1d] do={
      :local ip [/ppp active get $user address]
      /ip firewall address-list add list="Addr-Start" address=$ip dynamic=yes
    }




    OBS IMPORTANTE: O que eu postei aqui, não foi testado, apenas achei interessante a questão e postei minha idéia, e desenvolvi uns scripts testando alguma coisa separadamente. Quem quiser testar, achando erros, a gente pode ir corrigindo.
    Última edição por ab5x2; 29-07-2015 às 19:36.






Tópicos Similares

  1. Respostas: 1
    Último Post: 30-06-2014, 10:57
  2. Respostas: 5
    Último Post: 30-03-2010, 01:45
  3. Respostas: 0
    Último Post: 15-05-2009, 18:12
  4. Respostas: 1
    Último Post: 14-03-2009, 02:21
  5. Respostas: 8
    Último Post: 03-10-2008, 11:19

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L