Introducción
Tienes una máquina. No puedes llegar a ella.
No es un error tuyo: es el comportamiento por defecto, y conviene entenderlo antes de ponerte a buscar la opción que lo desactiva.
Un escritorio de Isard se ejecuta en un centro de datos al que no tienes ninguna ruta.
Puede salir hacia internet, porque un router que tiene delante le traduce las direcciones por el camino. Nada puede entrar, porque no hay ninguna dirección por la que entrar.
Para buena parte de lo que harás, eso ya te sirve: abres el visor, escribes, aprendes algo.
Deja de servir en cuanto la máquina es un servidor: un servidor web que quieres abrir en tu navegador, una base de datos a la que quieres conectar un cliente, una máquina en la que quieres entrar por SSH desde un terminal que no esté dentro de una ventana SPICE.
Hay tres respuestas, y un escritorio puede tener las tres a la vez:
| interfaz | qué te da | quién pone la dirección |
|---|---|---|
| Default | salida a internet, ninguna entrada | Isard, por DHCP |
| Wireguard VPN | una dirección fija a la que llegas por una VPN | Isard, por DHCP |
| Personal | una red privada entre tus propios escritorios | tú, dentro de cada máquina |
Esta página trata esas tres, más la cuarta respuesta, el bastión, que está en Bastión y no necesita ninguna VPN.
Default
Todos los escritorios la tienen y no puedes desactivarla.
Dentro de la máquina es la primera interfaz:
$ ip --brief addr
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0 UP 192.168.122.214/22 fe80::cc46:102:1f0f:c495/64
192.168.122.0/22 es un rango privado, repartido por DHCP, con DNS y una puerta de enlace detrás de un router NAT.
Así que esto funciona:
$ sudo apt update && sudo apt install -y nginx
Y esto también, desde dentro de la máquina:
$ curl -s localhost | head -n 4
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
Pero desde tu portátil, 192.168.122.214 no es una dirección que signifique nada.
Ni siquiera es única: el escritorio de al lado tiene una del mismo rango.
Wireguard VPN
La segunda interfaz pone tu máquina en una red a la que te puedes conectar.
Isard mantiene una red privada, 10.2.0.0/16, asigna una dirección fija en ella a cada escritorio que tiene esta interfaz, y da a tu cuenta una configuración de WireGuard que conecta tu propio ordenador a esa misma red.
Márcala al crear el escritorio:

Dentro de la máquina aparece como una segunda interfaz:
$ ip --brief addr
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0 UP 192.168.122.214/22 fe80::cc46:102:1f0f:c495/64
enp2s0 UP 10.2.76.37/16 fe80::3198:1530:28f9:3bff/64
10.2.76.37 es la dirección que vas a usar.
También puedes consultarla en la plataforma sin abrir la máquina:

O, más rápido:
$ isard list
NAME STATE IP OS
box-1 Started 10.2.76.37 ubuntu
Tu extremo del túnel
El escritorio está en la red. Tú no.
Lo que necesitas es el fichero de configuración de tu extremo, e Isard genera uno por cuenta.
En el navegador está en el menú desplegable de tu usuario, como VPN, y descarga isard-vpn.conf:

Desde el terminal es un solo comando:
$ isard vpn config
✓ WireGuard config retrieved
WireGuard config saved as: /Users/david/.config/isard/isard-vpn.conf (0600)
Your address in the VPN: 10.0.29.109/32
Routed through the tunnel: 10.2.0.0/16
Bring it up with: isard vpn up (or: wg-quick up /Users/david/.config/isard/isard-vpn.conf)
0600, como los ficheros de sesión, y por un motivo más serio: ese fichero contiene tu clave privada.
Cualquiera que lo tenga está en la red de escritorios como si fuera tú.
Por eso no se muestra:
$ isard vpn config --show
✓ WireGuard config retrieved
[Interface]
PrivateKey = ...
Address = 10.0.29.109/32
DNS = 10.2.0.1
[Peer]
PublicKey = ...
AllowedIPs = 10.2.0.0/16
Endpoint = elmeuescriptori.gestioeducativa.gencat.cat:443
Tienes que pedirlo con --show, y no deberías hacerlo en un aula con un proyector.
Levantarlo
$ isard vpn up
✓ WireGuard config retrieved
Running: sudo /opt/homebrew/bin/wg-quick up /Users/david/.config/isard/isard-vpn.conf
[#] wireguard-go utun
[+] Interface for isard-vpn is utun4
...
VPN up. Desktops are reachable at the IP shown by `isard list`.
Pide sudo, porque añadir una interfaz de red no es cosa de un usuario normal.
En Windows ejecuta wireguard.exe /installtunnelservice, que pide permisos de administrador de la misma manera.
Compruébalo siempre que no estés seguro:
$ isard vpn status
VPN: up (utun4)
Config: /Users/david/.config/isard/isard-vpn.conf
Y bájalo cuando acabes:
$ isard vpn down
Running: sudo /opt/homebrew/bin/wg-quick down /Users/david/.config/isard/isard-vpn.conf
...
VPN down.
Los dos se pueden ejecutar dos veces sin problema: up con el túnel activo no hace nada, y down con el túnel caído, tampoco.
Qué puedes hacer ahora
Hazle ping:
$ ping -c 2 10.2.76.37
PING 10.2.76.37 (10.2.76.37): 56 data bytes
64 bytes from 10.2.76.37: icmp_seq=0 ttl=63 time=47.412 ms
64 bytes from 10.2.76.37: icmp_seq=1 ttl=63 time=44.938 ms
Abre el nginx que has instalado al principio de esta página:
$ curl -s 10.2.76.37 | head -n 4
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
O en tu navegador, en http://10.2.76.37.
Entra directamente por SSH, con el comando ssh de siempre y sin ningún bastión de por medio:
$ ssh isard@10.2.76.37
isard@box-1:~$
Todos los puertos, no unos pocos. Esa es la diferencia con el bastión.
Un servidor de desarrollo en :5173, un cliente de PostgreSQL en :5432, un depurador remoto, el RDP de Windows en :3389: todo funciona, porque para tu ordenador el escritorio no es más que un equipo de una red a la que estás conectado.
EjercicioLlega a tu máquina
Levanta el túnel y abre desde tu navegador un servidor web que se ejecute en box-1.
Mostrar la solución
En box-1, por el visor o por el bastión:
$ sudo apt update && sudo apt install -y nginx
En tu ordenador:
$ isard vpn up
✓ WireGuard config retrieved
Running: sudo /opt/homebrew/bin/wg-quick up /Users/david/.config/isard/isard-vpn.conf
...
VPN up. Desktops are reachable at the IP shown by `isard list`.
$ isard list
NAME STATE IP OS
box-1 Started 10.2.76.37 ubuntu
Después, http://10.2.76.37 en el navegador.
Si se queda colgado, comprueba tres cosas en este orden: que el túnel esté levantado (isard vpn status), que la máquina esté arrancada (isard list) y que nginx se esté ejecutando de verdad (systemctl status nginx).
Nueve de cada diez veces la respuesta es una de las dos primeras.
Personal
La tercera interfaz es la que resuelve un problema distinto.
Tanto Default como Wireguard conectan un escritorio a algo que gestiona Isard.
Personal conecta tus escritorios entre sí, en una red en la que no hay nadie más: un switch con tus máquinas enchufadas y nada más.
Hay una cosa que entender, y todo lo demás sale de ahí: Isard no asigna ninguna dirección en una red Personal.
Ni DHCP, ni puerta de enlace, ni DNS. La interfaz se levanta sin nada:
$ ip --brief addr
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0 UP 192.168.122.214/22 fe80::cc46:102:1f0f:c495/64
enp2s0 UP 10.2.127.123/16 fe80::3198:1530:28f9:3bff/64
enp3s0 UP
Tres interfaces, y la tercera está vacía.
No es un fallo. Es justamente la gracia: una red Personal es un trozo de cable, y lo que circula por él lo decides tú.
Por eso es la que quieres para un ejercicio de enrutamiento, de cortafuegos o de un servidor DHCP que escribes tú mismo: la red no tiene ninguna opinión que se interponga en la tuya.
Darle una dirección a enp3s0 es tarea del sistema invitado, no de Isard, y en Ubuntu eso es Netplan.
Cuál necesito
Lee el ejercicio, no el menú.
| la página te pide | marca |
|---|---|
| seguir un tutorial dentro de una máquina | Default: ya la tienes |
| abrir un servidor web en tu navegador | Wireguard VPN |
| entrar por SSH desde tu terminal | Wireguard VPN, o el bastión |
| publicar algo para alguien que no eres tú | el bastión: Bastión |
| hacer que dos máquinas hablen entre sí | Personal, más Wireguard para poder llegar a las dos |
| poner las direcciones tú mismo | Personal |
Y marca Wireguard en todas, siempre.
No cuesta nada si no la usas, y es la interfaz que no puedes añadir más tarde sin reiniciar.
Ejercicios
EjercicioLee las tres interfaces
En una máquina que tenga las tres, ejecuta ip --brief addr y di qué línea es cada una.
Mostrar la solución
$ ip --brief addr
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0 UP 192.168.122.214/22 fe80::cc46:102:1f0f:c495/64
enp2s0 UP 10.2.127.123/16 fe80::3198:1530:28f9:3bff/64
enp3s0 UP
enp1s0: Default. Una dirección192.168.122.x, internet a través de NAT.enp2s0: Wireguard VPN. Una dirección10.2.x.x, accesible desde tu ordenador con el túnel levantado.enp3s0: Personal. Ninguna dirección, porque nadie le asigna una.
El orden es el orden en que se marcaron las interfaces en el formulario, y por eso conviene marcarlas siempre en el mismo orden en todas las máquinas de un ejercicio.
EjercicioArriba, abajo, arriba
Levanta el túnel, comprueba su estado, haz ping a un escritorio, baja el túnel y vuelve a hacer ping.
Mostrar la solución
$ isard vpn up
✓ WireGuard config retrieved
Running: sudo /opt/homebrew/bin/wg-quick up /Users/david/.config/isard/isard-vpn.conf
...
VPN up. Desktops are reachable at the IP shown by `isard list`.
$ isard vpn status
VPN: up (utun4)
Config: /Users/david/.config/isard/isard-vpn.conf
$ ping -c 1 10.2.76.37
64 bytes from 10.2.76.37: icmp_seq=0 ttl=63 time=46.902 ms
$ isard vpn down
Running: sudo /opt/homebrew/bin/wg-quick down /Users/david/.config/isard/isard-vpn.conf
...
VPN down.
$ ping -c 1 10.2.76.37
Request timeout for icmp_seq 0
El tiempo de espera agotado es la respuesta correcta al último comando, y vale la pena verlo una vez.
Una dirección de una red privada no es inaccesible porque algo se haya roto. Es inaccesible porque no estás en esa red.
EjercicioDos máquinas, un túnel
Con box-1 y box-2 en marcha y las dos en Wireguard, instala nginx en cada una y compruébalas desde tu navegador.
Después cambia la página de una de ellas para poder distinguirlas.
Mostrar la solución
$ isard list
NAME STATE IP OS
box-1 Started 10.2.76.37 ubuntu
box-2 Started 10.2.76.41 ubuntu
$ isard ssh box-1 -- 'sudo apt update && sudo apt install -y nginx'
$ isard ssh box-2 -- 'sudo apt update && sudo apt install -y nginx'
$ isard ssh box-2 -- 'echo "<h1>box-2</h1>" | sudo tee /var/www/html/index.html'
<h1>box-2</h1>
Después, http://10.2.76.37 y http://10.2.76.41.
Dos direcciones en un solo túnel, y no has tenido que configurar nada en cada máquina para que funcione.
EjercicioLo que el túnel no lleva
Con el túnel levantado, mira cuál es tu dirección IP pública.
¿Es la de la Generalitat?
Mostrar la solución
$ curl -s https://api.ipify.org
88.11.42.7
Es la tuya: la que tenga la conexión de tu casa o de tu centro.
AllowedIPs = 10.2.0.0/16 significa que el túnel lleva el tráfico hacia la red de escritorios de Isard y nada más. Un túnel dividido no sirve para aparentar que estás en otro sitio, y esta no es la herramienta para eso.