1. Configuración de Router Mikrotik¶
En esta práctica se preparará una plantilla de router Mikrotik.
xxxx x xxx
xxx xx
xxxxxxxx xx
┌───────────┐ xx x
│ ROUTER │ xx x
│ default ├───────────xx internet x
│ isard │ xx x
└─────┬─────┘ xxxxxx x
│.1 x xx x x x x x x
│ red default
──┬────────────────┴────────────────────────────
│ 192.168.120.0/22
│
dhcp │.x.y
┌──────┴────────────┐
│ inet │
│ │
│ ESCRITORIO │dhcp red wireguard-vpn
│ ROUTER ISARD vpn├───────────────────────────────────────┬────────
│ │.X.Y 10.2.0.0/16 │
│ lan1 │ │.0.1
└──────┬────────────┘ ┌───────┴────────┐
│.1 │ FIREWALL │
│ red personal 1 │ ISARD │
───┴────────┬────────────────────── └──────┬─────────┘
│ 192.168.88.0/24 │
dhcp│.X │
┌──────┴──────┐ ┌┴┐
│ eth0 │ │V│
│ │ │P│
│ ESCRITORIO │ │N│
│ │ └┬┘
│ acceso │ │10.0.X.Y
│ a internet │ ┌──────────┴──────────┐
│ por red │ │ wireguard │
│ personal │ │ │
│ │ │ MI PC │
│ configurar │ │con fichero wireguard│
│ mikrotik │ │ de usuario isard │
└─────────────┘ │ │
└─────────────────────┘
Mikrotik RouterOS en IsardVDI¶
Necesitaremos un escritorio con sistema operativo RouterOS de Mikrotik para dar salida a internet a un escritorio que se conectará a la red personal. Este router hará NAT "MASQUERADE" hacia la red Default (salida a Internet), lo que significa que reemplazará la IP de origen de los dispositivos internos con su propia IP pública para que puedan navegar por Internet. También tendrá un servidor DHCP. Se podrá acceder al router a través de la red VPN personal para poderlo configurar con más practicidad desde nuestro PC.
Esta configuración puede servir de base para otras prácticas más complejas de redes que hay en los siguientes apartados.
Crear escritorio con routerOS base clonando el disco desde una imagen¶
Creamos un escritorio virtual basado en una ISO del sistema Rescue CD.
Arrancamos el sistema Rescue CD.
Una vez dentro del escritorio, hacemos varias configuraciones:
# Cambiamos el teclado a Español
setkmap es
# Quitamos reglas de Firewall y configuramos la política por defecto ACCEPT
# iptables -X: Elimina todas las cadenas de reglas personalizadas menos las predeterminadas.
# iptables -F: Borra todas las reglas dentro de todas las cadenas.
# iptables -P INPUT ACCEPT: Establece la política predeterminada para la cadena INPUT.
# Todas las conexiones entrantes serán aceptadas por defecto
iptables -X; iptables -F; iptables -P INPUT ACCEPT
Verificamos que no quedan reglas de Firewall y que el servicio de SSH está escuchando:
iptables-save
ss -tlnp
# La salida esperada de estos comandos es:
[root@sysrescue ~]# iptables-save
*filter
:INPUT ACCEPT [78:13518]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [172:18618]
:LOGDROP - [0:0]
COMMIT
[root@sysrescue ~]# ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=375,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=375,fd=4))
Cambiamos la contraseña de root:
Si queremos conectarnos por SSH desde nuestro equipo
Si queremos entrar al sistema desde nuestro PC, es suficiente con acceder por SSH porque no tiene interfaz gráfica. Para ello, podemos seguir esta guía:
Nos dirigimos a la web de mikrotik, donde podremos ver los enlaces de descarga de todas las versiones:
Buscamos la imagen estable más reciente, en su versión img. Es importante que tenga este formato: chr-VERSION-img.zip. Actualmente, la última estable es: chr-7.18.2.img.zip.
La URL de descarga de esta versión es:
En la misma web de descargas nos indica la firma sha256 de cada archivo (la cual variará para cada archivo y versión) que nos servirá para comprobar si el archivo que descomprimiremos más tarde es auténtico. En el caso del archivo y versión que usaremos para esta práctica, la firma es: 5452ab6b298458a3e266e2cdd4cf664cddbe44f5861991843d5924e3fa4d576f
Con el siguiente comando observamos que se dispone de 4 GB en el directorio temporal para descargar la imagen:
Podemos descargar el fichero en el directorio /tmp y verificar la firma:
wget -O /tmp/routeros.img.zip https://download.mikrotik.com/routeros/7.18.2/chr-7.18.2.img.zip
sha256sum /tmp/routeros.img.zip
Una vez verificada que la firma es válida, descomprimimos el contenido:
Esto descomprime un fichero con una imagen de disco de 128M:
[root@sysrescue /tmp]# ls -lh /tmp/*.img
-rw-r--r-- 1 root root 128M Apr 17 13:50 /tmp/chr-7.18.2.img
Ahora hemos de clonar esta imagen en el disco virtual /dev/vda:
[root@sysrescue /tmp]# hdparm /dev/vda
/dev/vda:
readonly = 0 (off)
readahead = 256 (on)
geometry = 41610/16/63, sectors = 41943040, start = 0
Para ello usaremos la herramienta dd:
# if: input file, en este caso el fichero de imagen de disco.
# of: output file, en este caso es un dispositivo de disco virtual.
# bs: tamaño de bloque de lectura y escritura, para ficheros grandes agiliza la escritura que si no por defecto se hace en bloques pequeños.
# status: le indica que queremos ir viendo el progreso, útil si el fichero fuera muy grande; en nuestro caso, será casi instantáneo.
dd if=/tmp/chr-7.18.2.img of=/dev/vda bs=1M status=progress
Ahora podemos apagar el escritorio virtual con:
Ahora podemos editar el escritorio, y prepararlo para crear una plantilla.
Al editar, le modificamos estos parámetros:
- vCPUs: podemos dejar las 2 vCPUs que habíamos puesto antes.
- Memoria (GB): reducir la memoria a 1 GB.
- Boot: cambiar de CD/DVD a Hard Disk
- Redes: podemos añadir más o modificarlas en función de lo que deseemos que quede fijado en la plantilla, luego los alumnos la pueden cambiar al crear el escritorio. Es habitual que la primera interfaz sea la de salida a internet (default), la segunda la de acceso a la red de VPN (WireGuardVPN) y la tercera interfaz estará conectada a la red personal (Personal1).
- Quitar ISO de system Rescue CD.
- Opcional: añadimos una imagen a la card del escritorio.
Una vez hechos los cambios de hardware, , con el siguiente nombre: routeros 7.18.2
Ahora ya podemos seguir trabajando con nuestro escritorio, que ahora estará basado en esta nueva plantilla.
Configuración inicial mikrotik¶
Una vez encendido el escritorio, arrancará con la imagen de mikrotik y nos dará acceso a su línea de órdenes, como si nos hubiésemos conectado por primera vez al router vía Telnet o puerto en serie. Ha de aparecer por pantalla una salida como en la de la siguiente imagen:
Entramos con:
-
Login: admin
-
Password: (pulsamos enter, ya que no tiene contraseña todavía)
Lo primero que nos pide es registrar una contraseña. En este caso, le pondremos la contraseña habitual de nuestras plantillas "pirineus". Y accedemos al prompt de mikrotik:
Verificamos que tiene salida a Internet:
Preparar escritorio para conexión SSH desde nuestro equipo
Si queremos entrar al sistema desde nuestro PC, es suficiente con acceder por SSH porque no tiene interfaz gráfica. Para ello, podemos seguir esta guía:
Antes de proseguir, nos interesa poder trabajar más cómodamente con una terminal donde podamos hacer copia y pega de comandos. El visor, al no tener interfaz gráfica, no permite usar el portapapeles entre el escritorio virtual y nuestro equipo.
Para ello, se ha de habilitar la interfaz de WireGuard VPN. Y indicar al router que esta interficie ha de obtener una dirección IP dinámica por DHCP. La red de WireGuardVPN ofrece una IP dinámica pero sin gateway por defecto.
Revisamos que las interfaces activas y sus correspondientes nombres:
Comprobamos que la segunda interfaz, la de WireGuardVPN, se llama ether2. (dependiendo de la posición en la que se encuentre la interficie al editar el escritorio virtual).
Configuramos la dirección IP por DHCP, y esperamos hasta que la obtenga:
Revisamos que las IP y las rutas sean correctas. Ha añadido reglas de routing para que podamos acceder desde nuestro equipo a través de la VPN personal:
En este caso, la IP en la interfaz ether2 es 10.2.239.24.
Ya deberíamos poder hacer ping y acceder por SSH desde nuestro equipo.
Al conectar por SSH como anteriormente nos conectamos por esa misma IP al system Rescue CD, es probable que nos aparezca un conflicto de claves en ~/.ssh/known_hosts, que podemos resolver borrando la clave anterior:
Para acceder se utiliza el nombre de usuario admin.
El resultado debería ser algo similar a:
➜ ~ ssh admin@10.2.239.24
The authenticity of host '10.2.239.24 (10.2.239.24)' can't be established.
RSA key fingerprint is SHA256:+xpN6EIEw3LTfCzrmH7VWOwGN1cRqCH4RhaB8LkATEs.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.2.239.24' (RSA) to the list of known hosts.
admin@10.2.239.24's password:
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 7.14.3 (c) 1999-2024 https://www.mikrotik.com/
Press F1 for help
[admin@MikroTik] >
Y ya tendríamos acceso a la línea de comandos por WireGuardVPN.
Configurar red interna con servidor de DHCP y VPN¶
En este punto configuraremos una red interna LAN donde el router hará de servidor DHCP y enmascarará la salida a internet.
Los pasos serían:
-
Agrupar las interfaces en WAN y LAN. Las ether2 y ether3 pertenecen a la red interna/personal (LAN). Y ether1 a la red externa, a la salida hacia internet (WAN).
# INTERFACES LIST /interface list add comment=defconf name=WAN add comment=defconf name=LAN /interface list member add comment=defconf interface=ether3 list=LAN # Interfaz Personal 1 add comment=defconf interface=ether2 list=LAN # Interfaz WireguardVPN add comment=defconf interface=ether1 list=WAN # Interfaz Default/Salida a internet. # NEIGHBOR DISCOVER # Aplicamos este comando para que los hosts de la red LAN se puedan ver entre sí. /ip neighbor discovery-settings set discover-interface-list=LAN -
Asignar IP fija a la interfaz ether3 (La interfaz Personal1).
-
Servidor DHCP
-
Crear pool de IP (rango de direcciones).
-
Crear servidor DHCP con este pool de IP.
-
Añadir configuración al servidor DHCP.
-
-
Servidor DNS
- Crear servidor DNS que reenvíe peticiones a un servidor DNS externo.
# SERVIDOR DNS # Permitimos que los dispositivos de la red usen el router como servidor DNS, y definimos el servidor DNS de Google como servidor externo. /ip dns set allow-remote-requests=yes servers=8.8.8.8 # Asignamos el nombre de dominio "router.lan" para la IP del router. /ip dns static add address=192.168.88.1 comment=defconf name=router.lan
- Crear servidor DNS que reenvíe peticiones a un servidor DNS externo.
-
Configurar Firewall para que enmascare la salida a internet desde la red interna.
-
Restringir acceso y permitir conexiones entrantes por defecto, únicamente desde la red interna (LAN).
# FIREWALL /ip firewall filter add action=accept chain=input comment="defconf: accept established,related,untracked" \ connection-state=established,related,untracked add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp add action=accept chain=input comment="defconf: accept to local loopback (for CAPsMAN)" dst-address=\ 127.0.0.1 add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN add action=accept chain=forward comment="defconf: accept in ipec policy" ipec-policy=in,ipec add action=accept chain=forward comment="defconf: accept out ipec policy" ipec-policy=out,ipec add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=\ established,related hw-offload=yes add action=accept chain=forward comment="defconf: accept established,related, untracked" \ connection-state=established,related,untracked add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=\ !dstnat connection-state=new in-interface-list=WAN -
Cambiar nombre al router.
-
Ajustar el reloj y la zona horaria.
# Asignamos la zona horaria. /system clock set time-zone-name=Europe/Madrid /system ntp client set enabled=yes # Añadimos direcciones IP de servidores de tiempo a los que el router se conectará para sincronizar el reloj. /system ntp client servers add address=213.251.52.234 add address=158.227.98.15 /system clock print -
Renombrar las interfaces:
-
ether1: inet (internet red Default)
- ether2: vpnisard (red wireguard vpn para conectarnos con nuestro fichero de VPN del usuario de IsardVDI)
-
ether3: lan1 (red personal 1)
Y finalmente hacemos un backup (copia de seguridad) de la configuración actual por si la queremos recuperar:
Podemos apagar el router desde dentro con este comando:
Preparar la configuración del router como plantilla¶
Si queremos que esta configuración sirva como plantilla, no es tan sencillo como si se tratase de un sistema operativo de Windows o Linux.
RouterOS asocia las configuraciones de las interfaces a sus direcciones MAC. Al clonar el disco, se generan nuevas direcciones MAC, lo que provoca que las configuraciones previamente asignadas a las interfaces se desvinculen y que, por ello, la plantilla no sirva para otros escritorios.
Cada escritorio derivado de una plantilla se crea con una MAC distinta en cada tarjeta, con lo que hay que realizar pasos extras para dejar lista la plantilla.
Guardamos la configuración en un formato de listado de órdenes:
Copiamos el fichero en local desde nuestro PC o desde un escritorio virtual con Linux:
Modificamos el fichero inicial.rsc añadiendo remove [find] en la parte de configuración del cliente de DHCP, ya que crea automáticamente un cliente DHCP por defecto. En el apartado de configuración del servidor DHCP del fichero inicial.rsc del router, tenemos:
Modificamos esta parte por:Ahora solamente nos queda volver a subir el fichero al router y sobreescribirlo (se hace directamente al nombrarlo con el mismo nombre):
Dentro del router, podemos ver el listado de archivos y verificar que el fichero se ha subido adecuadamente observando el LAST-MODIFIED (fecha y hora de última modificación):
Finalmente, queda indicarle al router que, al iniciar por primera vez, importe las órdenes del fichero inicial.rsc.
Se reiniciará, y hemos de entrar con el usuario admin / [ENTER] (sin contraseña), como si entrásemos por primera vez al router.
Verificamos que no hay mensajes de error y que la configuración sea correcta:
Y, por último, se ha de repetir el reinicio de la configuración y que esta vez se apague para que podamos clonar el estado actual del disco duro del router en una plantilla.
El escritorio se apaga y con el nombre router 7.14 inet-vpn-lan.
Para verificar que se han cumplido con los pasos de la guía y funciona, es necesario crear un nuevo escritorio de prueba basado en esta plantilla, ya que el actual conservará las mismas direcciones MAC y no es válido.
Creamos un escritorio con el nombre "prueba" basado en la plantilla que acabamos de crear "router 7.14 inet-vpn-lan" y verificamos que todo funciona correctamente. Si todo funciona correctamente, esta plantilla estará lista para utilizarse en las prácticas.
Cliente en red interna¶
Creamos un escritorio para el cliente:
- Plantilla: Vitalinux, Ubuntu, Windows (cualquiera de su preferencia)
- Redes: solo una red Personal1
Si nos conectamos por el visor SPICE podremos hacer copy/paste al escritorio usando el portapapeles.
Desde dentro del escritorio cliente (en este caso usamos Vitalinux), verificamos lo siguiente:
-
La primera interfaz (Personal1) tiene IP por DHCP.
ip -c a s ens3 # Resultado esperado isard@vitalinux:~/Desktop$ ip -c a s ens3 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:75:d3:0b brd ff:ff:ff:ff:ff:ff inet 192.168.88.254/24 brd 192.168.88.255 scope global dynamic noprefixroute ens3 valid_lft 1581sec preferred_lft 1581sec inet6 fe80::a8d3:848f:4f11:3ca8/64 scope link noprefixroute valid_lft forever preferred_lft forever -
Comprobamos la conectividad a Internet con ping a 8.8.8.8.
ping -c 1 8.8.8.8 # Resultado esperado isard@vitalinux:~/Desktop$ ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=15.0 ms --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 15.017/15.017/15.017/0.000 ms -
La configuración de DNS es la correcta.
-
Es posible realizar ping a una dirección DNS (nombre de dominio).
ping -c 1 www.google.es # Resultado esperado isard@vitalinux:~/Desktop$ ping -c 1 www.google.es PING www.google.es (216.58.215.163) 56(84) bytes of data. 64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=1 ttl=116 time=19.3 ms --- www.google.es ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 19.352/19.352/19.352/0.000 ms
Usar Winbox (herramienta gráfica) para configurar el Mikrotik desde Linux.¶
Desde un cliente conectado a la red interna LAN, podemos usar la herramienta Winbox.
Para utilizar Winbox en distribuciones Linux, necesitaremos el paquete Wine que permite arrancar ciertas aplicaciones compiladas para Windows dentro de Linux. Es posible que para algunas distribuciones de Linux ya venga instalado.
Podemos descargar Winbox desde la web de mikrotik o desde terminal:
Y lo arrancamos con:
Si es la primera vez que iniciamos Wine, es posible que aparezcan mensajes solicitando la instalación de elementos adicionales. Estos pueden ser ignorados, ya que no son necesarios para el funcionamiento de la herramienta Winbox.
Llegamos a una pantalla como la de la imagen, donde podemos poner la IP del router y la contraseña:
Configuraciones adicionales para la experiencia de Winbox
Podemos descargar el icono de escritorio:
wget -O ~/winbox_icon.png https://github.com/juanchixd/Mikrotik-linux/blob/main/icons/winbox-128x128.png?raw=true
Crear un enlace directo en nuestro escritorio:
cat <<'EOF' > ~/Desktop/Winbox_Mikrotik.desktop
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Open Desktop
Name[en]=Winbox Mikrotik
Name[es]=Winbox Mikrotik
Name[es_ES]=Winbox Mikrotik
Exec=sh -c "wine /home/isard/winbox.exe"
Categories=;
Type=Application
Terminal=false
Icon=/home/isard/winbox_icon.png
EOF
Copiarlo en el directorio de autostart para que se ejecute en el arranque:
Podemos guardar este escritorio de cliente creando una plantilla con el nombre "cliente Winbox Vitalinux".







