- Mensajes
- 14,146
Hola,
En esta ocasión quiero arrancar un nuevo post a modo colaborativo, de igual modo que hice con el de las cofiguraciones básicas de los ISPs. La idea es que nos vayáis enviando trucos que habéis descubierto usando vuestros equipos, y que creáis que puedan resultar interesantes.
Podemos hacerlo como queráis, o los vais poniendo debajo y yo voy editando el primer este primer POST par ir añadiéndolos, o montamos un formato común y que cada uno vaya añadiendo en las respuestas sus propios trucos. Sin más, os dejo con algunos de los que uso de manera habitual, y que me son de gran ayuda.
Truco: Activar el Hardware Offloading [aceleración por hardware] en equipos con switch chip MT7621 [hEX, hEX-S] - NO NECESARIO EN RouterOS-V7x
Este es el primer truco que debéis aprender los recién llegados a la marca y que hayáis optado por un equipo hEX [RB750Gr3] o hEX-S [RB760iGS]
Por defecto, el quick setup nos va a configurar nuestro equipo de manera correcta, pero dejará una interesante configuración sin activar: el hardware offloading o aceleración por hardware. Dado que nuestro equipo lleva un switch chip, podemos hacer uso de él para enrutar los paquetes que van al resto de puertos, sin llegar a pasar por la CPU del router, usando la aceleración por hardware del propio switch. Esto se traduce en un aumento de rendimiento más que notable. Para ello, lo único que tendremos que hacer es editar el bridge principal y desactivarle el protocolo de spanning tree, ya que este router no es compatible con STP/R-STP y hardware offloading al mismo tiempo, para este modelo de switch chip en concreto.
Tras esto, perderéis momentanemente la conexión con vuestro equipo. Una vez restaurada, podéis ir a la pestaña "Ports" dentro del bridge, y veréis que los puertos que están asociados al birdge principal (sólo funciona con él, el primero), ahora aparecen con una "H" delante. Esto significa que trabajan ahora a nivel de hardware, mucho más rápido que antes cuando enviaban el tráfico a la CPU del equipo.
Este truco es incompatible con los protocolos del spanning tree como STP/R-STP/MSTP, así como con el VLAN filtering en el bridge o la opción de IGMP snooping, para este equipo concreto. Sólo los equipos más capaces pueden usar todas estas caracterísiticas a nivel hardware. Podéis ver el detalle en la siguiente tabla
Truco: Usar un dominio tipo DynDNS con mi equipo mikrotik
Este truco es realmente sencillo, porque cada routeboard viene con un dominio dinámico que nos regala mikrotik, no tenéis ni que montar un script para configurar el vuestro, como se hacía antiguamente. Vuestro dominio será siempre vuestro número de serie del equipo + .sn.mynetname.net. Es decir, llevará el siguiente formato: serial.sn.mynetname.net
Para usarlo, lo único que tenéis que hacer es activarlo en IP -> Cloud -> DDNS = enabled
Si además queréis que el equipo mantenga actualizada la hora del sistema usando ese servicio, sólo tenéis que marcar la opción de "Update Time" del la misma pantalla
Bonus extra: si tenéis un dominio particular contratado, tipo pericoeldelospalotes.com, podéis crear una entrada tipo CNAME que apunte a vuestro dominio mikrotik, y así no tener que aprenderte el número de serie del chisme ni tener que recordar ese dominio tan complejo. La entrada tipo CNAME simplemente asocia un dominio a otro, de tal manera que podéis crear un router.pericoeldelospalotes.com que apunte como CNAME a serial.sn.mynetname.net. Esto os ayudará mucho a configurar, por ejemplo, una VPN, dado que ese dominio se va a mantener siempre activo y apuntando a vuestra IP dinámica, aunque esta cambie con un reinicio del equipo.
Truco: Crear un backup en cloud de nuestra configuración
Desde hace poco, mikrotik nos permite subir un backup de nuestros equipos a un dominio cloud de su propiedad. Los backups están cifrados y protegidos por contraseña de manera obligatoria, así que no me preocuparía en exceso de temas de seguridad. Este tipo de backup el muy útil si tenéis varios routers iguales, o si tenéis un equipo en producción y otro en stagging (en la retaguardia), por si el primero falla. De esta manera, podéis enchufar un router nuevo con la configuración base, bajar el backup y echarlo a andar en menos de un minuto. Ojo que sólo podréis crear uno por equipo, así que si queréis crear uno cuando ya habéis creado el primero, tendréis que borrar el anterior. Sin más, os detallo cómo se hace:
Crear el backup
Visualizar el detalle del backup, incluida la clave de descarga del fichero (por si os queréis llevar la configuración a otro equipo)
Descargar el backup en el propio equipo - Se descargará en Files y podréis restaurarlo con la contraseña de encriptado que pusisteis al crearlo [MySup3rB4ckup!]
Descargarlo en otro equipo - Necesitaréis el secret-download-key que se proporciona por consola en el segundo paso, cuando mostramos la info del backup
Borrar el backup, para dejar el espacio libre y crear uno nuevo
Bonus: si jugáis con el apartado /system scripts y /system scheduler, veréis que podéis automatizar esto para que se haga cada cierto tiempo, automáticamente.
Truco: Hairpin NAT [NAT Loopback]
Esta opción nos valdrá para acceder a una máquina local (tipo un NAS o un webserver) usando un dominio público, cuando estemos dentro de nuestra propia red. En los routers comerciales al uso, normalmente esto ya viene implementado, y es algo por lo que no nos tenemos que preocupar. No obstante, en routers más avanzados, es una opción que hay que configurar a mano. La configuración básica, para una única máquina y un único puerto, la tenéis explicada en la wiki. No obstante, vamos a darle una vuelta de tuerca y a configurar esto para que el loopback funcione para todo el segmento de red y que, además, no tengamos que andar editando la regla de apartura de puertos del hairpin cada vez que necesitemos exponer un puerto nuevo. Para ello, vamos a hacer uso de una propiedad relativamente nueva en los routers mikrotik, llamada address-llists.
Primero, activamos el dominio ddns (primer truco)
Segundo, añadiremos nuestro dominio como una lista de direcciones, la cual vamos a llamar public-ip. Al hacerlo, el propio router resolverá nuestra IP pública, a la cual apunta el dominio,modificando el address=serial.sn.mynetname.net por la dirección de IP cloud que podemos sacar del primer paso sacando la dirección directamente del comando
Suponiendo que nuestra LAN es la que monta el router por defecto [supongo 192.168.88.1/24; cambiar según vuestra LAN], crearemos la siguiente regla de masquerade en el NAT, la cual colocaremos en la primera posición, antes que la regla por defecto (posición 0), obteniendo nuestra LAN dinámicamente. Suponemos que, si no se ha cambiado, nuestra LAN por defecto es la que se define en la primera entrada de "networks" en el servidor DHCP:
Por último, creamos la apertura de puertos que queramos, pero con una pequeña modificación: ahora le diremos que el tráfico viene por nuestra IP pública. Al no tener una IP pública estática, no podremos usarla en el dst-address, pero como hemos creado la entrada en la lista de direcciones, podemos usar el dst-address-list como filtro. De esta manera no secuestramos todo el tráfico de nuestra red para ese puerto en cuestión, sino sólo el de entrada (el que tiene como destino la IP pública)
En este caso, abriremos el tráfico del puerto 443 externo (HTTPS) y lo redireccionaremos a la al puerto https de la consola de administración de nuestro equipo (supongo un servidor web situado en la IP 192.168.88.100 y con puerto de administración el 1234). Adaptar el ejemplo a vuestras necesidades:
Una vez hecho esto, podremos ingresar a nuestra consola de admin, tanto desde dentro de la red como desde fuera, usando nuestro dominio tipo https://serial.sn.mynetname.net, tráfico que acabará golpeando el puerto tcp interno 1234 de la máquina 192.168.88.100
Para el resto de puertos a abrir, seguiremos la misma técnica y en todos especificaremos el dst-address-list, en lugar del in-interface.
Truco: Aislar un equipo en una red aparte
Muchas veces tenemos la necesidad, bien por trabajo bien por cualquier otro tema, de aislar un equipo dentro de nuestra red. Para ello, no basta con asignar una IP o segmento de red distinta al equipo, sino que además tenemos que bloquear el tráfico que genera para que no acceda a nuestra red princpal, dado que, por defecto, todos los segmentos de red que se configuren en un router mikrotik se comunican entres sí.
Para montar una red independiente, lo primero que vamos a hacer es sacar el puerto físico donde vayamos a conectar el equipo (ether5 en mi caso) del bridge principal, el cual de normal aglutina los puertos del 2 al 5 (en el caso de equipos con 5 puertos ethernet). En este caso, saco ether5 del bridge principal llamado bridge1
Lo siguiente que haremos, será asignar un nuevo segmento de red para ese puerto. Por ejemplo, le daremos el segmento de red 192.168.99.1/24
Siguiente, creamos un pool de direcciones para dicho servidor, tan grande como nos interese. En mi caso, de 8 equipos, de la 3 a la 10.
Y le añadimos un servidor DHCP a dicha interfaz, para no tener que preocuparnos de poner una IP estática en la máquina la cual conectemos a ese puerto. Primero el detalle de la red, luego el servidor propiamente dicho
Y por último, y más importante, añadimos las reglas de firewall que nos impedirán la comunicación entre ambas redes, dado que el mikrotik las comunica por defecto. Serán dos reglas (una por cada sentido del tráfico) en el chain de forward:
Truco: Acceder a la ONT o el router que tengo conectado el puerto WAN [ether1]
Muchas veces tenemos la necesidad de acceder al router u ONT que usamos como WAN. Sin embargo, si estamos conectados al router mikrotik y estamos en otro segmento, no llegaremos a dicho equipo. La manera de hacerlo es muy sencilla.
Primero, creamos una IP del rango del equipo conectado al WAN, y se la asignamos a ether1. En mi caso tengo una ONT a la cual accedo con la dirección 192.168.100.1, de tal manera que he configurado la dirección 192.168.100.2 sobre ether1:
Y, a continuación, especifiamos que la interfaz física ether1 la considere como un puerto WAN (además de la VLAN o cliente PPPoE que use vuestra configuración original, la cual ya estará dada de alta como perteneciente a la lista WAN)
Con estos dos sencillos pasos, ahora podremos abrir un navegador y, desde cualquier dispositivo conectado a nuestro router mikrotik, acceder a la dirección 192.168.100.1 [adaptarlo según necesidad de cada uno]
Truco: Usar el servidor DNS, como servidor local para un dominio de intranet.
Con la opción de IP -> DNS -> Allow remote requests, estamos convirtiendo nuestro equipo en un servidor DNS, el cual podrá hacer las funciones de DNS caché y de servidor local. Para esto último podemos crear entradas estáticas a las IP's locales de nuestros dispositivos, resolviendolos luego vía nombre.dominio.
Por defecto, el router habrá creado una entrada que apunta a la IP del propio equipo, la cual podemos resolver con un ping a router.lan. Siguiendo con ese dominio .lan, podemos seguir añadiendo dispositivos para luego resolverlos por nombre. Ejemplo:
Bonus: una vez tengamos nuestros equipos, todos bajo un mismo dominio (puede ser el .lan o cualquier otro que nos guste más), podemos añadir este dominio a la lista de dominios de búsqueda en el DHCP, de tal manera que nos lo entregue como parte de los datos que facilita el router cuando un cliente le solicita una IP.
De esta forma, una vez el servidor DHCP nos entregue una dirección, también nos entregará su dominio de búsqueda, tal que ahora podremos invocarlo con un ping simplemente al nombre del equipo: ping router deberia responder de la misma manera ahora que un ping router.lan
Truco: Convertir tu routerboard en un switch (o un AP puro, en caso de tener wifi) [by @stargate4you]
Para cuando nos interese convertir nuestro router en un bridge, o en el caso de AP's inalámbricos los cuales no queramos usar con ninguna función de router, la solución es sencilla. Lo único que necesitamos hacer son los siguientes cambios:
Truco: Filtrar web maliciosas a parte de tus equipos usando filtrado DNS [by @stargate4you]
Para cuando tenemos peques en la casa o simplemente queremos que se filtren las peticiones DNS a parte de nuestra red, podemos redirigir las peticiones DNS a un servidor público con filtrado, evitando así que los más peques de la casa accedan a contenido indeseado.
Si queremos aplicarlo a toda la red, lo más sencillo es utilizar como servidor uptream de DNS uno que ya vaya filtrado. Por ejempo:
Y, si queremos personalizarlo, sólo hay que sacarse una cuenta en OpenDNS Home y configurar a nuestro gusto los filtros que queramos. Nos proveerán otros servidores DNS donde podremos personalizar qué tipo de filtrado queremos aplicar, los cuales, al igual que lo anterior, podremos usar para filtrar parte o todo el tráfico del mikrotik.
Truco: Fijar la MAC de nuestro equipo en el bridge, para no tener problemas en la asignación de direcciones dinámicas por DHCP
Hay veces que conectamos nuestros equipos como CPE/Bridge o puentes inalámbricos, y queremos que el resto de puertos ethernet del router funcionen como un simple switch. Normalmente, esto se consigue metiendo todas las interfaces ethernet+wifi en el mismo bridge, y levantando sobre él un cliente DHCP, el cual recibirá una dirección IP del router o equipo que tenga el servidor DHCP corriendo
Problemática: al meter todos los puertos en el bridge, incluido el puerto que hace de WAN, perdemos consciencia de que el bridge como tal no tiene una MAC propia, sino que la obtiene del primer puerto que se agrega al bridge. No es infrecuente que, al reiniciar, ese orden cambie, y la MAC asociada al bridge cambien también, haciendo que el servidor DHCP nos vea como otro equipo y nos de otra IP. Esto puede causar que perdamos conectividad, si a ese equipo le tenemos hecho un lease y reservado una IP para, por ejemplo, una apertura de puertos. Se me ocurre el caso típico del router haciendo de swtich (bridge mode) + servidor VPN.
Solución: simplemente tenemos que elegir una MAC, de entre los puertos que conforman el bridge que lleva el cliente DHCP levantado, y ponerla como MAC de administración en el bridge. Normalmente, yo suelo elegir la MAC del puerto que hace de WAN. Ejemplo: router con 5 puertos ethernet y una wifi, la cual hace de WAN, dentro del mismo bridge, donde le otorgo la MAC de la interfaz inalámbrica, como MAC de administración a dicho bridge.
Truco: Configurar un script para duckdns.org en mikrotik y programarlo para ejecución automática.
Por si no os gusta el dominio que os regala el propio mikrotik y sois usuarios de este servicio, podéis usarlo también en vuestro equipo. Lo único que tendréis que dar de alta será un script que actualice el dominio con vuestra dirección pública, y meterle un programador para correrlo periódicamente. El script está recogido de la propia web de duckdns, y simplemente parametrizado en las tres primeras líneas, para que sólo tengáis que cambiar los valores de dichas variables globales, "wanInterface", "domain" y "token", las cuales corresponden a la interfaz por la cual obtenéis IP pública. El script es el siguiente:
Para ello, primero damos de alta el script en System -> Script, pulsando el botón +. Seleccionamos todos los permisos que vienen por defecto y pegamos el script en el campo en blanco.
Luego, damos de alta un programador en System -> Scheduler, y le decimos que corra el script, por ejemplo, cada 30 minutos. Simplemente rellenamos los datos y, en el cajetín en blanco, ponemos el nombre con el cual guardamos el script previamente, en mi caso, "duckdns"
Con esto y un bizcocho, duckdns funcionando en mikrotik. Si todo ha ido bien, veréis una líneas como estas en el log, cuando corra el script:
Truco: Reserva de direcciones estáticas sobre direccionamiento dinámico DHCP
Este truco es realmente sencillo, pero acabo de darme cuenta de que no estaba documentado. Muchas veces tenemos la necesidad de asignar una IP fija (estática) a una máquina concreta, dentro de nuestra red. Por ejemplo, cuando tenemos un servidor web, de vpn, o cualquier otro tipo de máquina que lleve un mapeo de puertos. Obviamente, dado que el mapeo de puertos va asociado a una IP concreta, nos interesa que se le otorgue siempre la misma IP a dicho equipo y que no cambie, o el mapeo de puertos nos funcionará relativamente poco tiempo.
Mucha gente tiene la tentación de asignar IP's a mano dentro de los equipos (ip, máscara, puerta de enlace y dns) y para mi esto es un grandísimo error. No es que per se esto está mal, que no lo está, pero es un paso atrás enorme: empiezas a distribuir distintas configuraciones por distintos equipos, en lugar de centralizar la configuración en el router. Si mañana cambias tu router principal, te va a tocar modificar a mano ese equipo, a menos que respetes con pelos y señales cada detalle que pusiste. Y, cuando tienes una máquina...ni tan mal. Pero, ¿y cuando tienes 30 interruptores en casa domotizados? O cuando tienes 50 impresoras en una empresa.. ¿vas a querer ir metiendo la IP de cada una a mano? Obviamente no, para esto está el servidor DHCP, que nos entrega direcciones automáticas. Pero, ¿podríamos hacer que también las entregue estáticas? Pues sí, vinculando la IP que queremos entregar a la MAC address o dirección física del dispostitivo en cuestión.
Para hacerlo, tenemos dos opciones:
Una vez hecho esto, pasan dos cosas: la primera, se quita la "D" que aparece en la primera columna, y que nos indicaba que la entrada era dinámica. La segunda: que dicha entrada se vuelve editable, y podemos volver a hacer doble click en ella y modificar ahora su dirección IP. En ese momento, le otorgaremos la dirección que queramos que tome, y dicha dirección será entregada en el siguiente proceso de renovación del lease del DHCP (cuando el cliente vuelva a preguntarle al servidor, "oye, dame u na IP", y este le conteste con la reservada, en lugar de decirle "quédate con la dinámica que ya tienes"), lo cual pasa a la mitad del tiempo del Lease que tengáis configurado. Por defecto está en 10 minutos, así que las IP's renuevan cada 5. No pasa nada porque escojáis una IP que ya está en uso dinámico para la reserva, y asignada a otra máquina: el servidor DHCP es inteligente, y se quedará con la tarea de desasignar esa IP a quien la tiene como dinámica, y asignarle otra nueva en el siguiente lease. Puede que os de un warning en el log, avisando de ello, pero lo resuelve él solito. La reservada siempre manda sobre el resto.
Por último comentaros que el servidor DHCP de mikrotik es de lo mejorcito que tienen estos equipos. Lo he visto funcionando sin pestañear incluso otorgando direcciones por intenet sobre una conexión pésima a través de túneles EoIP. Así que creo que no hay razón alguna para seguir metiendo IP's a mano en los dispositivos finales, or recomiendo enfáticamente no hacerlo y usar esto en su lugar. Y creedme cuando os digo que es capaz de manejar una tabla de leases con muchos muchos equipos, sin mayor problema.
Truco: Programación de un botón para ejecutar un script [by @stargate4you]
www.adslzone.net
Truco: Notificar vía mail una nueva IP asignada por el servidor DHCP [by @Mikroberto]
Recibir un aviso por mail cuando un nuevo cliente recibe IP dinámica por DHCP. Es muy útil para detectar conexiones nuevas, pero las IPs de equipos conocidos, lo suyo es cambiarlas a estáticas
Lo he sacado de:
forum.mikrotik.com
1. Configurar e-mail
2. Configurar alerta
Esto debería ir en la caja de script del servidor dhcp en el que quieres que se ejecute - no en la pestaña de alertas.
Truco: DHCP condicional para asignar distintos DNS dentro de tu mismo pool.
En ocasiones nos interesa que un equipo o equipos dentro de nuestra red se salten la configuración por defecto que tenemos definido para el DHCP de dicha subred. Ejemplo: tengo un pi-hole en la red que me filtra publicidad, pero quiero que un equipo o ciertos equipos se saltan dicho DNS y usen otro menos restrictivo.
Hay varias maneras de hacer lo mismo, os planteo tres de ellas, aunque hay más.
Otorgar un DNS específico para una única IP de nuestra subred
De estas distintas formas, y alguna más enrevesada también, (vía NAT) podemos sobrescribir la configuración DNS que tengamos otorgada por defecto a nuestra subred.
Truco: Cambiar el segmento LAN de mi router, una vez está funcionando
Aquí os dejo un pequeño script para cambiar la LAN de un router que ya está funcionado. Se trata de definir las cuatro variables de entorno que aparecen en la cabecera del script, subirlo a la carpeta files y ejecutarlo desde terminal. Una vez hagáis el import desde terminal, la terminal bloqueará, pero no os preocupéis, es por el cambio de IP del bridge o la interfaz LAN principal. Simplemente desconectad el cable de red que os une al router, o apagar y encender la interfaz inalámbrica si estáis por wifi, y debería daros ya una IP del segmento nuevo.
Bonus: para los que tengan la buena costumbre de acceder al equipo por ssh, si renombráis el fichero a "loquesea.auto.rsc" y lo subís por SFPT/FTP, el import se ejecutará automáticamente tras subirlo, generando un fichero de log "loquesea.auto.log" con el resultado de la operación. Así se subiría el fichero script.auto.rsc por sftp:
Truco: Certificado SSL de let's encrypt para nuestro dominio DDNS cloud o cualquier otro dominio propio (sólo v7)
Se trata de que podamos sacar un certificado de let's encrypt para poder acceder al router de manera segura, usando https. Sigo sin recomendar abrir esto a internet, pero si no tenéis más remedio o queréis usar vuestro propio dominio y queréis que sea el router quien lo mantenga actualizado automáticamente, ahí va:
Lo primero, preparamos el router para recibir la petición de let's encript. Abrimos en input el tráfico al puerto 80. Una vez expedido el certificado, borrad esta regla, ya que no es necesaria para mantener el certificado actualizado.
Hecho esto, solicitamos el certificado. Si no especificamos la opción dns-name, lo pedirá para el dominio de mikrotik, el que viene en IP -> Cloud. Sino, lo pedirá para el subdominio que le indiquemos, siempre y cuando ese subdominio lo hayamos apuntando previamente, en nuestra consola de admin del dominio, a nuestra IP pública, de una u otra manera (por ejemplo, con un CNAME al dominio de mikrotik)
Hecho esto, veréis que la regla de firewall de input que hemos creado recibe una pequeña cantidad de paquetes. Es el servidor de let's encrypt, tratando de verificar que el certificado lo estamos emitiendo para un dominio nuestro, que poseemos y apunta a nuestra propia IP pública (ACME challenge). Acabado el proceso, si vais a IP -> Services, veréis que se ha habilitado el servicio "www-ssl" el cual escucha en el puerto 443, y apunta al certificado que acabamos de emitir. El certificado firmado por let's encrypt lo tenéis en System -> Certificates.
Hecho esto, podéis comprobar que el certificado funciona poniendo https://serial.sn.mynetname.net, siendo "serial" el número de serie de vuestro equipo, que ya sabéis donde podéis encontrar. O, si lo emitisteis para un domino propio, https://router.midominio.com, siguiendo con el ejemplo.
Si queréis acceder al equipo desde internet, cambiad la regla de input que creamos en el paso uno y, en lugar del puerto 80, modificarlo al 443, y ya podréis acceder al router desde internet con la URL https del dominio correspondiente. No os lo recomiendo, pero ahí lo tenéis, en caso de necesitarlo.
Truco: Bloquear una web https de manera sencilla (a crédito del último vídeo tutorial de mikrotik)
Si queremos bloquear una página https de manera sencilla, podemos hacerlo con una simple regla de drop en el firewall filter. Nos va a hipotecar el tema del fasttrack, pero es tan sencilla la solución que creo que merece la pena mencionarla. Imaginemos que queremos bloquear el acceso a htttps://www.amazon.es
Lo primero que miraríamos sería el certificado SSL de dicha página web. Dependiendo de vuestro sistema operativo y vuestro navegador, es algo que soléis tener en el candadito que sale cuando tipeais la direccón en la barra de direcciones del navegador.
Hecho esto, veremos que, si queremos bloquear amazon.es, deberemos bloquear el denominador común de todos esos dominios DNS, "*amazon.es", usando el asterisco como wildcard. Hecho este análisis, simplemente creamos una regla de drop y especificamos ese patrón en el apartado TLS host de las opciones del filter. Al mismo tiempo, deshabilitaremos fasttrack para bloquear cualquier conexión ya establecida que nos permita saltarnos la regla de drop. La regla de drop bloquearía el tráfico TCP que viene de mi LAN y va con destino ese matcher TLS. La posición de la regla, la pondríamos delante de la regla de fasstrack, o incluso la primera del chain de forward.
Como explica el vídeo, el matcher revisa los certificados de las conexiones httpsm donde están los nombres de dominio a los que vamos a conectar. Si hay match, se aplica la regla. Es tremendamente efectiva (mucho más que un bloqueo en L7) y apenas consume recursos.
Saludos!
...
Si tenéis aguno más que queráis ver aquí, no dejéis de compartirlo. Seguro que tenéis más de uno que yo no me sé
Saludos!
En esta ocasión quiero arrancar un nuevo post a modo colaborativo, de igual modo que hice con el de las cofiguraciones básicas de los ISPs. La idea es que nos vayáis enviando trucos que habéis descubierto usando vuestros equipos, y que creáis que puedan resultar interesantes.
Podemos hacerlo como queráis, o los vais poniendo debajo y yo voy editando el primer este primer POST par ir añadiéndolos, o montamos un formato común y que cada uno vaya añadiendo en las respuestas sus propios trucos. Sin más, os dejo con algunos de los que uso de manera habitual, y que me son de gran ayuda.
Truco: Activar el Hardware Offloading [aceleración por hardware] en equipos con switch chip MT7621 [hEX, hEX-S] - NO NECESARIO EN RouterOS-V7x
Este es el primer truco que debéis aprender los recién llegados a la marca y que hayáis optado por un equipo hEX [RB750Gr3] o hEX-S [RB760iGS]
Por defecto, el quick setup nos va a configurar nuestro equipo de manera correcta, pero dejará una interesante configuración sin activar: el hardware offloading o aceleración por hardware. Dado que nuestro equipo lleva un switch chip, podemos hacer uso de él para enrutar los paquetes que van al resto de puertos, sin llegar a pasar por la CPU del router, usando la aceleración por hardware del propio switch. Esto se traduce en un aumento de rendimiento más que notable. Para ello, lo único que tendremos que hacer es editar el bridge principal y desactivarle el protocolo de spanning tree, ya que este router no es compatible con STP/R-STP y hardware offloading al mismo tiempo, para este modelo de switch chip en concreto.
Código:
/interface bridge set numbers=0 protocol-mode=none
Tras esto, perderéis momentanemente la conexión con vuestro equipo. Una vez restaurada, podéis ir a la pestaña "Ports" dentro del bridge, y veréis que los puertos que están asociados al birdge principal (sólo funciona con él, el primero), ahora aparecen con una "H" delante. Esto significa que trabajan ahora a nivel de hardware, mucho más rápido que antes cuando enviaban el tráfico a la CPU del equipo.
Este truco es incompatible con los protocolos del spanning tree como STP/R-STP/MSTP, así como con el VLAN filtering en el bridge o la opción de IGMP snooping, para este equipo concreto. Sólo los equipos más capaces pueden usar todas estas caracterísiticas a nivel hardware. Podéis ver el detalle en la siguiente tabla
Truco: Usar un dominio tipo DynDNS con mi equipo mikrotik
Este truco es realmente sencillo, porque cada routeboard viene con un dominio dinámico que nos regala mikrotik, no tenéis ni que montar un script para configurar el vuestro, como se hacía antiguamente. Vuestro dominio será siempre vuestro número de serie del equipo + .sn.mynetname.net. Es decir, llevará el siguiente formato: serial.sn.mynetname.net
Para usarlo, lo único que tenéis que hacer es activarlo en IP -> Cloud -> DDNS = enabled
Código:
/ip cloud set ddns-enabled=yes
Bonus extra: si tenéis un dominio particular contratado, tipo pericoeldelospalotes.com, podéis crear una entrada tipo CNAME que apunte a vuestro dominio mikrotik, y así no tener que aprenderte el número de serie del chisme ni tener que recordar ese dominio tan complejo. La entrada tipo CNAME simplemente asocia un dominio a otro, de tal manera que podéis crear un router.pericoeldelospalotes.com que apunte como CNAME a serial.sn.mynetname.net. Esto os ayudará mucho a configurar, por ejemplo, una VPN, dado que ese dominio se va a mantener siempre activo y apuntando a vuestra IP dinámica, aunque esta cambie con un reinicio del equipo.
Truco: Crear un backup en cloud de nuestra configuración
Desde hace poco, mikrotik nos permite subir un backup de nuestros equipos a un dominio cloud de su propiedad. Los backups están cifrados y protegidos por contraseña de manera obligatoria, así que no me preocuparía en exceso de temas de seguridad. Este tipo de backup el muy útil si tenéis varios routers iguales, o si tenéis un equipo en producción y otro en stagging (en la retaguardia), por si el primero falla. De esta manera, podéis enchufar un router nuevo con la configuración base, bajar el backup y echarlo a andar en menos de un minuto. Ojo que sólo podréis crear uno por equipo, así que si queréis crear uno cuando ya habéis creado el primero, tendréis que borrar el anterior. Sin más, os detallo cómo se hace:
Crear el backup
Código:
/system backup cloud upload-file action=create-and-upload password=MySup3rB4ckup!
Visualizar el detalle del backup, incluida la clave de descarga del fichero (por si os queréis llevar la configuración a otro equipo)
Código:
/system backup cloud print
Descargar el backup en el propio equipo - Se descargará en Files y podréis restaurarlo con la contraseña de encriptado que pusisteis al crearlo [MySup3rB4ckup!]
Código:
/system backup cloud download-file action=download number=0
Descargarlo en otro equipo - Necesitaréis el secret-download-key que se proporciona por consola en el segundo paso, cuando mostramos la info del backup
Código:
/system backup cloud download-file action=download secret-download-key=XXXXXXXXX
Borrar el backup, para dejar el espacio libre y crear uno nuevo
Código:
/system backup cloud remove-file 0
Bonus: si jugáis con el apartado /system scripts y /system scheduler, veréis que podéis automatizar esto para que se haga cada cierto tiempo, automáticamente.
Truco: Hairpin NAT [NAT Loopback]
Esta opción nos valdrá para acceder a una máquina local (tipo un NAS o un webserver) usando un dominio público, cuando estemos dentro de nuestra propia red. En los routers comerciales al uso, normalmente esto ya viene implementado, y es algo por lo que no nos tenemos que preocupar. No obstante, en routers más avanzados, es una opción que hay que configurar a mano. La configuración básica, para una única máquina y un único puerto, la tenéis explicada en la wiki. No obstante, vamos a darle una vuelta de tuerca y a configurar esto para que el loopback funcione para todo el segmento de red y que, además, no tengamos que andar editando la regla de apartura de puertos del hairpin cada vez que necesitemos exponer un puerto nuevo. Para ello, vamos a hacer uso de una propiedad relativamente nueva en los routers mikrotik, llamada address-llists.
Primero, activamos el dominio ddns (primer truco)
Código:
/ip cloud set ddns-enabled=yes
Segundo, añadiremos nuestro dominio como una lista de direcciones, la cual vamos a llamar public-ip. Al hacerlo, el propio router resolverá nuestra IP pública, a la cual apunta el dominio,
/ip cloud
Código:
/ip firewall address-list add address=[/ip cloud get dns-name] list=public-ip
Código:
/ip firewall nat add action=masquerade chain=srcnat comment=hairpin-nat dst-address=[/ip dhcp-server network get 0 address] src-address=[/ip dhcp-server network get 0 address] place-before=0
Por último, creamos la apertura de puertos que queramos, pero con una pequeña modificación: ahora le diremos que el tráfico viene por nuestra IP pública. Al no tener una IP pública estática, no podremos usarla en el dst-address, pero como hemos creado la entrada en la lista de direcciones, podemos usar el dst-address-list como filtro. De esta manera no secuestramos todo el tráfico de nuestra red para ese puerto en cuestión, sino sólo el de entrada (el que tiene como destino la IP pública)
En este caso, abriremos el tráfico del puerto 443 externo (HTTPS) y lo redireccionaremos a la al puerto https de la consola de administración de nuestro equipo (supongo un servidor web situado en la IP 192.168.88.100 y con puerto de administración el 1234). Adaptar el ejemplo a vuestras necesidades:
Código:
/ip firewall nat
add action=dst-nat chain=dstnat comment=Web-Admin dst-address-list=public-ip \
dst-port=443 protocol=tcp to-addresses=192.168.88.100 to-ports=1234
Una vez hecho esto, podremos ingresar a nuestra consola de admin, tanto desde dentro de la red como desde fuera, usando nuestro dominio tipo https://serial.sn.mynetname.net, tráfico que acabará golpeando el puerto tcp interno 1234 de la máquina 192.168.88.100
Para el resto de puertos a abrir, seguiremos la misma técnica y en todos especificaremos el dst-address-list, en lugar del in-interface.
Truco: Aislar un equipo en una red aparte
Muchas veces tenemos la necesidad, bien por trabajo bien por cualquier otro tema, de aislar un equipo dentro de nuestra red. Para ello, no basta con asignar una IP o segmento de red distinta al equipo, sino que además tenemos que bloquear el tráfico que genera para que no acceda a nuestra red princpal, dado que, por defecto, todos los segmentos de red que se configuren en un router mikrotik se comunican entres sí.
Para montar una red independiente, lo primero que vamos a hacer es sacar el puerto físico donde vayamos a conectar el equipo (ether5 en mi caso) del bridge principal, el cual de normal aglutina los puertos del 2 al 5 (en el caso de equipos con 5 puertos ethernet). En este caso, saco ether5 del bridge principal llamado bridge1
Código:
/interface bridge port remove numbers=[find where interface=ether5]
Lo siguiente que haremos, será asignar un nuevo segmento de red para ese puerto. Por ejemplo, le daremos el segmento de red 192.168.99.1/24
Código:
/ip address add address=192.168.99.1/24 interface=ether5
Siguiente, creamos un pool de direcciones para dicho servidor, tan grande como nos interese. En mi caso, de 8 equipos, de la 3 a la 10.
Código:
/ip pool add name=pool-out-of-lan ranges=192.168.99.3-192.168.99.10
Y le añadimos un servidor DHCP a dicha interfaz, para no tener que preocuparnos de poner una IP estática en la máquina la cual conectemos a ese puerto. Primero el detalle de la red, luego el servidor propiamente dicho
Código:
/ip dhcp-server network
add address=192.168.99.0/24 dns-server=8.8.8.8,8.8.4.4 gateway=192.168.99.1
/ip dhcp-server
add address-pool=pool-out-of-lan disabled=no interface=ether5 name=dhcp-out-of-lan
Y por último, y más importante, añadimos las reglas de firewall que nos impedirán la comunicación entre ambas redes, dado que el mikrotik las comunica por defecto. Serán dos reglas (una por cada sentido del tráfico) en el chain de forward:
Código:
/ip firewall filter
add action=drop chain=forward comment="drop communication from LAN to new network" \
src-address=192.168.88.0/24 dst-address=192.168.99.0/24
add action=drop chain=forward comment="drop communication from new network to LAN" \
src-address=192.168.99.0/24 dst-address=192.168.88.0/24
Truco: Acceder a la ONT o el router que tengo conectado el puerto WAN [ether1]
Muchas veces tenemos la necesidad de acceder al router u ONT que usamos como WAN. Sin embargo, si estamos conectados al router mikrotik y estamos en otro segmento, no llegaremos a dicho equipo. La manera de hacerlo es muy sencilla.
Primero, creamos una IP del rango del equipo conectado al WAN, y se la asignamos a ether1. En mi caso tengo una ONT a la cual accedo con la dirección 192.168.100.1, de tal manera que he configurado la dirección 192.168.100.2 sobre ether1:
Código:
/ip address add address=192.168.100.2/24 interface=ether1 network=192.168.100.0
Y, a continuación, especifiamos que la interfaz física ether1 la considere como un puerto WAN (además de la VLAN o cliente PPPoE que use vuestra configuración original, la cual ya estará dada de alta como perteneciente a la lista WAN)
Código:
/interface list member add interface=ether1 list=WAN
Con estos dos sencillos pasos, ahora podremos abrir un navegador y, desde cualquier dispositivo conectado a nuestro router mikrotik, acceder a la dirección 192.168.100.1 [adaptarlo según necesidad de cada uno]
Truco: Usar el servidor DNS, como servidor local para un dominio de intranet.
Con la opción de IP -> DNS -> Allow remote requests, estamos convirtiendo nuestro equipo en un servidor DNS, el cual podrá hacer las funciones de DNS caché y de servidor local. Para esto último podemos crear entradas estáticas a las IP's locales de nuestros dispositivos, resolviendolos luego vía nombre.dominio.
Por defecto, el router habrá creado una entrada que apunta a la IP del propio equipo, la cual podemos resolver con un ping a router.lan. Siguiendo con ese dominio .lan, podemos seguir añadiendo dispositivos para luego resolverlos por nombre. Ejemplo:
Código:
/ip dns static add address=192.168.88.2 name=miequipo.lan
/ip dns static add address=192.168.88.3 name=miotroequipo.lan
...
etc
Bonus: una vez tengamos nuestros equipos, todos bajo un mismo dominio (puede ser el .lan o cualquier otro que nos guste más), podemos añadir este dominio a la lista de dominios de búsqueda en el DHCP, de tal manera que nos lo entregue como parte de los datos que facilita el router cuando un cliente le solicita una IP.
Código:
/ip dhcp-server network set number=[find where gateway=192.168.88.1] domain=lan
De esta forma, una vez el servidor DHCP nos entregue una dirección, también nos entregará su dominio de búsqueda, tal que ahora podremos invocarlo con un ping simplemente al nombre del equipo: ping router deberia responder de la misma manera ahora que un ping router.lan
Truco: Convertir tu routerboard en un switch (o un AP puro, en caso de tener wifi) [by @stargate4you]
Para cuando nos interese convertir nuestro router en un bridge, o en el caso de AP's inalámbricos los cuales no queramos usar con ninguna función de router, la solución es sencilla. Lo único que necesitamos hacer son los siguientes cambios:
- Dar un reset al equipo sin configuración, no necesitamos ni si quiera la configuración que sale del quick set.
- Crear el bridge principal y meter todas las interfaces que vayan a participar en el switch bajo dicho bridge. En el caso de un AP, meter también las interfaces físicas o virtuales correspondientes a los distintos radios.
- Borrar las listas de interfaces (si las hubiera), puesto que no las vamos a necesitar, así como el firewall o el NAT
- Crear un cliente dhcp sobre la interfaz del bridge
/ip dhcp-client add disabled=no interface=bridge
Truco: Filtrar web maliciosas a parte de tus equipos usando filtrado DNS [by @stargate4you]
Para cuando tenemos peques en la casa o simplemente queremos que se filtren las peticiones DNS a parte de nuestra red, podemos redirigir las peticiones DNS a un servidor público con filtrado, evitando así que los más peques de la casa accedan a contenido indeseado.
Código:
# Creamos una lista de IP's a las que se les va a aplicar el bloqueo
/ip firewall address-list
add address=192.168.1.151-192.168.1.254 list="Bloquear XXX"
#Redirigimos las peticiones DNS al DNS de Norton ConnectSafe
/ip firewall nat
add action=dst-nat chain=dstnat comment=\
"Redireccionar DNS a Norton Connectsafe" dst-port=53 protocol=udp \
src-address-list="Bloquear XXX" to-addresses=199.85.126.30 to-ports=53
Si queremos aplicarlo a toda la red, lo más sencillo es utilizar como servidor uptream de DNS uno que ya vaya filtrado. Por ejempo:
- Family shield, de OpenDNS: 208.67.222.123 / 208.67.220.123
- Cloudflare family:
- Anti malware: 1.1.1.2 / 1.0.0.2
- Anti malware + anti pornografía: 1.1.1.3 / 1.0.0.3
Código:
# Configurarmos nuestro servidor dns upstream apuntando al family de cloudflare anti malware
ip dns set servers=1.1.1.2,1.0.0.2
Y, si queremos personalizarlo, sólo hay que sacarse una cuenta en OpenDNS Home y configurar a nuestro gusto los filtros que queramos. Nos proveerán otros servidores DNS donde podremos personalizar qué tipo de filtrado queremos aplicar, los cuales, al igual que lo anterior, podremos usar para filtrar parte o todo el tráfico del mikrotik.
Truco: Fijar la MAC de nuestro equipo en el bridge, para no tener problemas en la asignación de direcciones dinámicas por DHCP
Hay veces que conectamos nuestros equipos como CPE/Bridge o puentes inalámbricos, y queremos que el resto de puertos ethernet del router funcionen como un simple switch. Normalmente, esto se consigue metiendo todas las interfaces ethernet+wifi en el mismo bridge, y levantando sobre él un cliente DHCP, el cual recibirá una dirección IP del router o equipo que tenga el servidor DHCP corriendo
Problemática: al meter todos los puertos en el bridge, incluido el puerto que hace de WAN, perdemos consciencia de que el bridge como tal no tiene una MAC propia, sino que la obtiene del primer puerto que se agrega al bridge. No es infrecuente que, al reiniciar, ese orden cambie, y la MAC asociada al bridge cambien también, haciendo que el servidor DHCP nos vea como otro equipo y nos de otra IP. Esto puede causar que perdamos conectividad, si a ese equipo le tenemos hecho un lease y reservado una IP para, por ejemplo, una apertura de puertos. Se me ocurre el caso típico del router haciendo de swtich (bridge mode) + servidor VPN.
Solución: simplemente tenemos que elegir una MAC, de entre los puertos que conforman el bridge que lleva el cliente DHCP levantado, y ponerla como MAC de administración en el bridge. Normalmente, yo suelo elegir la MAC del puerto que hace de WAN. Ejemplo: router con 5 puertos ethernet y una wifi, la cual hace de WAN, dentro del mismo bridge, donde le otorgo la MAC de la interfaz inalámbrica, como MAC de administración a dicho bridge.
Código:
/interface bridge
add admin-mac=48:8F:5A:95:2E:03 auto-mac=no comment=defconf name=bridge
/interface bridge port
add bridge=bridge comment=defconf interface=ether1
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge interface=wlan-wan
Truco: Configurar un script para duckdns.org en mikrotik y programarlo para ejecución automática.
Por si no os gusta el dominio que os regala el propio mikrotik y sois usuarios de este servicio, podéis usarlo también en vuestro equipo. Lo único que tendréis que dar de alta será un script que actualice el dominio con vuestra dirección pública, y meterle un programador para correrlo periódicamente. El script está recogido de la propia web de duckdns, y simplemente parametrizado en las tres primeras líneas, para que sólo tengáis que cambiar los valores de dichas variables globales, "wanInterface", "domain" y "token", las cuales corresponden a la interfaz por la cual obtenéis IP pública. El script es el siguiente:
Código:
# Modificad las siguientes tres asignaciones de variables, relativas a la interfaz wan, el dominio y el token, con vuestros datos. Se cambia lo que va entrecomillado.
# Poned aquí la interfaz por la que te conectas a internet, ejemplo:
:global wanInterface "ether1"
# Poned aquí el dominio duckdns que queramos mantener actualizado, ejemplo:
:global domain "pericoeldelospalotes.duckdns.org"
# Poned aquí el token que nos da duckdns para nuestra cuenta, ejemplo:
:global token "fc8e6521-35b8-1234-b915-db6345a31c75"
# Inicio del Script
:global actualIP value=[/ip address get [find where interface=$wanInterface] value-name=address];
:global actualIP value=[:pick $actualIP -1 [:find $actualIP "/" -1] ];
:if ([:len [/file find where name=ipstore.txt]] < 1 ) do={
/file print file=ipstore.txt where name=ipstore.txt;
/delay delay-time=2;
/file set ipstore.txt contents="0.0.0.0";
};
:global previousIP value=[/file get [find where name=ipstore.txt ] value-name=contents];
:if ($previousIP != $actualIP) do={
:log info message=("Try to Update DuckDNS with actual IP ".$actualIP." - Previous IP are ".$previousIP);
/tool fetch mode=https keep-result=yes dst-path=duckdns-result.txt address=[:resolve www.duckdns.org] port=443 host=www.duckdns.org src-path=("/update?domains=$domain&token=$token&ip=".$actualIP);
/delay delay-time=5;
:global lastChange value=[/file get [find where name=duckdns-result.txt ] value-name=contents];
:global previousIP value=$actualIP;
/file set ipstore.txt contents=$actualIP;
:if ($lastChange = "OK") do={:log warning message=("DuckDNS update successfull with IP ".$actualIP);};
:if ($lastChange = "KO") do={:log error message=("Fail to update DuckDNS with new IP ".$actualIP);};
};
Para ello, primero damos de alta el script en System -> Script, pulsando el botón +. Seleccionamos todos los permisos que vienen por defecto y pegamos el script en el campo en blanco.
Luego, damos de alta un programador en System -> Scheduler, y le decimos que corra el script, por ejemplo, cada 30 minutos. Simplemente rellenamos los datos y, en el cajetín en blanco, ponemos el nombre con el cual guardamos el script previamente, en mi caso, "duckdns"
Con esto y un bizcocho, duckdns funcionando en mikrotik. Si todo ha ido bien, veréis una líneas como estas en el log, cuando corra el script:
Truco: Reserva de direcciones estáticas sobre direccionamiento dinámico DHCP
Este truco es realmente sencillo, pero acabo de darme cuenta de que no estaba documentado. Muchas veces tenemos la necesidad de asignar una IP fija (estática) a una máquina concreta, dentro de nuestra red. Por ejemplo, cuando tenemos un servidor web, de vpn, o cualquier otro tipo de máquina que lleve un mapeo de puertos. Obviamente, dado que el mapeo de puertos va asociado a una IP concreta, nos interesa que se le otorgue siempre la misma IP a dicho equipo y que no cambie, o el mapeo de puertos nos funcionará relativamente poco tiempo.
Mucha gente tiene la tentación de asignar IP's a mano dentro de los equipos (ip, máscara, puerta de enlace y dns) y para mi esto es un grandísimo error. No es que per se esto está mal, que no lo está, pero es un paso atrás enorme: empiezas a distribuir distintas configuraciones por distintos equipos, en lugar de centralizar la configuración en el router. Si mañana cambias tu router principal, te va a tocar modificar a mano ese equipo, a menos que respetes con pelos y señales cada detalle que pusiste. Y, cuando tienes una máquina...ni tan mal. Pero, ¿y cuando tienes 30 interruptores en casa domotizados? O cuando tienes 50 impresoras en una empresa.. ¿vas a querer ir metiendo la IP de cada una a mano? Obviamente no, para esto está el servidor DHCP, que nos entrega direcciones automáticas. Pero, ¿podríamos hacer que también las entregue estáticas? Pues sí, vinculando la IP que queremos entregar a la MAC address o dirección física del dispostitivo en cuestión.
Para hacerlo, tenemos dos opciones:
- Abriendo un agujero en el pool de direcciones del DHCP: esta opción no es necesaria, aunque sí puede ser conveniente si vamos a mezclar reserva de direcciones estáticas en el DHCP con las que nosotros metamos a pelo en los dispositivos. Si mi pool de direcciones va de la 192.168.88.2-192.168.88.254, puedo modificar el comienzo y decirle que arranca en el 20, y así asinar de la 2 a la 20 esas direcciones como las estáticas. El pool iría entonces de la 192.168.88.20 - 192.168.88.254, y cuando diera de alta una IP estática en la reserva, la asociaría a un número del 192.168.88.2 al 192.168.88.19.
- Sin abrir dicho agujero: simplemente vamos a asociar una IP del rango del pool a una MAC concreta. El propio servidor DHCP se encargará de reservar esa dirección para entregarla sólo a la dirección MAC asociada, ignorándola en la asignación normal de direcciones dinámicas.
Una vez hecho esto, pasan dos cosas: la primera, se quita la "D" que aparece en la primera columna, y que nos indicaba que la entrada era dinámica. La segunda: que dicha entrada se vuelve editable, y podemos volver a hacer doble click en ella y modificar ahora su dirección IP. En ese momento, le otorgaremos la dirección que queramos que tome, y dicha dirección será entregada en el siguiente proceso de renovación del lease del DHCP (cuando el cliente vuelva a preguntarle al servidor, "oye, dame u na IP", y este le conteste con la reservada, en lugar de decirle "quédate con la dinámica que ya tienes"), lo cual pasa a la mitad del tiempo del Lease que tengáis configurado. Por defecto está en 10 minutos, así que las IP's renuevan cada 5. No pasa nada porque escojáis una IP que ya está en uso dinámico para la reserva, y asignada a otra máquina: el servidor DHCP es inteligente, y se quedará con la tarea de desasignar esa IP a quien la tiene como dinámica, y asignarle otra nueva en el siguiente lease. Puede que os de un warning en el log, avisando de ello, pero lo resuelve él solito. La reservada siempre manda sobre el resto.
Por último comentaros que el servidor DHCP de mikrotik es de lo mejorcito que tienen estos equipos. Lo he visto funcionando sin pestañear incluso otorgando direcciones por intenet sobre una conexión pésima a través de túneles EoIP. Así que creo que no hay razón alguna para seguir metiendo IP's a mano en los dispositivos finales, or recomiendo enfáticamente no hacerlo y usar esto en su lugar. Y creedme cuando os digo que es capaz de manejar una tabla de leases con muchos muchos equipos, sin mayor problema.
Truco: Programación de un botón para ejecutar un script [by @stargate4you]
MANUAL: Mikrotik, tips & tricks | Mikrotik
Página 4. Hilo del foro dedicado a MANUAL: Mikrotik, tips & tricks. Hola, En esta ocasión quiero arrancar un nuevo post a modo colaborativo, de igual modo que hice con el de las cofiguraciones básicas de los ISPs....
Truco: Notificar vía mail una nueva IP asignada por el servidor DHCP [by @Mikroberto]
Recibir un aviso por mail cuando un nuevo cliente recibe IP dinámica por DHCP. Es muy útil para detectar conexiones nuevas, pero las IPs de equipos conocidos, lo suyo es cambiarlas a estáticas
Lo he sacado de:
get Alert by email on new Device - MikroTik
forum.mikrotik.com
1. Configurar e-mail
Código:
/tool e-mail set address=usuario.servidor.com from=nombre@dominio.com password=tucontraseña port=465 start-tls=tls-only user=nombre@dominio.com
2. Configurar alerta
Esto debería ir en la caja de script del servidor dhcp en el que quieres que se ejecute - no en la pestaña de alertas.
Código:
:local recipient "destinatario@correo.com"
/ip dhcp-server lease
:if (($leaseBound=1) && ([/ip dhcp-server lease find where dynamic mac-address=$leaseActMAC]!="")) do {
:do {
:tool e-mail send to=$recipient subject="NUEVA CONEXION [MAC: $leaseActMAC]" body="La siguiente dirección MAC [$leaseActMAC] recibió la dirección IP [$leaseActIP] del servidor DCHP del router Mikrotik [$leaseServerName]"
:log info "Envío de alerta DHCP para la MAC $leaseActMAC"
} on-error={:log error "Error al enviar alerta por correo a $recipient"}
Truco: DHCP condicional para asignar distintos DNS dentro de tu mismo pool.
En ocasiones nos interesa que un equipo o equipos dentro de nuestra red se salten la configuración por defecto que tenemos definido para el DHCP de dicha subred. Ejemplo: tengo un pi-hole en la red que me filtra publicidad, pero quiero que un equipo o ciertos equipos se saltan dicho DNS y usen otro menos restrictivo.
Hay varias maneras de hacer lo mismo, os planteo tres de ellas, aunque hay más.
Otorgar un DNS específico para una única IP de nuestra subred
- Creando una nueva red /32 para esa IP en particular
En este caso es tan sencillo como dar de alta la IP en IP -> DHCP Server -> Networks, y asignarle a esa IP las DNS que queramos. Luego, reservaríamos esa dirección vía Lease estático, y así sabríamos que, a esa dirección, siempre se la va a a dar el DNS específico. Imaginemos que le queremos dar las DNS de google a la IP 192.168.88.2 de nuestra red, teniendo ya la 192.168.88.0/24 definida en networks con otro DNS
Código:/ip dhcp-server network add address=192.168.88.2/32 dns-server=8.8.8.8,8.8.4.4 gateway=192.168.88.1 # Suponemos AA:BB:CC:11:22:33 -> dirección física del equipo en cuestión /ip dhcp-server lease add address=192.168.88.2 mac-address=AA:BB:CC:11:22:33 server=dhcp-lan
- Otorgar un DNS específico para un rango de red, dentro de nuestro pool principal
La idea es la misma, pero esta vez jugando con la máscara de subred. Por ejemplo, asignaremos un DNS distinto a los equipos de la 192.168.88.248-192.168.88.254. Luego será tan simple como hacer un lease estático que caiga en ese rango, para que obtengamos el DNS alternativo.
Código:/ip dhcp-server network add address=192.168.88.248/29 dns-server=8.8.8.8,8.8.4.4 gateway=192.168.88.1 # Suponemos AA:BB:CC:11:22:33 -> dirección física del equipo en cuestión /ip dhcp-server lease add address=192.168.88.250 mac-address=AA:BB:CC:11:22:33 server=dhcp-lan
- Otorgar un DNS distinto, usando una la opción 6 del DHCP (dhcp options)
Para esto, es tan fácil como dar de alta la opción 6 del DHCP, apuntando a los DNS específicos. Luego, asignaremos esa opción a la IP o IPs que nos interese sacar por otro DNS, vía Lease.
Código:/ip dhcp-server option add code=6 name=freeads value="'8.8.8.8''8.8.4.4'" # Suponemos AA:BB:CC:11:22:33 -> dirección física del equipo en cuestión /ip dhcp-server lease add address=192.168.88.2 dhcp-option=freeads mac-address=AA:BB:CC:11:22:33 server=dhcp-lan
De estas distintas formas, y alguna más enrevesada también, (vía NAT) podemos sobrescribir la configuración DNS que tengamos otorgada por defecto a nuestra subred.
Truco: Cambiar el segmento LAN de mi router, una vez está funcionando
Aquí os dejo un pequeño script para cambiar la LAN de un router que ya está funcionado. Se trata de definir las cuatro variables de entorno que aparecen en la cabecera del script, subirlo a la carpeta files y ejecutarlo desde terminal. Una vez hagáis el import desde terminal, la terminal bloqueará, pero no os preocupéis, es por el cambio de IP del bridge o la interfaz LAN principal. Simplemente desconectad el cable de red que os une al router, o apagar y encender la interfaz inalámbrica si estáis por wifi, y debería daros ya una IP del segmento nuevo.
Código:
############### CABECERA ##################
:local newRouerIP "192.168.90.1"
:local newRouterPool "192.168.90.2-192.168.90.254"
:local mainPoolName "dhcp1"
:local mainLanInterface "bridge"
########### FIN DE LA CABECERA #############
/ip pool set [find name=$mainPoolName] ranges=$newRouterPool
/ip address set [find interface=$mainLanInterface] address="$newRouerIP/24"
/ip dhcp-server network set 0 address=\
[/ip address get [find interface=$mainLanInterface] network] \
gateway=$newRouerIP dns-server=$newRouerIP
/log/info "Router LAN successfully updated"
Bonus: para los que tengan la buena costumbre de acceder al equipo por ssh, si renombráis el fichero a "loquesea.auto.rsc" y lo subís por SFPT/FTP, el import se ejecutará automáticamente tras subirlo, generando un fichero de log "loquesea.auto.log" con el resultado de la operación. Así se subiría el fichero script.auto.rsc por sftp:
Código:
sftp USER@IP_DEL_ROUTER:/ <<< $'put ./script.auto.rsc'
Truco: Certificado SSL de let's encrypt para nuestro dominio DDNS cloud o cualquier otro dominio propio (sólo v7)
Se trata de que podamos sacar un certificado de let's encrypt para poder acceder al router de manera segura, usando https. Sigo sin recomendar abrir esto a internet, pero si no tenéis más remedio o queréis usar vuestro propio dominio y queréis que sea el router quien lo mantenga actualizado automáticamente, ahí va:
Lo primero, preparamos el router para recibir la petición de let's encript. Abrimos en input el tráfico al puerto 80. Una vez expedido el certificado, borrad esta regla, ya que no es necesaria para mantener el certificado actualizado.
Código:
/ip firewall filter
add action=accept chain=input dst-port=80 protocol=tcp comment=letsencrypt-challenge-TO-DELETE \
place-before=[find where comment="defconf: drop all not coming from LAN"]
Hecho esto, solicitamos el certificado. Si no especificamos la opción dns-name, lo pedirá para el dominio de mikrotik, el que viene en IP -> Cloud. Sino, lo pedirá para el subdominio que le indiquemos, siempre y cuando ese subdominio lo hayamos apuntando previamente, en nuestra consola de admin del dominio, a nuestra IP pública, de una u otra manera (por ejemplo, con un CNAME al dominio de mikrotik)
Código:
# Instrucción para un domino propio
/certificate/enable-ssl-certificate dns-name=router.midominio.com
# .... ó ....
# Instrucción para que genere el certificado con el DDNS de mikrotik que encontraréis en IP -> Cloud
/certificate/enable-ssl-certificate
Hecho esto, veréis que la regla de firewall de input que hemos creado recibe una pequeña cantidad de paquetes. Es el servidor de let's encrypt, tratando de verificar que el certificado lo estamos emitiendo para un dominio nuestro, que poseemos y apunta a nuestra propia IP pública (ACME challenge). Acabado el proceso, si vais a IP -> Services, veréis que se ha habilitado el servicio "www-ssl" el cual escucha en el puerto 443, y apunta al certificado que acabamos de emitir. El certificado firmado por let's encrypt lo tenéis en System -> Certificates.
Hecho esto, podéis comprobar que el certificado funciona poniendo https://serial.sn.mynetname.net, siendo "serial" el número de serie de vuestro equipo, que ya sabéis donde podéis encontrar. O, si lo emitisteis para un domino propio, https://router.midominio.com, siguiendo con el ejemplo.
Si queréis acceder al equipo desde internet, cambiad la regla de input que creamos en el paso uno y, en lugar del puerto 80, modificarlo al 443, y ya podréis acceder al router desde internet con la URL https del dominio correspondiente. No os lo recomiendo, pero ahí lo tenéis, en caso de necesitarlo.
Truco: Bloquear una web https de manera sencilla (a crédito del último vídeo tutorial de mikrotik)
Si queremos bloquear una página https de manera sencilla, podemos hacerlo con una simple regla de drop en el firewall filter. Nos va a hipotecar el tema del fasttrack, pero es tan sencilla la solución que creo que merece la pena mencionarla. Imaginemos que queremos bloquear el acceso a htttps://www.amazon.es
Lo primero que miraríamos sería el certificado SSL de dicha página web. Dependiendo de vuestro sistema operativo y vuestro navegador, es algo que soléis tener en el candadito que sale cuando tipeais la direccón en la barra de direcciones del navegador.
Hecho esto, veremos que, si queremos bloquear amazon.es, deberemos bloquear el denominador común de todos esos dominios DNS, "*amazon.es", usando el asterisco como wildcard. Hecho este análisis, simplemente creamos una regla de drop y especificamos ese patrón en el apartado TLS host de las opciones del filter. Al mismo tiempo, deshabilitaremos fasttrack para bloquear cualquier conexión ya establecida que nos permita saltarnos la regla de drop. La regla de drop bloquearía el tráfico TCP que viene de mi LAN y va con destino ese matcher TLS. La posición de la regla, la pondríamos delante de la regla de fasstrack, o incluso la primera del chain de forward.
Código:
/ip firewall filter
set [find comment="defconf: fasttrack"] disabled=yes
add action=drop chain=forward in-interface-list=LAN protocol=tcp \
tls-host=*amazon.es place-before=[find comment="defconf: fasttrack"]
Como explica el vídeo, el matcher revisa los certificados de las conexiones httpsm donde están los nombres de dominio a los que vamos a conectar. Si hay match, se aplica la regla. Es tremendamente efectiva (mucho más que un bloqueo en L7) y apenas consume recursos.
Saludos!
...
Si tenéis aguno más que queráis ver aquí, no dejéis de compartirlo. Seguro que tenéis más de uno que yo no me sé
Saludos!
Última edición: