[FUG-BR] Redirecionar conexao após ter redirecionado para a 80

Marcelo Gondim gondim em bsdinfo.com.br
Segunda Abril 9 15:16:15 BRT 2012


Em 09/04/2012 14:02, joao jamaicabsd escreveu:
> HUmmm acho que entendi.
> Então, quando o usuário logar devo pegar este IP e jogar em uma tabela no
> PF, massa vou testar, mas agora como vou remover esse ip desta tabela ou
> ela sumir se ficar inativa?
>
> Uma vez consegui fazer essas auterações com a utilização do Sudo, conhece?
> Muito obrigado e vou pesquisar e fazer testes referente a essa sua dica.
> Obrigado e qualquer outra dica aí dos parceiros eu agradeço.
>
> João Maykon

Oi João tenho algo parecido aqui mas é com outra finalidade do tipo 
mandar uma mensagem para o assinante que está em atraso. Veja bem, nesse 
caso muito cuidado com o texto porque dizer que o cliente está devendo 
em tela pode gerar processo de danos morais e por isso não afirmamos mas 
colocamos que pode ter havido algum problema com o pagamento.
Bem, o que quero colocar é que quando o cliente está devendo de hora em 
hora no cron eu rodo um script php que checa quem está online no 
Mikrotik e na base de dados se o cara está devendo. Eu tenho 2 tabelas 
uma no PF e outra no IPFW quando o cara tá conectado e devendo eu jogo o 
IP dele nessas 2 tabelas que fazem o seguinte:

Na tabela do PF é feito um redir no NAT jogando o que vier dessa tabela 
com destino qualquer IP porta 80 jogando para o IP local porta 81.
No IPFW eu aceito a conexão na porta 81 vindo dos IPs da tabela e também 
bloqueio o acesso externo deixando apenas dns liberado 53/tcp/udp.

Assim que o cliente vê a mensagem é removido o IP dele das 2 tabelas e a 
conexão dele normaliza.

>
>
>
>
>
>
>
> Em 9 de abril de 2012 10:49, Rafael Henrique Faria<
> rafaelhfaria em cenadigital.com.br>  escreveu:
>
>> Bom dia João.
>>
>> Se eu entendi corretamente, acho bom deixar claro para o pessoal que você
>> está querendo implementar um Capitive Portal.
>>
>> Neste caso, você tem que se ater aos seguintes fatos:
>>
>> - Nenhum usuário por definição tem acesso a rede externa
>> - Qualquer acesso a qualquer IP externo com destino na porta 80 é
>> redirecionado para um IP interno em uma porta interna para autenticação
>> - Passado na autenticação o IP autenticado tem que ter acesso a rede
>> externa
>> - Com acesso a rede externa, qualquer acesso a um IP qualquer com destino
>> na porta 80 deve ser redirecionado para um IP interno na porta do proxy,
>> formando assim o proxy transparente.
>> - Após um logout, ou expiração do tempo, o IP liberado deve ser bloqueado
>> novamente.
>>
>> Resumindo, você tem que construir um sistema que atenda esses passos.
>>
>> Pelo que eu entendi, o 1o. e o 2o. você já cuidou.
>> O 3o, acredito que o ideal seria vê usar uma Tabela., no PF por exemplo.
>> E usando o comando de adicionar e remover IPs da lista, assim, quando um
>> usuário é liberado para passagem, você simplesmente adiciona o IP do mesmo
>> a lista de liberados, e esta lista que estará tanto liberando o acesso
>> quanto redirecionando para o proxy.
>>
>> Vale lembrar que por definição, apenas o root pode adicionar e remover ips
>> de listas.
>> Eu já usei uma vez, um daemon que rodava como root, e conseguia enviar para
>> ele via uma porta especifica o comando de adicionar/remover IPs. Funcionava
>> muito bem... com isso você consegue fazer o seu PHP apenas conectar nesta
>> porta, e mandar o comando para o daemon executar o procedimento para você.
>>
>> Usando o PF, seria possivel com regras como esta:
>>
>> table<liberados>  constant
>>
>> rdr pass quick from<liberados>  to any port 80 ->  127.0.0.1 3128
>> rdr pass quick from any to any port 80 ->  127.0.0.1 80
>>
>> pass quick from<liberados>  to any keep state
>> pass quick from any to<liberados>  keep state
>>
>> Acho que é isso.
>>
>> 2012/4/9 joao jamaicabsd<jamaicabsd em gmail.com>
>>
>>> Bom dia pessoal.
>>> Estou fazendo uma ferramenta de autenticação e consigo redirecionar o
>>> trafego da rede local para a 80 no meu server, mas como posso fazer para
>>> que após o usuário validar seu usuário e senha ele ser enviado para o
>>> proprio server na 3128?
>>> Estou usando PHP.
>>> Alguém pode me ajudar?
>>> Obrigado.
>>>



Mais detalhes sobre a lista de discussão freebsd