«Me lo contaron y lo olvidé; lo vi y lo entendí; lo hice y lo aprendí».

— Confucio

Configuración base de router MikroTik – WISP desde cero

Primer acceso al CCR MikroTik

Nuestro primer acceso a nuestro router MikroTik será a través de WinBox. Para descubrir nuestro router y acceder a él, usaremos el apartado Neighbors, en el cual nos aparecerá nuestro router y accederemos a él mediante la MAC, el usuario es “admin” y la contraseña es en blanco. Más información sobre Como acceder a RouterOS de MikroTik.

Eliminar la configuración por defecto

Lo primero es resetear nuestro router para eliminar cualquier configuración por defecto. Seleccionaremos que no tenga la configuración por defecto y que no realice ningún Backup. Más información sobre Resetear Router y configuración por defecto de MikroTik.

Actualización del CCR

Nos reconectamos de nuevo a través de WinBox. Actualizamos el router a la versión más reciente estable, para subsanar los posibles fallos de las versiones anteriores. Más información sobre Actualización de RouterOS y RouterBOARD.

Configuración de WAN y LAN

En Interface List, añadimos comentarios a las diferentes interfaces para saber dónde conectamos cada dispositivo, en este caso la WAN va a ir al puerto ether1.

En este caso, la IP de nuestra WAN nos la facilitan a través de un servidor DHCP, por lo que crearemos en el puerto ether1 un cliente DHCP.

Si la ruta por defecto no se configura o queremos una ruta distinta, lo configuraremos en Routes, y estableceremos que todo el trafico (la ruta 0.0.0.0/0) que salga por la puerta de enlace que nos han facilitado por DHCP.

Si disponemos de IP estática la configuraremos en nuestra WAN y crearemos una ruta por defecto en Routes

Crearemos ahora la red para LAN con la que le daremos servicio a nuestros clientes. La asignaremos al puerto al que estamos conectados para comprobar que funcione correctamente.

Ahora crearemos una masquerade, que es el método para enmascarar las direcciones IP privadas con la IP publica de la que disponemos. Es básicamente realizar un NAT. Para ello vamos a crear una masquerade por cada WAN que tengamos, en este caso en el ether1.

Comprobaremos desde nuestro equipo que tenemos conexión a internet.

DNS

Configuramos el apartado de los DNS, en ocasiones nuestro proveedor de internet nos provee de unos DNS a través del servidor DHCP.

Bridge

Una vez comprobado que funciona, crearemos un Bridge, eso nos ayudara a unir varios puertos como si fuese un switch para asignar las IPs a todos los puesto a la vez para conectar diferentes equipos a estos puertos. De esta forma podemos crear un servidor DHCP, PPPoE… y asignarlos de una forma rápida a todos los puertos.

Creamos el Bridge.

El Fast Forward solo podremos habilitarlo cuando el bridge solo tenga dos interfaces asignadas.

Y asignamos los puertos que queramos que formen parte de él.

Una vez hecho esto, asignamos la IP de la LAN al Bridge.

Fecha y hora

Para que nuestro equipo este bien sincronizado y con la hora y uso horario correcto, debemos de configurarlo. En este caso vamos a usar los servidores de Google (time.google.com con la IP 216.239.35.8) y los de Microsoft (time.windows.com con la IP 51.145.123.29), y el uso horario de Madrid.

Identificador CCR

Le asignaremos un nombre a nuestro CCR para identificarlo.

Rango IP para administración

Le asignaremos al bridge un rango de IPs para que los equipos de administración y los APs. Se podria crear un rango para cada uno si así se quisiera.

Usuarios de administración

Crearemos los distintos usuarios que van a administrar nuestros CCR.

Servicios RouterOS

Para mejorar la seguridad quitaremos los servicios que no vayamos a utilizar y cambiaremos el puerto de acceso al CCR por WinBox. Esto nos ayudara a prevenir algunos ataques.

Configuración email

Configuraremos el email para el envío de mensajes, ya sea de alarmas, copias de seguridad, etc.

Backup por email

:local correo "xxxxxxxxxx@sysadminpro.es";
:local Name [/system identity get name]


/system backup save dont-encrypt=yes name=$Name
:delay 3s
/export file=$Name
:delay 3s

/tool e-mail send to=$mailTo subject=($Name . " BACKUP") body=("Backup generado con la version ".[/system package update get installed-version]." instalada. Este backup solo se podra recuperar sobre esa misma version. Y solo es valido para este Mikrotik, Modelo ".[/system resource get board-name]) file=($Name . ".backup")

:delay 3s

/tool e-mail send to=$mailTo subject=($Name . " EXPORT") body=("Backup generado con la version ".[/system package update get installed-version]." instalada. Este backup solo se podra recuperar sobre esa misma version. Y solo es valido para este Mikrotik, Modelo ".[/system resource get board-name]) file=($Name . ".rsc")

Para esta función utilizaremos las herramientas de Scheduler (el lanzador) y Script (el proceso).

En Scheduler crearemos un lanzador para los dos Script para los backup.

/system script run backupscript
/system script run mailscript

El primer Script nos crea los archivos de backup. Uno es un backup en binario y otro un export.

/system backup save dont-encrypt=yes name=NX-XX-CIUDAD.backup
/export file=CCRNXCIUDAD

Con el segundo script enviaremos las copias de seguridad por email

/tool e-mail send file=NX-CCRX-CIUDAD.backup to=EMAIL@EJEMPLO.com subject=[/system identity get name]
/tool e-mail send file=CCRNXCIUDAD.rsc to=EMAIL@EJEMPLO.com subject=[/system identity get name]

DNS dinámico

Para acceder desde fuera de la red sin la dirección IP podemos establecer una DNS dinámico, MikroTik ya nos provee de uno de forma gratuita.

También podemos establecer uno de otra compañía, como No-IP, DYNDNS, etc. Para esto crearemos como en el anterior paso un ejecutable y un script para lazar la sincronización con el dominio.

#************************************************************************************************
# Parameters
#************************************************************************************************
:local username "user"
:local password "pass"
:local hostname "dominio.noip.com"

#availabe options: "http" or "iface"
# - http: will query an external server and discover you public ip (userful for NATted connections)
# - iface: will use the ip address assigned to the $iface interface (see below)

:local discoverBy "iface"

# interface used to get ip address from (only if discoverBy = iface)

:local iface "Interfaz de salida"

# current available services: "dyndns", "noip" and "changeip"
:local service "noip"

# number of days to force an update if your IP did not change (helps keeping your account active)
:local forceUpdate 15

#************************************************************************************************
# do not change below this unless you know what you are doing
#************************************************************************************************

:local force
:global lastUpdate
:local currentIP

:if ($discoverBy="http") do={ 
   /tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
   :local result [/file get dyndns.checkip.html contents]
   :local resultLen [:len $result]
   :local startLoc [:find $result ": " -1]
   :set startLoc ($startLoc + 2)
   :local endLoc [:find $result "</body>" -1]
   :set currentIP [:pick $result $startLoc $endLoc]
} else={
   :set currentIP [ /ip address get [find interface=$iface disabled=no] address ]
   :for i from=( [:len $currentIP] - 1) to=0 do={
      :if ( [:pick $currentIP $i] = "/") do={ :set currentIP [:pick $currentIP 0 $i] } 
   }
}

#get IP from DynDNS for our hostname
:local resolvedIP [:resolve $hostname]

# get current date in format mm/DD/YYYY
:local date [ /system clock get date ]

# convert to YYYYMMDD
:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
:local month [ :pick $date 0 3 ]; :local day [ :pick $date 4 6 ]; :local year [ :pick $date 7 11 ];
:local mm ([ :find $months $month -1 ] + 1);
:if ($mm < 10) do={ :set month ("0" . $mm); } else={ :set month $mm; }
:set date ($year . $month . $day);

:if ([ :typeof $lastUpdate ]=[:nothing] || (($date-$lastUpdate) >= $forceUpdate  && $forceUpdate > 0)) do={ 
   :set force true 
}

:put ("Current IP: $currentIP ($discoverBy), Last update: $lastUpdate")

# Determine if dyndns update is needed
:if (($currentIP != $resolvedIP) || ($force = true)) do={
    
    :if ($service = "dyndns") do={
       /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "noip") do={
       /tool fetch user=$username password=$password mode=http address="dynupdate.no-ip.com" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "changeip") do={
       /tool fetch user=$username password=$password mode=http address="nic.changeip.com" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
   
    :local result [/file get output.txt contents]
    :log info ("dynamic-dns-updater: Service = $service, Hostname = $hostname")
    :log info ("dynamic-dns-updater: CurrentIP = $currentIP, Resolved IP = $resolvedIP")
    :log info ("dynamic-dns-updater: Update result: ".$result)
    /ip dns cache flush
    :set lastUpdate $date
}

Servidor PPPoE

Crearemos un nuevo pool IP para los clientes, que después signaremos a el perfil PPPoE.

Configuraremos un perfil para nuestros clientes, para ello copiaremos el perfil «default» y lo modificaremos. (en el perfil default, hay que añadir en Queue una Queue Type de wireless-default).

Ahora crearemos el servicio de PPP.

Adicionalmente podemos crear distintos perfiles de velocidad para nuestros clientes, si no vamos a utilizar Radius.

Ahora en Secrets crearemos un usuario para comprobar que nos podemos conectar.

Una vez conectado el usuario podemos verlo en Active connections.

Ping Watchdog

En ocasiones nuestros CCR pierden la conexión a la red WAN porque los túneles, PPPOE, DHPC, etc. se quedan bloqueados, para ello esta la utilidad Watchdog, la cual una vez que pierde ping a una IP reinicia los CCR en un tiempo indicado (en este caso 10 min), y una vez reiniciado si sigue sin ping a la IP establecida estableceremos otro tiempo para el próximo reinicio hasta que tenga ping (En este caso 30 min) .

Con esto ya estaría hecha la configuración básica de nuestro router.