GNU/Linux >> Tutoriales Linux >  >> Linux

Usar Tailscale en Windows para conectarse en red más fácilmente con WSL2 y Visual Studio Code

Tailscale es una "VPN" de malla de configuración cero que se ejecuta sobre otras redes y "aplana" las redes de manera efectiva y permite que los usuarios/servicios se comuniquen más fácilmente (y de forma segura) entre sí.

Por ejemplo, he escrito extensamente sobre cómo SSH en WSL2 en Windows 10 desde otra máquina y notará que no solo hay un montón de pasos, sino que hay más de una forma de hacerlo !

He hablado de esto para SSH, pero si es un desarrollador activo y desea compartir los servicios y sitios en los que está trabajando con sus compañeros de trabajo y colaboradores, hay una cantidad no trivial de configuración, administración y mantenimiento para tratar. con.

Dicho de otra manera, "¿no sería más fácil si todos estuviéramos en la misma red y subred?"

WSL1 comparte su pila de redes con Windows 10, por lo que la "máquina" es la misma. Cualquiera que sea YourMachineName, ejecutar un servicio en 5000 es lo mismo si es un servicio de Windows o una aplicación que se ejecuta en Linux bajo WSL1. Sin embargo, en WSL2, su entorno Linux está "detrás" de su host Windows. Si bien WSL2 facilita acceder a http://localhost:5000 mediante el reenvío de puertos transparente, su máquina WSL2 Linux no es realmente un par en la misma red que sus otros dispositivos.

El uso de un sistema de red de configuración cero como Tailscale (y servicios similares) nivela el campo de juego y la red. Debido a algunas características de WSL2, existen algunas trampas. Así es como lo hice funcionar para mí.

Escala trasera en WSL2

Obtener WSL

  • Instalar WSL2:siga las instrucciones aquí
  • Instalar una distribución de Linux:usé Ubuntu 20.04
    • realizar el proceso, crear un usuario, etc.
  • Instale la Terminal de Windows:es mucho mejor y realmente mejora su experiencia de línea de comandos

Obtener escala de cola

  • Instalar Tailscale:usé las instrucciones de Ubuntu 20.04

Modificar WSL2

  • Hoy no puedo hacer que Tailscale se inicie en WSL2 con la instalación de ipv6, así que lo desactivo.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Ejecutar escala de cola

Aquí inicias el daemon. No hay systemd (todavía) en WSL2, pero si tiene una versión superior a Windows 10 compilación 21286, hay formas de ejecutar comandos al inicio en el subsistema de Windows para Linux. Personalmente, solo hago esto en un script bash.

sudo tailscaled 

WSL no tiene una forma de realizar un proceso de inicio de sesión interactivo, por lo que no desea crear una clave de autenticación previa para autenticar una sola máquina. Luego use esa tecla, como hago aquí, para abrir Tailscale dentro de WSL:

tailscale up --authkey=tskey-9e85d94f237c54253cf0

Me gusta mantener esto abierto en otra pestaña de terminal o panel de ventana para poder ver los registros. ¡Es interesante y detallado!

En el panel de administración de máquinas Tailscale, puede ver todas las máquinas que viven en su nueva red Tailscale. Tenga en cuenta que tengo scottha-proto listado como Windows y scottha-proto-1 listado como Linux. ¡El primero es mi máquina host y el segundo (el -1) es mi instancia de Linux WSL2! ¡Ahora están en una red plana!

También pude invitar a un usuario de fuera de mi red con la nueva (próximamente) función para compartir nodos Tailscale. Mi amigo Glenn NO está en mi organización, pero al igual que uso OneDrive o DropBox para crear un enlace para acceder a UNA entidad pero no a TODO el sistema, puedo hacer lo mismo aquí.

Ahora puedo hacer que Glenn acceda a un servicio que se ejecuta en WSL2 desde su casa.

Cree un servicio y vincúlelo a la red Tailscale

Instalé .NET 5 en mi sistema Ubuntu WSL2, creé una carpeta y ejecuté dotnet new web para crear un microservicio Hello World.

Cuando ejecuto el servicio, .NET o Node, o lo que sea, es esencial que el servicio escuche en la red Tailscale. Su sistema Linux en WSL2 es 'multi-homed' y está conectado a múltiples redes. Por defecto, mis sistemas de desarrollador solo escuchan en localhost.

Para .NET, hay varias formas de escuchar en todas las redes (incluida Tailscale), pero usé esta:

dotnet run --urls http://*:5100;https://*:5101

Así que aquí me conecto a la IP de Tailscale que está asociada con mi instancia de WSL2 y accedo a mi servicio de Linux que se ejecuta dentro de:

¿Hasta dónde podemos llevar esto? Bueno, dado que estoy en la red Tailscale y Glenn se ha conectado a ella, toda la red es plana, ¡así que acceder a mi servicio es trivial! Aquí estoy en Teams con mi escritorio en la parte inferior y el escritorio de Glenn en la parte superior.

Enfriar. ¿Hasta dónde podemos llegar?

Agregue Visual Studio Code y la extensión SSH de desarrollo remoto

Ok, red plana y segura, ¡sin límites! ¿Puedo hacer que mi instancia de WSL2 se trate como un sistema de desarrollo remoto para Glenn? ¿Seguro Por qué no?

Para ser claros - solo soy yo hablando y experimentando, pero hay algo aquí. Esto también puede ser multiplataforma, de Mac a Windows a WSL2, etc. Sin duda, también puede usar esta sección para crear una VM en cualquier host o host en la nube, instalar Tailscale, dejar de preocuparse por el reenvío de puertos y usarlo como un cuadro de desarrollo. Sí, solo puede usar WSL local, pero esto es divertido y puede aprovecharse de otras formas geniales.

En mi máquina WSL2, iniciaré el servicio ssh. Podría compartir claves públicas y hacer un inicio de sesión adecuado basado en claves, pero para esto lo haré por nombre de usuario.

Editaré /etc/ssh/sshd_config y establezca el puerto, ListenAddress y PasswordAuthentication en Sí. He aquí un ejemplo:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

Hice a Glenn un superusuario local solo en mi instancia de WSL2:

sudo adduser glenn
usermoid -aG sudo glenn

Luego, Glenn instala el paquete de desarrollo remoto de VS Code y se conecta mediante Remote a través de SSH a mi IP de Tailscale. Aquí puede ver que VS Code de la máquina de Glenn está instalando VS Code Server y desarrolladores remotos, y Glenn y el código con VS Code arquitectónicamente divididos por la mitad con el cliente en su máquina Windows y el servidor en mi instancia de WSL2.

Tenga en cuenta que en la esquina inferior izquierda, puede ver que su Código VS está conectado a la IP Tailscale de mi instancia de WSL2 Linux.

¿Qué opinas?

Puede comparar Tailscale con cosas como NGrok, que ofrece un tunelizador de host local orientado al desarrollador, pero hay algunas diferencias importantes. ¡Haz tu investigación! No tengo ninguna relación con esta empresa aparte de que soy un fanático.

Patrocinador: El patrocinador de esta semana soy... ¡yo! Este blog y mi podcast han sido un trabajo de amor durante 19 años. Su patrocinio paga mis facturas de alojamiento para ambos Y me permite comprar dispositivos para revisar Y el taco ocasional. ¡Únete a mi!


Linux
  1. Ponga en funcionamiento podman en Windows usando Linux

  2. Primeros pasos con Visual Studio Code (VSC) en Linux

  3. Cómo instalar extensiones de código de Visual Studio

  4. ¿Cómo instalar Visual Studio Code en CentOS 7?

  5. ¿Cómo usar Qt en Visual Studio Code?

Usar Tailscale en Windows para conectarse en red más fácilmente con WSL2 y Visual Studio Code

Depuración remota de una aplicación .NET Core Linux en WSL2 desde Visual Studio en Windows

Mueva fácilmente distribuciones de WSL entre máquinas con Windows 10 con importación y exportación.

Ruby on Rails en Windows no solo es posible, es fabuloso usando WSL2 y VS Code

Escritura y depuración de aplicaciones C++ de Linux desde Visual Studio mediante el subsistema de Windows para Linux

¿Cómo conectar en red Ubuntu y Windows 10?