Hotspot

De Guifi.net - Wiki Català

Opcions amb RouterOS

creat: 19/04/2007 per Joan Llopart - actualitzat: 19/4/07

Tot i que en els comentaris del portal captiu s'explica un mètode fàcil i efectiu per a mostrar banners de cortesia als clients oportunistes dels APs mitjançant DNAT en el firewall de l'AP, es pot fer també mitjançant el hotspot (portal captiu) que inclou el RouterOS dels Mikrotiks. Amb un hotspot descafeinat tindrem:

  • Transparent pels clients de l'AP amb nodes creats a Guifi.net.
  • Es pot afegir facilment a l'unsolcic.
  • No cal un servidor web extra que mostri la web de cortesia.
  • No cal un Ràdius ni ningú s'ha d'autenticar.
  • Els clients oportunistes reben un banner de cortesia i alhora tenen acces a 10.x.x.x

Un hotspot és un firewall dinàmic que s'aplica sobre una interfície que autentica i autoritza els clients connectats a ell. També fa accounting, però no ens hi posarem. Fem servir com a exemple un mikrotik configurat amb l'unsolclic i que te:

  • IP del bridge entre ether1 i wlan1 (wLan/Lan): 10.138.75.1/26
  • Pool del DHCP: 10.138.75.50 - 10.138.75.62

Crearem un hotspot descafeinat que anomenarem "Guifi-Hotspot". En dic descafeinat perque no requerira cap mena d'autentificació/autorització per part de l'usuari. Ho farem sobre el bridge (wLan/Lan):

/ ip hotspot profile
set default name="default" hotspot-address=0.0.0.0 dns-name="" \
  html-directory=hotspot rate-limit="" http-proxy=0.0.0.0:0 \
  smtp-server=0.0.0.0 login-by=cookie,http-chap http-cookie-lifetime=3d \
  split-user-domain=no use-radius=no
/ ip hotspot user profile
set default name="default" idle-timeout=none keepalive-timeout=2m \
  status-autorefresh=1m shared-users=1 transparent-proxy=yes \
  open-status-page=always advertise=no
/ ip hotspot
add name="Guifi-Hotspot" interface=wLan/Lan address-pool=dhcp-wLan/Lan \
  profile=default idle-timeout=none keepalive-timeout=none disabled=no

Ara tant si estem conectats al mikrotik via cable pel ether1 o sensefils pel AP que hi ha a wlan1, nomes podrem accedir a la IP de l'AP 10.138.75.1, tant si fem servir una IP configurada manualment, com si l'obtenim per DHCP. Això succeeix perque no estem autoritzats/autenticats. Per default els usuaris que connecten no ho estan, i nomes poden accedir al mateix hotspot. Internament el hotspot ho fa mitjançant regles del firewall, per permetre el pas d'un usuari entrauna nova regla al firewall. Per poder autoritzar un usuari, el hotspot captura el transit del navegador de l'usuari que no està autenticat/autoritzat, quan aquest prova de navegar a qualsevol lloc es redirigt a una plana web interna del mikrotik on li demana usuari/contrasenya. Aquest usuari/contrasenya s'envia a un servidor Radius (User Management) del mikrotik i es comprova que sigui vàlida. Si és vàlida, el hotspot autoritza l'usuari posant una nova regla al firewall permetent-li el pas.

Ip-binding

Tal com esta ara, no podrem accedir a res mes que no sigui 10.138.75.1, i si posem qualsevol adreça al navegador ens mostrarà la web de login del mikrotik. Tots els hotspots tenen l'opció d'autoritzar directament qualsevol connexió, basant-se en la MAC i/o IP. Podriem dir que l'autenticació es simplement la MAC o la IP de l'usuari connectat, no discutirem la seguretat perquè no estem protegint res, solament volem mostrar banners de cortesia. En els RouterOS en diuen “ip-bindings”, per autoritzar a passar pel hotspot als clients d'aquest AP que fan servir IP fixe, que haurien de ser els nodes donats d'alta a guifi.net:

/ ip hotspot ip-binding
add address=10.138.75.2-10.138.75.49 server=Guifi-Hotspot
type=bypassed comment="" \
  disabled=no

D'aquesta manera, si conectem com a client al bridge (tant per ether1 com sensefils al wlan1) i posem una IP manualment dins del rang 10.138.75.2-10.138.75.49, com a Gateway 10.138.75.1 i els DNS que toquin, podrem accedir a qualsevol lloc, sense que surti la web de login del Mikrotik, com si no hi hagues un hotspot.

Walled Garden

En aquest punt, els clients oportunistes que connectin al AP i es configurin via DHCP no estaran autenticats/autoritzats i els continuara apareixent el la web de login del Mikrotik cada vegada que posin qualsevol adreça al navegador. Com que guifi.net es una xarxa oberta i lliure, hem de permetre a aquests clients que accedeixin a tota la xarxa pública. Aquesta opció en el RouterOS en diuen "Walled Garden", aquest permet definir una serie de IPs, hosts, protocols, etc. als que poden accedir els clients del hotspot sense estar autoritzats. Per fer-ho nomes cal:

/ ip hotspot walled-garden ip
add dst-address=10.0.0.0/8 action=accept comment="" disabled=no 

Ara, els clients oportunistes, tenen accés a tota la xarxa guifi sense estar autoritzats/autenticats, podràn accedir a tots els recursos interns de Guifi, i tindran una IP pública 10.x.x.x. Però els continuarà apareixent la web del login del Mikrotik cada vegada que intentin accedir a una web que els DNS no resolguin com a 10.x.x.x. S'ha de canviar el fitxer (/hotspot/index.html) /hotspot/login.html perque ens mostri un banner de cortesia en comptes del login. El contingut del .html pot ser una redirecció a una plana web que estigui en un servidor dins de 10.x.x.x. (veure més avall)

Acces a Internet, hotspot amb una mica de cafeina

Tot el dit fins ara no te gaires aventatges més que el sistema del DNAT. Apart de que aprofitem el mateix servidor web que incorpora el Mikrotik. Els dos mètodes ens permeten que el client oportunista accedeixi a la web interna, s'informi de com poder crear un node, i a més pot fer ús de tota la xarxa lliure.

A partir d'ara explico idees, amb configuracions que no he provat però que hem sembla que poden funcionar per poder permetre acces a Internet a aquests clients puntuals. Hem baso en que el paràmetre "http-proxy" de "/ ip hotspot profile" sembla que encamini el trànsit web dels usuaris autoritzats a través d'un proxy de la xarxa. El configurem amb la IP d'un proxy, també hem de configurar al proxy perque permeti fer-ne us sense autentificació a la IP 10.138.75.1, que es la del hotspot, que imagino que serà el que accedirà al proxy i no els clients oportunistes directament. Primer hem d'autenticar/autoritzar el client oportunista. Per a fer-ho hauriem d'activar el “User Management” i crear un usuari "convidat" amb contrasenya "convidat". Crec que podem definir un temps d'activitat limitat, imaginem que li posem 10 minuts. Un sistema transparent per autenticar els usuaris oportunistes seria modificar la plana web /hotspot/login.html pel banner de cortesia, però mantenim el user/pass del form posant-los en camps hidden amb el valor "convidat". En el banner de cortesia expliquem al usuari que si apreta el botó "acceptar" tindrà acces lliure a Internet durant 10 minuts. Quan el pitji s'autentificara com a usuari "convidat" i tindra aquests 10 minuts, quan hagin transcorregut serà redirigit de nou a /hotspot/login.html. Tot això son suposicions pures, i s'ha de provar. Però no vaig mal encaminat. A partir d'aquí ho podeu anar complicant tant com vulgueu.

Recull de més articles


Model Web

Redirector

Una altra opció és crear una pàgina .html amb codi JavaScript que s'encarregui de fer la redirecció al nostre servidor o qualsevol altre que estigui dins del rang 10.0.0.0 i sobreescriure la pàgina hotspot/login.html que es pot trobar a l'opció Files del menú del router

Cal introduir aquest codi a la pàgina


<html>
<head>
<meta name="robots" content="noindex">
</head>
<body onload=salto()>
       <script language=JavaScript>
       function salto()
       {
              window.location.href="http://10.x.x.x/";
       }
       </script>
</body>
</html>

Recull de més articles

Eines de l'usuari