1. Routers amb mikrotik i Alpine Linux¶
En aquesta pràctica es prepararà una plantilla d'encaminador Mikrotik i una altra de Alpine perquè pugui servir en el següent escenari:
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
│ xarxa default
──┬────────────────┴────────────────────────────
│ 192.168.120.0/22
│
dhcp │.x.y
┌──────┴────────────┐
│ inet │
│ │
│ ESCRIPTORI │dhcp xarxa wireguard-vpn
│ ROUTER ISARD vpn├───────────────────────────────────────┬────────
│ │.X.Y 10.2.0.0/16 │
│ lan1 │ │.0.1
└──────┬────────────┘ ┌───────┴────────┐
│.1 │ FIREWALL │
│ xarxa personal 1 │ ISARD │
───┴────────┬────────────────────── └──────┬─────────┘
│ 192.168.88.0/24 │
dhcp│.X │
┌──────┴──────┐ ┌┴┐
│ eth0 │ │V│
│ │ │P│
│ ESCRIPTORI │ │N│
│ │ └┬┘
│ accès │ │10.0.X.Y
│ a internet │ ┌──────────┴──────────┐
│ per xarxa │ │ wireguard │
│ personal │ │ │
│ │ │ MI PC │
│ configurar │ │ amb arxiu wireguard │
│ mikrotik │ │ de l'usuari isard │
└─────────────┘ │ │
└─────────────────────┘
Mikrotik RouterOS a IsardVDI¶
Necessitarem un escriptori amb sistema operatiu RouterOS de Mikrotik per a donar sortida a internet a un escriptori que es connectarà a la xarxa personal. Aquest encaminador farà NAT "MASQUERADE" cap a la xarxa Default (sortida a Internet), cosa que significa que reemplaçarà la IP d'origen dels dispositius interns amb la seva pròpia IP pública perquè puguin navegar per Internet. També tindrà un servidor DHCP. Es podrà accedir a l'encaminador a través de la xarxa VPN personal per a poder-lo configurar amb més practicitat des del nostre PC.
Aquesta configuració pot servir de base per a altres pràctiques més complexes de xarxes que hi ha en els següents apartats.
Crear escriptori amb routerOS base clonant el disc des d'una imatge¶
Creem un escriptori virtual basat en una ISO del sistema Rescue CD.
Arrenquem el sistema Rescue CD.
Una vegada dins de l'escriptori, fem diverses configuracions:
# Canviem el teclat a Espanyol
setkmap es
# Llevem regles de Firewall i configurem la política per defecte ACCEPT
# iptables -X: Elimina totes les cadenes de regles personalitzades menys les predeterminades.
# iptables -F: Esborra totes les regles dins de totes les cadenes.
# iptables -P INPUT ACCEPT: Estableix la política predeterminada per a la cadena INPUT.
# Totes les connexions entrants seran acceptades per defecte
iptables -X; iptables -F; iptables -P INPUT ACCEPT
Verifiquem que no queden regles de Firewall i que el servei de SSH està escoltant:
iptables-save
ss -tlnp
# La sortida esperada d'aquestes comandes és:
[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))
Canviem la contrasenya de root:
Si volem connectar-nos per SSH des del nostre equip
Si volem entrar al sistema des del nostre PC, és suficient amb accedir per SSH perquè no té interfície gràfica. Per a això, podem seguir aquesta guia: Com establir el túnel VPN d'usuari
Ens dirigim a la web de mikrotik, on podrem veure els enllaços de descàrrega de totes les versions: https://mikrotik.com/download/archive
Busquem la imatge estable més recent, en la seva versió img. És important que tingui aquest format: chr-VERSIÓ-img.zip. Actualment, l'última estable és: chr-7.18.2.img.zip.
L'URL de descàrrega d'aquesta versió és: chr-7.18.2.img.zip
En la mateixa web de descàrregues ens indica la signatura sha256 de cada arxiu (la qual variarà per a cada arxiu i versió) que ens servirà per a comprovar si l'arxiu que descomprimirem més tard és autèntic. En el cas de l'arxiu i versió que usarem per a aquesta pràctica, la signatura és: 5452ab6b298458a3e266e2cdd4cf664cddbe44f5861991843d5924e3fa4d576f
Amb la següent comanda observem que disposem de 4 GB en el directori temporal per a descarregar la imatge:
Podem descarregar el fitxer en el directori /tmp i verificar la signatura:
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 vegada verificada que la signatura és vàlida, descomprimim el contingut:
Això descomprimeix un fitxer amb una imatge de disc 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
Ara hem de clonar aquesta imatge en el disc 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
Per a això farem servir l'eina dd:
# if: input file, en aquest cas el fitxer d'imatge de disc.
# of: output file, en aquest cas és un dispositiu de disc virtual.
# bs: grandària de bloc de lectura i escriptura, per a fitxers grans agilitza l'escriptura que si no per defecte es fa en blocs petits.
# status: li indica que volem anar veient el progrés, útil si el fitxer fos molt gran; en el nostre cas, serà gairebé instantani.
dd if=/tmp/chr-7.18.2.img of=/dev/vda bs=1M status=progress
Ara podem apagar l'escriptori virtual amb:
Ara podem editar l'escriptori, i preparar-lo per a crear una plantilla.
En editar, li modifiquem aquests paràmetres:
- vCPUs: podem deixar les 2 vCPUs que havíem posat abans.
- Memòria (GB): reduir la memòria a 1 GB.
- Boot: canviar de CD/DVD a Hard Disk
- Xarxes: podem afegir més o modificar-les en funció del que desitgem que quedi fixat en la plantilla, després els alumnes la poden canviar en crear l'escriptori. És habitual que la primera interfície sigui la de sortida a internet (Default), la segona la d'accés a la xarxa de VPN (WireGuardVPN) i la tercera interfície estarà connectada a la xarxa personal (Personal1).
- Treure ISO de system Rescue CD.
- Opcional: afegim una imatge al card de l'escriptori.
Una vegada fets els canvis de maquinari, convertim l'escriptori en plantilla, amb el següent nom: routeros 7.18.2
Ara ja podem continuar treballant amb el nostre escriptori, que ara estarà basat en aquesta nova plantilla.
Configuració inicial Mikrotik¶
Una vegada encès l'escriptori, arrencarà amb la imatge de Mikrotik i ens donarà accés a la seva línia d'ordres, com si ens haguéssim connectat per primera vegada a l'encaminador via Telnet o port en sèrie. Ha d'aparèixer per pantalla una sortida com en la de la següent imatge:
Entrem amb:
-
Login: admin
-
Password: (premem enter, ja que no té contrasenya encara)
El primer que ens demana és registrar una contrasenya. En aquest cas, li posarem la contrasenya habitual de les nostres plantilles "pirineus". I accedim al prompt de mikrotik:
Verifiquem que té sortida a Internet:
Preparar escriptori per a connexió SSH des del nostre equip
Si volem entrar al sistema des del nostre PC, és suficient amb accedir per SSH perquè no té interfície gràfica. Per a això, podem seguir aquesta guia: Com establir el túnel VPN d'usuari
Abans de prosseguir, ens interessa poder treballar més còmodament amb una terminal on puguem fer còpia i pega de comandos. El visor, com que no té interfície gràfica, no permet usar el porta-retalls entre l'escriptori virtual i el nostre equip.
Per a això, s'ha d'habilitar la interfície de WireGuard VPN. I indicar a l'encaminador que aquesta interfície ha d'obtenir una adreça IP dinàmica per DHCP. La xarxa de WireGuardVPN ofereix una IP dinàmica però sense gateway per defecte.
Revisem que les interfícies actives i els seus corresponents noms:
Comprovem que la segona interfície, la de WireGuardVPN, es diu ether2. (depenent de la posició en la qual es trobi la interfície en editar l'escriptori virtual).
Configurem l'adreça IP per DHCP, i esperem fins que l'obtingui:
Revisem que les IP i les rutes siguin correctes. Ha afegit regles de routing perquè puguem accedir des del nostre equip a través de la VPN personal:
En aquest cas, la IP en la interfície ether2 és 10.2.239.24.
Ja hauríem de poder fer ping i accedir per SSH des del nostre equip.
En connectar per SSH com anteriorment ens connectem per aquesta mateixa IP al system Rescue CD, és probable que ens aparegui un conflicte de claus en ~/.ssh/known_hosts, que podem resoldre esborrant la clau anterior:
Per a accedir s'utilitza el nom d'usuari admin.
El resultat hauria de ser una cosa 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:+xpN6EIEw3LTfCzrmH7VWOwGN1cRqCH4RhaB8.....
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] >
I ja tindríem accés a la línia de comandes per WireGuardVPN.
Configurar xarxa interna amb servidor de DHCP i VPN¶
En aquest punt configurarem una xarxa interna LAN on l'encaminador farà de servidor DHCP i emmascararà la sortida a internet.
Els passos serien:
-
Agrupar les interfícies en WAN i LAN. Les ether2 i ether3 pertanyen a la xarxa interna/personal (LAN). I ether1 a la xarxa externa, a la sortida cap a 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 # Apliquem aquest comando perquè els hosts de la xarxa LAN es puguin veure entre si. /ip neighbor discovery-settings set discover-interface-list=LAN -
Assignar IP fixa a la interfície ether3 (La interfície Personal1).
-
Servidor DHCP
-
Crear pool de IP (rang de direccions).
-
Crear servidor DHCP amb aquest pool de IP.
-
Afegir configuració al servidor DHCP.
-
-
Servidor DNS
- Crear servidor DNS que reenviï peticions a un servidor DNS extern.
# SERVIDOR DNS # Permetem que els dispositius de la xarxa usin l'encaminador com a servidor DNS, i definim el servidor DNS de Google com a servidor extern. /ip dns set allow-remote-requests=yes servers=8.8.8.8 # Assignem el nom de domini "encaminador.lan" per a la IP de l'encaminador. /ip dns static add address=192.168.88.1 comment=defconf name=router.lan
- Crear servidor DNS que reenviï peticions a un servidor DNS extern.
-
Configurar Firewall perquè emmascari la sortida a internet des de la xarxa interna.
-
Restringir accés i permetre connexions entrants per defecte, únicament des de la xarxa 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 -
Canviar nom a l'encaminador.
-
Ajustar el rellotge i la zona horària.
# Asignem la zona horària. /system clock set time-zone-name=Europe/Madrid /system ntp client set enabled=yes # Afegim adreces IP de servidors de temps als quals l'encaminador es connectarà per a sincronitzar el rellotge. /system ntp client servers add address=213.251.52.234 add address=158.227.98.15 /system clock print -
Reanomenar les interfícies:
-
ether1: inet (internet xarxa Default)
- ether2: vpnisard (xarxa WireGuardVPN per connectar-nos amb el nostre arxiu VPN de l'usuari d'IsardVDI)
-
ether3: lan1 (xarxa Personal1)
I finalment fem backup (còpia de seguretat) de la configuració actual per si la volem recuperar:
Podem apagar el router des de dintre amb aquesta comanda:
Preparar la configuració del router com a plantilla¶
Si volem que aquesta configuració serveixi com a plantilla, no és tan senzill com si es tractés d'un sistema operatiu Windows o Linux.
RouterOS associa les configuracions de les interfícies a les seves direccions MAC. En clonar el disc, es generen noves direccions MAC, el que provoca que les configuracions prèviament assignades a les interfícies es desvinculin i que, per això, la plantilla no serveixi per a altres escriptoris.
Cada escriptori derivat d'una plantilla es crea amb una altra direcció MAC a cada targeta, i que per conseqüència s'hagi de realitzar passos extres per deixar preparada la plantilla.
Guardem la configuració en un format de llistat d'ordres:
Copiem el fitxer en local des del nostre PC o des d'un escriptori virtual amb sistema operatiu Linux:
Modifiquem el fitxer inicial.rsc afegint remove [find] a la part de la configuració del client de DHCP, ja que crea automàticament un client DHCP per defecte. En l'apartat de la configuració del servidor DHCP del fitxer inicial.rsc del router, tenim:
Modifiquem aquesta part per:
Ara només ens queda tornar a pujar el fitxer al router i sobreescriure-ho (es fa directament en nomenar-ho amb el mateix nom):
Dins del router, podem veure el llistat d'arxius i verificar que el fitxer s'ha pujat correctament observant la columna LAST-MODIFIED (data i hora de l'última modificació):
Finalment, queda indicar-li al router que, en iniciar per primera vegada, importi les ordres del fitxer inicial.rsc.
Es reiniciarà, i hem d'entrar amb l'usuari admin / [ENTER] (sense contrasenya), com si entréssim per primera vegada al router.
I, en últim lloc, hem de repetir el reinici de la configuració i que aquesta vegada s'apagui perquè puguem clonar l'estat actual del disc dur del router en una plantilla.
L'escriptori s'apagarà i podem crear la plantilla amb el nom router 7.14 inet-vpn-lan.
Per a verificar que s'han complert els passos de la guia i tot funciona correctament, és necessari crear un nou escriptori de prova basat en aquesta plantilla, ja que l'actual conservarà les mateixes direccions MAC i serà vàlid.
Creem un escriptori amb el nom prova basat en la plantilla que acabem de crear "router 7.14 inet-vpn-lan" i comprovem que les configuracions fetes al router fan el seu efecte al client. Si el resultat és satisfactori, aquesta plantilla ja està llesta per utilitzar-se en les pràctiques.
Client a la xarxa interna¶
Creem un escriptori per al client:
- Plantilla: Vitalinux, Ubuntu, Windows (qualsevol de preferència)
- Xarxes: només una xarxa Personal1
Si ens connectem amb el visor SPICE, podrem fer còpia i pega a l'escriptori fent servir el porta-retalls.
Des de dins de l'escriptori client (en aquest cas utilitzem Vitalinux), comprovem el següent:
-
La primera interfície (Personal1) adquireix IP per DHCP.
ip -c a s ens3 # Resultat esperat 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 -
Comprovem la connectivitat a Internet amb ping a 8.8.8.8.
ping -c 1 8.8.8.8 # Resultat esperat 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ó de DNS és la correcta.
-
És possible realitzar ping a una direcció DNS (nom de domini).
ping -c 1 www.google.es # Resultat esperat 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
Utilitzar Winbox (eina gràfica) per a configurar la Mikrotik des de Linux¶
Des d'un client connectat a la xarxa interna LAN, podem fer servir l'eina Winbox.
Per fer servir Winbox en distribucions Linux, necessitarem el paquet Wine, que permet arrancar certes aplicacions compilades per a Windows dins de Linux. És possible que per a algunes distribucions de Linux ja vingui instal·lat.
Podem descarregar Winbox des de la web de mikrotik o des de terminal:
I l'arranquem amb la comanda:
Si és el primer cop que iniciem Wine, possiblement apareixeran alguns missatges sol·licitant la instal·lació d'elements addicionals. Aquests poden ser ignorats, ja que no són necessaris per al funcionament de l'eina Winbox.
Arribem a una pantalla com en la de la imatge, on per entrar hem d'omplir les caselles amb la IP del router i la contrasenya:
Configuracions addicionals per l'experiència de Winbox
Podem descarregar la icona d'escriptori:
wget -O ~/winbox_icon.png https://github.com/juanchixd/Mikrotik-linux/blob/main/icons/winbox-128x128.png?raw=true
Crear un enllaç directe en el nostre escriptori:
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
Copiar-ho al directori d'autostart perquè s'executi en l'arrencada:
Podem guardar aquest escriptori de client creant una plantilla amb el nom "client Winbox Vitalinux".







