Bloqueando Celulares desde Mikrotik con Bridge filter (Efectividad 80%)
NOTA: Esta es la version para filtrar por bridge, tambien podes filtrar en firewall o bloquear directamente en dhcp-server.
Me toco en un colegio tener que dejar sin navegación a los celulares. En este caso opte por armar un script que recorra la lista de Leases del DHCP Server y filtre a los hosts llamados «Android» o «Windows Phone», «Blackberry». Con lo cual podríamos estar filtrando la mayoría de los dispositivos. Creo que se van a escapar los teléfonos chinos que suelen venir con sistemas operativos bastante raros. Tambien se estan escapando los celulares con SO de Apple (no lo pude setear porque no se cual es su Host Name). Pero bueno, no queremos llegar a la perfección.. al menos con esto he quitado de circulación unos 50 dispositivos en el primer dia. No solo me ha bajado el consumo del CPU del RB 2011 si no que ademas ha mejorado mucho el rendimiento del ancho de banda ya que los celulares están todo el tiempo bajando actualizaciones, hasta incluso estando en el bolsillo del pantalón.
¿Como los bloqueamos?
Cuando abrimos la lista de Leases en «IP — DHCP-Server» veremos un listado de todas las IP dinamicas entregadas en la red. Uno de los campos es «HOST-NAME». Ese es el que nos interesa. Vean la imagen:
Lista de nombres de mobiles a filtrar: (que yo detecte y filtre) (AMPLIAREMOS)
- android-8d0a00d6eddf7787
- Android_356434048181508
- Windows-Phone
- BLACKBERRY-8A8D
- (nombre en blanco)
Entonces esto es lo que vamos a usar para detectarlos.
El primero y segundo, «android, Android» estan porque con mikrotik scripting no encontré un comando para hacer Upper o Lower Case de los caracteres. BLACKBERRY me aparece 2 veces en mayusculas (en otro router) asi que por ahora lo mantendremos asi. Y buscando en los mac-address vendors pude descubrir que muchos de los dispositivos celulares que vienen con el Host-Name en blanco son Samsung, Nokia, etc. Por lo que opte por dropearlos y cuando mucho, si es una laptop… «que le ponga el nombre de equipo». jeje.
Vamos a lo nuestro:
Para que el script funcione, debemos configurarle el nombre de nuestro DHCP-Server y ademas el nombre del Bridge en el cual vamos a filtrar (Son las primeras 2 variables). Esta parte es interesante porque si tambien es tu caso, puede ser que en el mismo equipo tengas mas de un DHCP Server o mas de 1 bridge, (uno para directivos y otro para alumnos). Por lo tanto, si esto no seria seteable, estaríamos quitándote navegación a TODOS, y no queremos que los directivos se enojen porque no pueden revisar el facebook en su android. :D.
# # SCRIPT: FILTRAR CELULARES EN BRIDGE :local DHCPSERVER "dhcp_alumnos"; :local BRIDGEFILTER "bridge-alumnos"; # # AUTOR: NICOLAS DAITSCH # # www.tech-nico.com :foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={ :local DhcpDynIP [/ip dhcp-server lease get $i address]; :local DhcpDynMAC [/ip dhcp-server lease get $i mac-address]; :local DhcpDynHOST [/ip dhcp-server lease get $i host-name]; :local IfMacExist [/interface bridge filter find src-mac-address="$DhcpDynMAC/FF:FF:FF:FF:FF:FF"]; :local phoneNAME [:pick $DhcpDynHOST 0 4]; :if ( ($phoneNAME="iPad") || ($phoneNAME="S410") || ($phoneNAME="Andr") || ($phoneNAME="LANI") || ($phoneNAME="Ipho") || ($phoneNAME="S220") || ($phoneNAME="S120") || ($phoneNAME="BLUS") || ($phoneNAME="iPod") || ($phoneNAME="andr") || ($phoneNAME="Wind") || ($phoneNAME="iPho") || ($phoneNAME="BLAC") || ([:len $DhcpDynHOST]=0) ) do={ :if ($IfMacExist != "") do={ # :log error ("Filtrando telefono... ".$DhcpDynMAC. " Ya existe") } else= { /interface bridge filter add action=drop chain=input in-bridge=$BRIDGEFILTER src-mac-address="$DhcpDynMAC/FF:FF:FF:FF:FF:FF" comment=$DhcpDynHOST; :log warning ("Se filtro un nuevo dispositivo " . $phoneNAME . " MAC: " . $DhcpDynMAC); } } }
Muy bien el script recoje los mac-adddress de este listado (leases), y si coinciden con alguno de los nombres que dijimos, se filtra automáticamente sin retorno.
Y digo sin retorno porque si ya lo filtro, por mas que cambie el hostname YA ESTA!!!.
Lo bueno de este script es que estamos filtrando por MAC-Address en el Bridge, cosa que resulta MUY Efectiva.
La linea que dice:
($phoneNAME="androi") || ($phoneNAME="Window")
Esta tomando los primeros 6 caracteres del hostname. Entonces podríamos seguir agregando nombres de dispositivos seteados de fabrica con un nombre por default. Ejemplo: «Iphone» — justo 6. Que yo estimo, «rara vez se modifica».
ATENTOS: Si alguien sabe como aparece el hostname del IPhone u algun otro dispositivo que no este contemplado, por favor deje un comentario y vamos actualizando el script.
Frecuencia de ejecucion del script y leases dhcp:
Lo tengo seteado en el Scheduler cada 10 minutos, Cosa que por mas que el «Lease dhcp» quede activo, ese dispositivo ya no navega. Lo que pueden hacer es setear los Leases del DHCP en 10 minutos (menos tiempo), o bien agregarle al script que tambien patee el lease. Pero ya no es necesario… cuando caduca su tiempo, ya no vuelve a aparecer mas.
Saludos! ! ! .
________________________
Este post se escribio primero en Tech-nico.com
hola buen día nico agradezco tus aportes y tengo cierta inquietud sobre el scripts de android y quisiera saber si me puedes colaborar yo quiero aplicar el mismo scripts pero yo no trabajo sobre bridge sino sobre un puerto especifico que es el ether4 que deberia modificar en el script para que este sea funcional
te agradezco tu colaboracion
Hola Bladimir, ya modifique el script y lo postie para que puedas probarlo en un escenario sin bridge. Solo que no lo pude testear. Fijate si funciona y por favor avisame en un comentario.
Saludos.
Hola nico buen día que pena no haberte contestado pero como estaba fuera de la ciudad no habia podido realizar las pruebas del script, efectivamente funciona y crea las reglas de bloqueo en el firewall pero tengo dudas al respecto con los siguiente en bytes y packets veo que hay tranferencia de datos pregunta si esto debe ser nulo o esta bien asi y por otra parte queria saber como puedo bajar el paquete del lenguaje de mikrotik para sublime text y si tienes algun manual donde pueda comenzar y aprender a programar en mikrotik te agredezco
Atte.
Bladimir Sampayo
hola, ami me aparece el siguiente mensaje: input does not match any value of interface
Hola Jose, en la variable «:local INTERFACEFILTER» tenes que definir el nombre de tu interface LAN en la cual queres filtrar. Si lo estas haciendo asegúrate que este bien escrito. Saludos.
Excelente!!!, te pasaste funciona perfect
Buenas, estoy probando el scrip y funciona perfectamente, sin embargo como estoy en prueba aun borre el scrip (System-Scrips) pensando que se regularizaria sin embargo siguen bloqueados los celulares, como hago para volver a habilitarlo si es que quiero programarlo para que solo se active o descative dentro de cierto horario. Gracias
Luis, el script va bloqueando mac-address de dispositivos en el «Bridge-Filter» Si te fijas, alli encontraras 1 regla por cada dispositivo bloqueado. Simplemente las desactivas o eliminas y ya todo vuelve al a normalidad. Para que funcione solo en cierto horario te conviene hacerte 2 scripts nuevos; 1 que habilite y otro que des-habilite las reglas de «bridge-Filter». Si tenes problemas para crearlo avísame y lo publico. Saludos.
me ha funcionado adecuadamente ya sea con bridge o sin bridge… sin embargo he modificado un poco el codigo y he podido bloquear los celulares sin necesidad de crear reglas en el FIREWALL… a continuación les dejo el codigo que modifique…
:local DHCPSERVER «dhcp1»;
:local INTERFACEFILTER «ether2″;
################INICIO DEL SCRIPT
:foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={
:local DhcpDynIP [/ip dhcp-server lease get $i address];
:local DhcpDynMAC [/ip dhcp-server lease get $i mac-address];
:local DhcpDynHOST [/ip dhcp-server lease get $i host-name];
:local IfMacExist [/ip firewall filter find src-mac-address=»$DhcpDynMAC»];
:local phoneNAME [:pick $DhcpDynHOST 0 4];
:if ( ($phoneNAME=»BLUS») || ($phoneNAME=»iPad») || ($phoneNAME=»andr») || ($phoneNAME=»Wind») || ($phoneNAME=»iPho») || ($phoneNAME=»BLAC») ) do={
:if ($IfMacExist != «») do={
# :log error («Filtrando telefono… «.$DhcpDynMAC. » Ya existe»)
} else= {
/ip dhcp-server lease add block-access=yes mac-address=»$DhcpDynMAC» use-src-mac=yes;
}
}
}
/ip dhcp-server lease remove [find host-name~»android*»]
/ip dhcp-server lease remove [find host-name~»Windows*»]
/ip dhcp-server lease remove [find host-name~»iPad*»]
/ip dhcp-server lease remove [find host-name~»iPhone*»]
/ip dhcp-server lease remove [find host-name~»BLUS*»]
/ip dhcp-server lease remove [find host-name~»BLACKBERRY*»]
############# FIN DEL SCRIPT
en la parte de leases lo que hace este script, es que busca las primeras 4 letras del dispositivo: «BLUS», iPad», «andr», «Wind», «iPho» o «BLAC» si la mac de ese dispositivo ya esta bloqueado no hara nada.
de lo contrario bloqueara la MAC en la parte de LEASES y posteriormente eliminara de la tabla de leases esos dispositivos por su nombre para que no le asigne una IP dejando bloqueado la MAC de los dispositivos…
IMPRESIONANTE Felix!!. Voy a editar el post y poner tu versión que esta muy muy efectiva también!.
Ojo que el IfMacExist lo esta haciendo en el firewall…
:local IfMacExist [/ip firewall filter find src-mac-address=”$DhcpDynMAC”];
Capas tendrias que testear y corregir esa parte asi lo publicamos.
Un abrazo!.
Ok… he quitado código que vi que no era necesario… te comento… estoy encargado de un colegio donde tenemos mas de 1800 alumnos que la gran mayoria tienen dispositivos moviles… y habia tenido que bloquearlos manualmente… gracias a tu script pude resolverlo… modifique algunas partes… elimine algunas lineas de codigo y hasta ahora me ha funcionado adecuadamente…
########## INICIO DEL SCRIPT
:local DHCPSERVER «dhcp1»;
:local INTERFACEFILTER «ether5″;
:foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={
:local DhcpDynMAC [/ip dhcp-server lease get $i mac-address];
:local DhcpDynHOST [/ip dhcp-server lease get $i host-name];
:local phoneNAME [:pick $DhcpDynHOST 0 4];
:if ( ($phoneNAME=»BLUS») || ($phoneNAME=»iPad») || ($phoneNAME=»andr») || ($phoneNAME=»Wind») || ($phoneNAME=»iPho») || ($phoneNAME=»BLAC») ) do={
/ip dhcp-server lease add block-access=yes mac-address=»$DhcpDynMAC» use-src-mac=yes;
}
}
/ip dhcp-server lease remove [find host-name~»android*»]
/ip dhcp-server lease remove [find host-name~»Windows*»]
/ip dhcp-server lease remove [find host-name~»iPad*»]
/ip dhcp-server lease remove [find host-name~»iPhone*»]
/ip dhcp-server lease remove [find host-name~»BLUS*»]
/ip dhcp-server lease remove [find host-name~»BLACKBERRY*»]
############## FIN DEL SCRIPT
como te daras cuenta… en:
DHCPSERVER es donde queremos eliminar dispositivos moviles.
INTERFACEFILTER: es el ethernet donde compartimos internet.
en las siguientes lineas solo necesitamos saber la MAC-ADDRESS y el HOST-NAME del dispositivo que se conecta, ya sea un dispositivo movil, una computadora o laptop…
en el «if» es donde buscaremos las primeras 4 letras de todos los dispositivos moviles como es «BLUS», «iPad», «andr», «Wind», «iPho» o «BLAC».
que se refieren a: BLUSTUDIO5, iPadde…, android, Windows-Phone, iPhonede…, BLACKBERRY…
Si se da el caso que nuestro HOST-NAME concuerda con esas 4 primeras letras
entonces crea un «NUEVO DHCP LEASES» agregando la «MAC-ADDRESS» del dispositvo activando el «SCR-MAC-ADDRESS» y activando el «BLOCK ACCESS».
Posteriormente hacemos que se eliminen los dispositivos activos aun en el LEASES para que no sigan ocupando una IP.
Buenas amigos gracias por la ayuda prestada en este foro tengo una duda al respecto al script publicado por el amigo Felix, lo estoy implementando y no me funciona, y vuelvo a colocar el primero que se posteo del filtrado por Filter no por dhcp lease y si me funciona sera que falta algo a este ultimo script, me gustaria si el amigo de soporte de esta pagina nos podra hechar una mano, de seguro falta organizar un poco el script….saludos… les adelanto las gracias///
Maximo, dejame probarlo en estos dias y lo publico!.
Ok hermano gracias por responder, estaré pendiente, una vez mas gracias por hacer posible esta pagina web, que es de gran ayuda para todos.
Buen dia amigo Felix, mis saludos te queria preguntar si te esta funcionando el script que publicaste porque a mi aun no logro ponerlo a trabajar, algo le falta.. me gustaria que me pudiera ayudar ya que en realidad estoy necesitando este script, si el amigo de soporte el esta por chequear, espero que nos pueda ayudar.. saludos
Buenas amigo Soporte mis saludos, quería saber si le ha funcionado a usted el script que subió el amigo Felix, o si tiene una nueva actualización que este operativa… saludos, espero por su pronta respuesta.. de verdad lo estoy necesitando urgente…
Hola Maximo, acabo de probar el script. Y SI. Efectivamente funciona, pero al filtrar por DHCP no te deja sin navegacion al instante hasta que no te vuelve a asignar nuevamente una IP. Es decir, estoy conectado en este momento con mi celular, corro el script y me bloquea el mac-address y ademas libera la IP para que no quede ocupada; hasta ahi lo hace perfecto!, el telefono sigue navegando, tengo que apagar y encender el wifi para que recien ahi me deje sin navegar. Al no estar usando ningun firewall no tengo forma de filtrarlo al instante. Espero que igualmente te sirva. http://www.tech-nico.com/blog/script-mikrotik-para-bloquear-dispositivos-moviles-con-dhcp
Muchas gracias hermano, efectivamente si funciona, como tu lo mencionas…una vez mas gracias por todo el soporte que preste en esta Web,,, saludos..
Hola a todos el scrpt me ha funcioando de maravilla con los cambios que ejecutaron en efecto realizaba anteriormente el trabajo manual de aproximadamente 2000 host, actualmente tengo un problema y es que no se agregar algunas lineas que me ayuden a no bloquear macs especificas ya que estoy presentando problemas con los rectores los cuales no deben estar bloqueados pero que al correr el script quedan bloqueados, existe alguna forma de introducir en el codigo una excepcion?
Esteban, la manera de evitar un mac-address filtrado es simplemente desactivarlo del Bridge filter. Entonces cuando el script lo vea conectado, va a intentar filtrarlo, pero como ya existe (pero desactivado) lo va a esquivar. Lo que yo hago en esos casos es crearme 1 AP virtual con otra contraseña WPA2, se lo asigno a otro bridge y monto otro DHCP, con otro rango de IP en ese bridge. Esto te permite poder aplicar otros filtros o asignarle un tope de ancho de banda a la red de alumnos. Saludos.
Hola disculpa, antes que nada, es muy bueno tu aporte . Mi consulta es como hago para ingresar o crear el script en mi mkt ? nuevamente muchisimas gracias por tu aporte y atencion. Saludos
Hola! Muy bueno el script, funciona genial, pero en mi caso estoy intentando hacer algo parecido sin bloquear los dispositivos móviles definitivamente, sino que mi idea es darle un límite al ancho de banda por IP. Quería saber si es factible reemplazar la parte que bloquea el acceso (/ip add block-access=yes mac-address=”$DhcpDynMAC” use-src-mac=yes;) por una simple queue guardando en una variable antes la Active Adress de dhcp-server lease?
Creo que se entiende la idea, no se si es descabellada o sería mejor tratarla de otra manera.
Gracias!
Bueno me respondo solo XD. Basandome en el Script de Felix pude hacer lo que quería
########## INICIO DEL SCRIPT
:local DHCPSERVER «dhcp1»;
:local INTERFACEFILTER «ether3″;
/queue simple remove [find name~»Celu*»];
:foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={
:local DhcpDynIP [/ip dhcp-server lease get $i address];
:local DhcpDynHOST [/ip dhcp-server lease get $i host-name];
:local phoneNAME [:pick $DhcpDynHOST 0 4];
:if ($phoneNAME=»andr») do={/queue simple add name=»Celu-Android$i» max-limit=128k/128k target=»$DhcpDynIP»}
:if ($phoneNAME=»Wind») do={/queue simple add name=»Celu-Win$i» max-limit=128k/128k target=»$DhcpDynIP»}
:if ($phoneNAME=»BLAC») do={/queue simple add name=»Celu-BB$i» max-limit=128k/128k target=»$DhcpDynIP»}
:if ($phoneNAME=»iPhone») do={/queue simple add name=»Celu-Iphone$i» max-limit=128k/128k target=»$DhcpDynIP»}
}
############## FIN DEL SCRIPT
Primero borro las queues que empiecen con «Celu». Luego veo de que dispositivo se trata y genero la queue con el nombre del tipo de equipo. Usé la variable i para los nombre porque no se como ir incrementando una variable x, y como borro todas las queues al inicio no me molesta usar esa variable. Ahora voy a crear la scheduler para correrlo cada 10 o 15 minutos.
Saludos!!
EXCELENTE APORTE Franco!!. Seguro le va a servir a mas de uno.!!
Mil disculpas por no haber contestado antes… ese script efectivamente te bloquea la MAC ADRESS sin embargo los celulares siguen navegando hasta que el tiempo de LEASES se acabe… normalmente en la configuracion de mi DHCP le pongo 10 minutos de LEASES… es decir cuando corre el script me bloquea los celulares dandoles 10 minutos de internet gratis… una vez transcurridos esos 10 minutos ya ese celular se encontrara bloqueado…
dejo el script que me ha estado funcionando en mi Colegio y normalmente hay mas de 3,300 alumnos.. todos con celulares 🙁
——————————————————-
:local DHCPSERVER «Direccion»;
:local INTERFACEFILTER «ether2″;
:foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={
:local DhcpDynMAC [/ip dhcp-server lease get $i mac-address];
:local DhcpDynHOST [/ip dhcp-server lease get $i host-name];
:local phoneNAME [:pick $DhcpDynHOST 0 4];
:if ( ($phoneNAME=»iPad») || ($phoneNAME=»S410″) || ($phoneNAME=»Andr») || ($phoneNAME=»LANI») || ($phoneNAME=»Ipho») || ($phoneNAME=»S220″) || ($phoneNAME=»S120″) || ($phoneNAME=»BLUS») || ($phoneNAME=»iPod») || ($phoneNAME=»andr») || ($phoneNAME=»Wind») || ($phoneNAME=»iPho») || ($phoneNAME=»BLAC») ) do={
{
/ip dhcp-server lease add block-access=yes mac-address=»$DhcpDynMAC» use-src-mac=yes;
}
}
}
——————————————————–
En DHCPSERVER, se refiere al nombre del servidor activo normalmente se llama «dhcp1» en mi caso le cambie el nombre y le puse Direccion.
en INTERFACEFILTER es donde va conectado el cable para proporcionar el dhcp a tu red..
Yo no trabajo con BRIDGE, si no que cada puerto ethernet tiene una lan diferente… si se dan cuenta agregue mas dispositivos que me he estado dando cuenta que se han conectado… espero que les sirva de ayuda como a mi me ha servido…
Agradezco infinitamente al creador de esta web ya que sin su ayuda y scripts que he visto aqui no habria podido bloquear los celulares de forma automatica.
Excelente Felix, te falto agregar para cuando el celular viene sin nombre (que con eso estarias capturando algunos mas).
|| ([:len $DhcpDynHOST]=0)
Voy a actualizar el script del post con los datos que has brindado que son muy valiosos.
Saludos
creo que es muy bueno el script, pero si llevas tiempo en mikrotik sabrás que se puede realizar un filtrado por mac através de la lista ip – arp y ip – dhcp server dejando solo los equipos que consideras deben estar conectados. El resto no podrán ingresar, aplicable al 100% por lan o wlan, lo que dejas activa una buena seguridad para tu red, impidiendo (en el caso de los celulares) se conecten atravès de los smartphones vía internet por wifi. Si, es más trabajo, pero sólo es por un tiempo… en fin, saludos
Hola Pedretti.. el ARP esta en Capa 2 del modelo OSI, y el filtrado de este script es tambien en el filter bridge de capa 2 (una de las mejores cosas que trae mikrotik por su precio) por lo que a niveles de seguridad es igual de efectivo. Mikrotik es muy versátil, existen muchas maneras, tambien depende el contexto, lugar y empresa uno elige lo que puede o a veces «conoce». Saludos.
hola amigos… tengo una red de 300 usuarios tengo trabajando un rb 1100 para balanciar ether13 y un servidor con base linux ether0, mis ap son mikrotik. quiero colocar un swich antes del servidor q vea los ap para poder usar ROMon pero no puedo porq al introducir la interface ether12 al bridge me crea conflicto con el servidor. como podria bloq la interface12 para que no me asigne dhcp y no crearse un conflicto
gracias
Excelente Script, funciona perfecto… Tengo la siguiente duda, ya lo implementé en la red de mi empresa en un rb1100 y bloquea los teléfonos celulares bien, hasta allí no hay problema. La pregunta es, si en algún momento quiero permitir el acceso a alguno de los dispositivos ya bloqueados, ¿saben como se hace? xD
Alexis, es muy simple, entras en «Bridge / Filter» y alli desactivas el Mac-Address del celular que quieras, entonces la proxima vez que pase el script por ese mac-address, lo va a intentar agregar pero como ya existe (en modo desactivado) lo dejará intacto y podra navegar libremente. Saludos. Tech-nico
Listo ya logré hacerlo, gracias por tu ayuda Tech-nico, excelente aporte. Saludos desde Cali, Colombia
COMO INTRODUZCO EL SCRIP EN MIKROTIK POR DONDE COMIENZO
YEIDI, Utilizando Winbox vas al menu «System» – «Scripts».
en el modo Bridge bloqueo celulares y puedo habilitar celulares, pero en dhcp por un puerto como hago, ya que lo bloquea pero en donde lo habilito ?
Robert, Lo habilitas en [IP / DHCP-Server / Leases]. Tenes que quitarle el «Blocked» al Mac bloqueado. Slds.
Niko me puedes indicar como hicistes esto » Alexis, es muy simple, entras en “Bridge / Filter” y alli desactivas el Mac-Address del celular que quieras, entonces la proxima vez que pase el script por ese mac-address, lo va a intentar agregar pero como ya existe (en modo desactivado) lo dejará intacto y podra navegar libremente. Saludos. Tech-nico», he intentado hacerlo pero no me funciona tengo la mac del celular que quiero que no me vaya bloquear
Alexis Arenas, como hicistes para que ciertas mac de celulares no las bloque
Pablo Castro, entras en el Winbox, vas al costado donde dice «Bridge», Luego ingresas en «Filter» y ahi vas a tener la lista de MAC-Address Bloqueados, para que no lo filtre; lo seleccionas y presionas en el boton «desactivar». No lo elimines, «Solo desactivarlo». Saludos.
Pablo Castro, así tal cual como te lo escribió Tech-nico… Pruebalo, funciona perfectamente. Un saludo.
Buenasss. Muy interesante el tema del script, pero por el momento necesito algo mas sencillo. Tengo problemas con una PC que me consume todas las IP del dhcp. Quisiera saber como evitar que ese equipo (por medio de la mac) se conecte. Igualmente el mismo tiene IP fija.
Alguno puede decirme como bloquearlo a través de la pestaña leases.
Hice lo siguiente y no funcionó, crear una regla que bloquee la mac (Block Access) pero sigue asignandole ip’s.
Desde ya agradezco su ayuda
Matias Retamozo, tenes que ir al menu [IP // DHCP SERVER // Leases] hacer doble click sobre el MAC que queres que quede como estatico y presionar el boton «Make Static». Con eso, a ese mac-address nunca mas le vuelve a asignar una nueva direccion. Slds
Gracias por la respuesta, lo pruebo y les cuento
Hola estoy en un colegio trabajando como adm de red, he limitado por medio del uso de queues un rango de ip y ahora quiero automáticamente ir asignando esos ip de forma estática a los celulares que se vallan conectando. Alguien puede orientarme?
Martin, edita la configuracion de tu «DHCP server» y agregale esto donde dice «Lease Script»
/ip dhcp-server lease make-static [/ip dhcp-server lease find dynamic && active-server="dhcp1"]
Atencion: donde dice «dhcp1» tiene que ir el nombre de TU dhcp server.
Lo que hace ese script es… en el momento de asignar una IP agarra su mac-address y lo fija a una direccion IP.
Slds
Hola, gracias por tu respuesta, y se puede agregar algo como host-name=»android» para que solo los celu les asigne ip fija?
me estoy fijando y no tengo esa opción «Lease Script» o no la encuentro. Tengo instalado mikrotik 5.18 en una pc.
Esta aca:
Si. Es completamente posible.!! Probalo.
Hola discúlpame si soy duro, te cuento que se algo de programación pero en el caso de mikrotik script no entiendo mucho.
Tengo esta parte del código donde se detecta que es un android por ejemplo y quisiera agregar una linea o varias que haga algo como lo que estoy poniendo acá, que a cada ip que sea celular se le asigne una ip fija pero fuera del rango que está establecido en el dhcp. no se si explico bien. el dhcp tiene un pool desde .50 hasta .100 luego a partir de 101 y hasta .254 tengo los queues limitados que es donde quiero mandar a los celulares poniéndoles ip fija, mientras que los equipos que no son celulares seguirían en el rango .50 – .100 del pool del dhcp que no está limitado. El problema es que no se como ir cambiando el ip en la linea del script para que no repita la ip fija asignada sino que valla asignando ip que no estén usadas en el rango .101 a .254
:if ( ($phoneNAME=»androi») || ($phoneNAME=»Window») || ($phoneNAME=»Androi») || ($phoneNAME=»BLACKB») ) ) do={
/ip dhcp-server lease add address 192.168.10.101 mac $DhcpDynMAC server dhcp1
}
Martin. Depende que Routerboard estes usando; si tiene placa Wireless, te conviene crear otro AP-Virtual y lo asignas a un bridge nuevo, luego a ese bridge le creas otro DHCP server distinto (por supuesto en un rango de IP totalmente distinto). Entonces corres el script original y que trabaje en 1 solo DHCP. Luego podes manejar distinto ancho de banda en los queues, para los distintos rangos de IP. Es una idea, espero que sirva. Saludos.
quiero habilitar los celulares de los profesores , donde los habilito (por mac), por favor me muestra donde y aparte de colocar las mac que mas debo colocar ,gracias
Hola a todos, tengo una consulta si es que me pueden ayudar, soy nuevo en mikrotik y me confundo en algunas cosas. tengo que hacer un control de acceso a 11 equipos que esta en mi brigde teniendo ip por dhcp. solo a 7 de ellos se conectan a una sola pagina y el resto sin restricciones. he intentado con web proxy, layer 7 y no logro poder solucionarlo, les agradecería mucho su ayuda.
Lee en los comentarios, esa pregunta ya la respondi. Slds.
Juan, es muy amplio lo que preguntas. Si haces preguntas mas directas y concretas te las respondo con gusto. Slds.
y para hacerlo por winbox??? osea,, directamente y no con codigo?
Saludos colegas. Para que funcione con una interface vlan es el mismo scritp que para interface? muchas gracias por el script
Francisco, si no usas Bridge no te va a funcionar porque usa el filtro del bridge. Proba con este otro script que no es tan tan efectivo pero tambien funciona bien: http://www.tech-nico.com/blog/script-mikrotik-para-bloquear-dispositivos-moviles-en-firewall/
Saludos
Funciona muy bien!
Gracias.
saludos. muy interesante los comentarios. tecnicamente progresivos a la tecnologia que actualmente vivimos. con las sugerencias tecnicas que aqui se comentan, se aprende mucho. gracias a todos los que intervienen en este foro.
buenas tardes, soy novato en todo esto pero me interesa el tema un resto ya que es lo estaba buscando para una red de un promedio de 4000 usuarios, al cual tienden a conectarse un promedio de 300 a 400 en horas no pico, entre las 8am y 6 pm, en el horario de de 6 a 8 am y 6 a 10 pm son en promedio 2500… como soy nuevo no se por donde ingresar a copiar el la información al script o si debo crearlo desde cero y por donde haría esto… me disculpan la ignorancia… pero si no pregunto no aprendo.. muchas gracias por su ayuda y colaboración.. esta excelente blog.
Edgar, simplemente lo copias y lo pegas dentro en el router (accediendolo por winbox / Menu: system / scripts).
Se da por sentado que tenes bien configurado el bridge, DHCP, Scheduler sobre RouterOS. Acegurate de que tu Routerboard tenga buen procesador para poder manejar esa cantidad de usuarios sin problemas. Yo usaria un RB2011. Saludos.
hola amigo, tengo un RB750r2, y quiero configurar tres anchos de banda, aplicar alguna reglas al firewall con paginas como redes sociales whats y demas que consumes todo el ancho de banda me podrias dar algunos tips soy nuevo pero entiendo rapido. saludos.
@Jorge Gomez, Lo que queres hacer no es poca cosa y tips hay muchos. Mi mas grande recomendacion es que sigas leyendo y practicando, el blog esta lleno de codigo para copiar y testear. Esa es la manera de aprender. Saludos.
El script me funciona muy bien, solamente que no me filtra los dispositivos android, si me añadio bien nombres como iPhone o Huawei , pero no logro que añada los dispositivos que se llamen android.
Siguiente el Script Utilizado.
# # SCRIPT: FILTRAR CELULARES EN BRIDGE
:local DHCPSERVER «ICG»;
:local BRIDGEFILTER «bridge-androids»;
:foreach i in=[/ip dhcp-server lease find dynamic=yes active-server=$DHCPSERVER] do={
:local DhcpDynIP [/ip dhcp-server lease get $i address];
:local DhcpDynMAC [/ip dhcp-server lease get $i mac-address];
:local DhcpDynHOST [/ip dhcp-server lease get $i host-name];
:local IfMacExist [/interface bridge filter find src-mac-address=»$DhcpDynMAC/FF:FF:FF:FF:FF:FF»];
:local phoneNAME [:pick $DhcpDynHOST 0 4];
:if ( ($phoneNAME=»iPad») || ($phoneNAME=»andr») || ($phoneNAME=»Andr») || ($phoneNAME=»LANI») || ($phoneNAME=»Ipho») || ($phoneNAME=»HUAW») || ($phoneNAME=»S120″) || ($phoneNAME=»BLUS») || ($phoneNAME=»iPod») || ($phoneNAME=»sony») || ($phoneNAME=»Wind») || ($phoneNAME=»iPho») || ($phoneNAME=»BLAC») || ([:len $DhcpDynHOST]=0) ) do={
:if ($IfMacExist != «») do={
# :log error («Filtrando telefono… «.$DhcpDynMAC. » Ya existe»)
} else= {
/interface bridge filter add action=drop chain=input in-bridge=$BRIDGEFILTER src-mac-address=»$DhcpDynMAC/FF:FF:FF:FF:FF:FF» comment=$DhcpDynHOST;
:log warning («Se filtro un nuevo dispositivo » . $phoneNAME . » MAC: » . $DhcpDynMAC);
}
}
}
@Esteban Campos, Eso es muy raro, siempre me anduvo perfecto. Vas a tener que debuguear (inserta varios log warning) y probar con un android en tiempo real para ver que esta pasando.
@Esteban, Creo que el problema podria ser con los telefonos Samsung, porque le modifican el hostname por defecto y le ponen «Galaxy****»

Te paso una imagen. Espero que lo puedas resolver. Slds.
buenas buenas compañeros . he probado estos script y gracias a ustedes funcionan perfecto, ahora tengo una sujerencia a ver quien me puede ayudar enorme mente amigos, tengo funcionando este script y ahora por favor me puedes colaborar con otro script que me borre o limpie las lista dhcp leases creada de estos dispositivos moviles .
es decir ya los quiero retirar de la lista cada cierto tiempo para disminuir la cantida de dhcp leases que tengo alrededor de 10000
@sandynoxsandy Podes agregar esto al final del script, (ya estaba puesto en los comentarios) cada vez que corra y filtre va a borrar los leases filtrados.
De todos modos recorda que los leases de DHCP tiene un lease-time configurable, por lo que estimo, no necesitas borrarlos porque caducan solos y se renuevan.
Buena noche, es lo que buscaba mañana pruebo y les cuento. ya con esto implementado quien me puede ayudar con la configuración de una segunda red wifi (gerencia) paso a paso.
Lo que buscaba, Implemento y les cuento. Un favor quien me puede explicar paso a paso como crear una segunda red wifi (invitados) soy nuevo pero con anhelo de aprender.
Buenos dias, Gracias por la ayuda el script funciona de maravilla. Tengo ahora otra necesidad y es que quisiera que bloqueara no solo los celulares si no todos los equipos que se conecten a la red, esto con el fin de poder tener el control de seguridad sin tener que estar pendiente haciendo bloqueos manuales y que los usuarios nuevos que se conecten a la red tengan que pedirme autorizacion para que puedan navegar. Como seria el comodin o que linea tengo que agregar para que bloque todo lo que se conecte a la red?
Buenos Días Niko, quisiera un poco de ayuda de tu parte, soy realmente nuevo en esto del Mikrotik y requiero configurar uno que poseo para que los clientes que se conecten vía wifi se les asigne un rango de Ip’s diferentes al rango de mi Ip Cableado. ¿Cómo puedo hacer esto? Muchas gracias de Antemano!
Funcionando de maravilla hoy Diciembre 2018… Muchas Gracias!
Jose Gonzalo Blanco Becerra… Tienes que asignar dos direcciones diferentes asignandolos a la interfaz que necesitas… Despues creas el DHCP-Server para cada interfaz, saludos….
Buenas x aqui…algo tarde pero nunca de mas…..
aqui les dejo un script para todo aquel que quiera que su mikrotik dropee a cuantos intenten engancharse al su red x DHCP..o sea si sus alumnos o alguien que pase serca y vea su red wifi e intente ingresar en ella intentando que la red le asigne ip dinamic pues el trabajo del script es dropearlo a menos que usted mismo lo haga estatico o dimanico cualesquiera que sea la entrada que usted mismo le de o sea si no esta autorizado esa mac y ip por usted (dueño de la red) el script lo bota del sistema….ahora para darle entrada a dicha persona porque creanme que te bota al tiempo que tu le des al lease ya sea 1 seg o 5 min o el tiempo que usted defina..para darle acceso a cierto amigo, compañero o alumno…sencillo es ir a su DHCP y darle ¨¨make static¨¨ antes que el script lo bote o desactivar el sheduler…darle entrada al dispositivo/ip y luego volverlo a activar y automaticamente todo aquel que no esta autorizado x usted para ese entonces va a ser ¨¨baneado o dropeado¨¨ de su sistema……
PD: recuerden este script es para el mikrotik donde se encuentra el DHCP ojo con eso….saludos
/system scheduler
add interval=1m name=»BAN del DHCP» on-event=»:foreach i in=[/ip dhcp-server lea\
se find dynamic=yes ] do={\r\r\
\n:local ip [/ip dhcp-server lease get \$i address ];\r\r\
\n:local mac [/ip dhcp-server lease get \$i mac-address ];\r\r\
\n:local host [/ip dhcp-server lease get \$i host-name ];\r\r\
\n/ip dhcp-server lease remove [ find where dynamic=yes ];\r\r\
\n:log warning (\»Bad Host Name \$host \» . \»with Mac \$mac \» . \»and IP \
\$ip Removing from dhcp server lease \»)\r\r\
\n}» policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=jun/27/2018 start-time=07:58:03
@lockdown955 El script que envias donde se debe ejecutar?
@Fabian Parra ese script lo copias y lo pegas en el mikrotik que da DHCP..o sea abres el mikrotik..vas a ¨¨new terminal¨¨ copias el script y en new terminal das pegar y listo el te crea el sheduler y ejecuta su accion instantaneamente…saludos
Buenas he estado leyendo los comentarios y se aprenden muchas cosas, alguien me podría ayudar con u script para bloquear clientes que comparten su conexión de Internet vía bluetooth?
No se puede controlar trafico que no pasa por tus routers. Si usan 4G y lo comparten entre dispositivos mobiles, entonces se estan creando una red privada punto a punto. Lo unico que se puede hacer es usar algun equipo bloqueador de señales para inhibir bluetooth (se les dice Radio Jamming).
Buen dia, muchas gracias por el aporte, me sirvio perfectamente, solo tengo una duda, como modifico el tiempo de ejecucion o en que se opcion agrego que cada cierto tiempo se ejecute ese scrpt
Hola buenos dias Alan. Quizas ya lo resolviste, Si no, lo haces desde /system schedule. Desde alli creas un calendario para ejecutar con la frecuencia que quieras.
Llamas al script con la ruta
/system script run NombreScript
Hola Buenas tardes.
ante todo, excelente script.
mi consulta es como podría bloquear por medio de MAC las qeu se encuenten en leases, mediante una sola regla o sin necesidad de usar el firewall
muchas gracias
Buenas noches, saludos desde Venezuela.
La idea del script es bloquear de forma permanente los móviles. Pero que ajustes podríamos hacer para no bloquearlos de forma definitiva. Supongamos que quisiéramos otorgar a cada dispositivo la oportunidad de un determinado consumo por día, (por ejemplo 100Mb, suficiente para que googlee, haga algunas investigaciones, revise el correo, etc.) y solo si logra consumirlo entonces sera bloqueado por el resto de ese día. Repetir el ciclo dia a dia, es decir dejarlo navegar y solo si agota lo establecido impedirle el acceso lo restante del día. De esa manera se flexibiliza, dejándolos navegar y ni siquiera por horarios, sino que cada quien administre de la mejor forma la cuota otorgada
Hola Ruben!!!. Eso se suele lograr con servidores Radius. Mikrotik tiene su propio radius server que se llama «User Manager». Utilizando User Manager vas a poder lograr lo que estas buscando. Saludos cordiales.
Ignacio, entiendo que buscas bloquear directamente en bridge usando el flag block-access.
Escribi un post sobre ello, te invito a verlo por aca.
http://www.tech-nico.com/blog/script-mikrotik-para-bloquear-dispositivos-moviles-con-dhcp/
Saludos.