Boa tarde a todos,
Pessoal a pedido de um amigo, bolei um sistema de captive portal para envio de aviso aos clientes, o sistema é bem simples o cliente é redirecionado pro servidor web, onde tem a página de aviso, assim que ele é redirecionado o IP dele é inserido em address list que libera o acesso à internet, é possivel derterminar o tempo que o cliente será novamente redirecionado a página de aviso, com o IP adicionado ao address list um outra regra libera o IP do cliente para navegar direto, após 30 segundos na página de aviso ele é redirecionado pra URL que estava tentando acessar através de virtual host do apache e de uma página PHP.
Bloco de IP dos clientes: 10.10.10.0/24
IP Servidor WEB: 10.200.29.2
IP Servidor Proxy: 10.200.29.3
O servidor Mikrotik possui três interfaces de rede, sendo uma para os clientes, uma para os servidores, uma para o link
As regras do mikrotik são as seguintes:
/ip firewall nat
add chain=dstnat action=accept src-address-list=IP-LIBERADO dst-address-list=SEMPROXY dst-port=80 protocol=tcp comment="SISTEMA DE AVISO"
add chain=dstnat action=dst-nat to-addresses=10.200.29.3 to-ports=8080 src-address-list=IP-LIBERADO dst-port=80 protocol=tcp
add chain=dstnat action=dst-nat to-addresses=10.200.29.2 to-ports=80 src-address=10.10.10.0/24 dst-address=!10.200.29.2 dst-port=80 protocol=tcp
add chain=dstnat action=add-src-to-address-list src-address=10.10.10.0/24 dst-address=10.200.29.2 address-list=IP-LIBERADO address-list-timeout=1h dst-port=80 protocol=tcp
Configuração do Apache
<VirtualHost *:80>
DocumentRoot "/var/www/html/"
<Directory "/var/www/html/">
allow from all
Options +Indexes
</Directory>
CheckSpelling On
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^10\.200\.29\.2 [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ "http://10.200.29.2:80/index.php?url=%{HTTP_HOST}" [L]
</VirtualHost>
Página de aviso index.php
<html>
<head>
<title>AVISO DE MANUTENÇÃO</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<?php
$url = $_GET['url'];
echo"<meta http-equiv=\"refresh\" content=\"30;url=http://$url\">";
?>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
.destaque {
font-family: "Trebuchet MS";
font-weight: bold;
color: #FF0000;
font-size: 36px;
}
.texto {
font-family: "Trebuchet MS";
font-size: 12px;
}
#box {
border: 1px solid #CCCCCC;
background-color: #F2F2F2;
}
-->
</style>
</head>
<body>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle"><table width="500" border="0" cellpadding="0" cellspacing="0" id="box">
<tr>
<td align="center"> </td>
</tr>
<tr>
<td align="center"><table width="480" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" class="destaque">AVISO DE MANUTENÇÃO</td>
</tr>
<tr>
<td align="center" class="texto"><p><br>
<strong>Prezado cliente:</strong></p>
<p align="justify">Estamos efetuando a manutenção em nossa rede. Em caso de dúvidas entre em contato conosco pelo telefone (XX) XXXX-XXXX.</p>
<p>Agradecemos sua compreenção,</p>
<p><strong>Provedor Banda Larga</strong><br>
internet via rádio 100% Digital<br>
</p></td>
</tr>
</table></td>
</tr>
<tr>
<td align="center"> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
Ae pessoal a dica tae... quem precisa grita
PS. Ainda esta em testes
Att..
Clecio Rodrigo