1. Routers con Mikrotik y Alpine Linux¶
En esta práctica se preparará una plantilla de router Mikrotik y otra de Alpine para que pueda servir en el siguiente escenario:
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:
passwd
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:
[root@sysrescue ~]# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.9G 0 3.9G 0% /tmp
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:
unzip -d /tmp/ /tmp/routeros.img.zip
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:
poweroff
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:
interface print
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:
ip dhcp-client add interface=ether2
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:
ip address print
ip router print
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:
ssh-keygen -f ~/.ssh/known_hosts -R "LA_IP_DEL_ESCRITORIO_EN_LA_RED_DE_WIREGUARD_VPN"
Para acceder se utiliza el nombre de usuario admin.
ssh admin@LA_IP_DEL_ESCRITORIO_EN_LA_RED_DE_WIREGUARD_VPN
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).
# DIRECCIÓN IP INTERNA /ip address add address=192.168.88.1/24 comment=defconf interface=ether3 network=192.168.88.0
-
Servidor DHCP
-
Crear pool de IP (rango de direcciones).
# SERVIDOR DHCP # Creamos el rango de IP que querremos asignar. /ip pool add name=default-dhcp ranges=192.168.88.100-192.168.88.254
-
Crear servidor DHCP con este pool de IP.
# Especificamos que el servicio DHCP se aplicará en la interfaz ether 3, es decir, todos los equipos conectados a esa interfaz recibirán una IP dinámica. /ip dhcp-server add address-pool=default-dhcp interface=ether3 name=defconf
-
Añadir configuración al servidor DHCP.
# Declaramos la red y la puerta de enlace que tendrán los hosts que obtengan una IP dinámica. /ip dhcp-server network add address=192.168.88.0/24 comment=defconf gateway=192.168.88.1
-
-
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.
# FIREWALL MASQUERADE /ip firewall nat add action=masquerade chain=srcnat comment="defconf: masquerade" ipec-policy=out,none \ out-interface-list=WAN
-
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.
# Cambiamos el nombre al router. /system identity set name=mkt_isard
-
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)
# RENOMBRAR INTERFACES /interface ethernet set [ find default-name=ether1 ] disable-running-check=no name=inet set [ find default-name=ether3 ] disable-running-check=no name=lan1 set [ find default-name=ether2 ] disable-running-check=no name=vpnisard
Y finalmente hacemos un backup (copia de seguridad) de la configuración actual por si la queremos recuperar:
/system backup save name=defconf
Podemos apagar el router desde dentro con este comando:
/system/shutdown
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:
/export file=inicial
Copiamos el fichero en local desde nuestro PC o desde un escritorio virtual con Linux:
scp admin@IP_DEL_ROUTER:/inicial.rsc /tmp/inicial.rsc
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:
/ip dhcp-client
add interface=inet
add interface=vpnisard
/ip dhcp-client
remove [find]
add interface=inet
add interface=vpnisard
Ahora solamente nos queda volver a subir el fichero al router y sobreescribirlo (se hace directamente al nombrarlo con el mismo nombre):
scp /tmp/inicial.rsc admin@IP_DEL_ROUTER:/inicial.rsc
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):
/file/print
Finalmente, queda indicarle al router que, al iniciar por primera vez, importe las órdenes del fichero inicial.rsc.
/system/reset-configuration no-defaults=yes run-after-reset=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:
/log/print
/export
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.
/system/reset-configuration no-defaults=yes run-after-reset=inicial.rsc shutdown=yes
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.
systemd-resolve --status ens3 # Resultado esperado isard@vitalinux:~/Desktop$ systemd-resolve --status ens3 Link 2 (ens3) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 192.168.88.1 192.168.120.1 DNS Domain: ~.
-
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:
wget -O ~/winbox.exe https://download.mikrotik.com/routeros/winbox/3.40/winbox64.exe
Y lo arrancamos con:
wine /ruta/de/descarga/winbox.exe
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:
cp -a ~/Desktop/Winbox_Mikrotik.desktop ~/.config/autostart/
# Reiniciamos el sistema para comprobar que funciona.
reboot
Podemos guardar este escritorio de cliente con el nombre "cliente Winbox Vitalinux".
Router basado en Alpine Linux¶
Crear plantilla genérica base de Alpine Linux¶
Para crear el escritorio necesitaremos la ISO de Alpine. La podemos encontrar en su web oficial:
Entramos a la web de Alpine y buscamos la versión standard para arquitectura x86:64. Copiamos la URL y descargamos la ISO en IsardVDI ().
La versión utilizada en esta práctica es:
Creamos un escritorio con estas características:
- vCPUs: 2
- Memoria (GB): 1 GB
- Tamaño del disco (GB): 40 GB
- Redes: una sola interfaz para crear la plantilla genérica.
- Perfil de hardware: debian10
Para instalar el sistema, iniciamos como usuario root y NO nos pedirá contraseña.
Ejecutamos setup-alpine y seguimos los pasos del asistente para configurar red, zona horaria, etc.
El objetivo es preparar un script inicial para poder establecer las reglas de Firewall, rutas y las acciones que queremos realizar al arrancar el router.
Creamos un primer script:
touch /usr/local/bin/startup_script.sh
chmod u+x /usr/local/bin/startup_script.sh
El contenido del script puede ser:
#!/bin/bash
ip address show >> /tmp/log_ip.txt
Creamos el fichero de servicio:
touch /etc/init.d/router
chmod u+x /etc/init.d/router
El fichero de servicio ha de contener:
#!/sbin/openrc-run
depend() {
after sshd
}
start() {
ebegin "router starting"
/usr/local/bin/startup_script.sh
eend $?
}
Activamos el servicio:
rc-update add router default
Activamos el bit de forwarding:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Podemos verificar si está activo después de un reboot (reinicio de sistema) mirando el siguiente archivo:
cat /proc/sys/net/ipv4/ip_forward
Instalamos los paquetes necesarios para funciones de red:
apk add iptables iproute2 dnsmasq
Preparar conexión por SSH por WireGuardVPN
Si queremos entrar al sistema desde nuestro PC, podemos seguir esta guía:
Para que funcione, es necesario realizar algunos comandos dentro de la máquina:
- Para poder entrar por SSH, encendemos la interfaz eth1 y le indicamos que obtenga IP por DHCP:
ip link set eth1 up udhcpc -i eth1 ip route add 10.0.0.0/14 via 10.2.0.1
- Para permitir la entrada como usuario root, podemos configurar /etc/ssh/sshd_config, modificando la línea:
PermitRootLogin yes
Apagamos el escritorio y con el nombre Alpine redes v1.
Configuración de la red en Linux¶
Una vez creada la plantilla de Alpine, podemos empezar a trabajar en ella y configurar la red a nuestro gusto. En este apartado, os proponemos una forma de hacerlo. A este router le asignaremos la dirección IP 192.168.88.2/24 para que no interfiera con el router de Mikrotik, creado en el anterior apartado, y así poder trabajar con los dos routers en una misma red.
Añadimos las interfaces de red de WireGuardVPN y Personal1, y deberían de quedar de esta forma:
- eth0: Default (salida a internet)
- eth1: WireGuardVPN
- eth2: Personal1
Una vez dentro del escritorio virtual, editamos el script /usr/local/bin/startup_script.sh y añadimos el siguiente contenido:
#!/bin/bash
# CONFIGURAR IP VPN DE USUARIO ISARD
# Añadiendo manualmente la ruta, ya que udhcpc no la configura por defecto.
ip link set eth1 name vpnisard
ip link set vpnisard up
udhcpc -i vpnisard
ip route add 10.0.0.0/14 via 10.2.0.1
# CONFIGURAR IP LAN1
ip link set eth2 name lan1
ip link set lan1 up
ip address add 192.168.88.2/24 dev lan1
# SERVIDOR DHCP
# Creamos fichero de configuración
cat <<'EOF' > /etc/dnsmasq_router.conf
interface=lan1
dhcp-range=192.168.88.20,192.168.88.99,255.255.255.0,24h
dhcp-option=3,192.168.88.2
dhcp-option=6,8.8.8.8,1.1.1.1
EOF
# Lanzamos el servidor dnsmasq
dnsmasq --conf-file=/etc/dnsmasq_router.conf
# NAT MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Una vez verificado que todo funciona adecuadamente, mediante otro escritorio que haga de cliente, dónde se compruebe que este obtiene IP, acceso a Internet y resolución DNS... con el nombre router-Alpine.