Solucionando el error 809 en Windows al intentar conectar una VPN con L2TP/IPSec.

Hoy configuraba en el trabajo un compañero una conexión VPN a través del firewall de un cliente nuevo y se encontraba siempre con el mismo código de error: el 809.

En principio todos los datos parecían correctos y en mi equipo (Xubuntu) y el de otro compañero (Mac) funcionaba, así que parecía que era algo relativo a la configuración de Windows. Tras un rato de búsqueda por Google me encontré con lo siguiente: Windows por defecto no puede establecer conexiones seguras con servidores que estén ubicados tras un dispositivo que haga NAT.

Entonces ¿cómo solucionamos esto?. Pues siguiendo estos pasos para cambiar esta configuración en el registro:

  • Abrimos el editor de registro regedit
  • Buscamos la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
  • Añadimos un nuevo valor de DWORD de 32 bits que se llame AssumeUDPEncapsulationContextOnSendRule
  • Buscamos también la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
  • Si no existe la clave IPsecThroughNAT la creamos y le ponemos como valor 2, en caso de que exista modificamos su valor a 2.
  • Reiniciamos el equipo.

El valor 2 en estas claves implica que Windows permitirá realizar asociaciones de seguridad tanto si el cliente como el servidor se encuentran tras un dispositivo que haga NAT.

Anuncios

Usar PowerShell para exportar los eventos de seguridad de Windows en formato XML

Vamos a seguir hablando de cosillas del PowerShell de Windows y vamos a ver cómo podríamos ver el log de eventos de seguridad de Windows y como podríamos exportarlo a formato XML.

El comando Get-EventLog es, en este caso, el que nos permitirá extraer datos de los logs de eventos de Windows. Para filtrar los eventos de seguridad le pasaremos como parámetro -LogName, con el valor Security. Nos quedaría este comando:

Get-EventLog -LogName Security

Os dejo una captura de la salida del comando (si mi consola os luce un poco rara, podéis ver esta entrada sobre cómo personalizar la apariencia de la misma). Para mi ejemplo he llamado después al comando Select-Object especificando que se muestren solo las primeras 40 filas.

Powershell salida

Bien, con esto tenemos la salida de datos en pantalla, pero lo que queremos es tener los datos en un fichero XML, un fichero al que llamaremos RegistroSeguridad.xml. ¿Cómo lo formatemos? Tenemos dos opciones:

  • Usar el comando Convert-XML y dirigir la salida a un fichero con Out-File
  • Usar el comando Export-Clixml, que en una sola acción hace lo mismo que los dos comandos comentados arriba.

El primer comando sería algo como esto (para no hacer un fichero demasiado descomunal he añadido que solo se cojan los primeros 400):

 Get-EventLog -LogName Security | Select-Object -First 400 | ConverTo-XML | Out-File RegistroSeguridad.xml

El segundo comando sería así:

 Get-EventLog -LogName Security | Select-Object -First 400 |Export-Clixml RegistroSeguridad.xml

¿Por qué es mejor que usemos la segunda opción? Pues porque además de tener una sintaxis más simplicada también obtiene un mejor rendimiento al usar una función que está diseñada específicamente para la conversión y exportación directa, en lugar de llamar a dos (una para conversión y otra para exportación).

Modificando la apariencia de PowerShell

No se a vosotros, pero a mi la apariencia de la interfaz por defecto del PowerShell de Windows no me seduce nada, y estos días tengo que trabajar bastante con él:

Ni la tipografía me resulta cómoda a la hora de leer, ni el color de fondo me convence y hasta me parece demasiado pequeño el tamaño de la consola. Pero podemos personalizar esta interfaz. Basta con hacer click sobre el icono de Powershell que hay en la esquina izquierda de la ventana, al lado del nombre:

Icono sobre el que pulsar

Ahí podéis ir a al menú “Propiedades“. Si no ejecutamos el PowerShell con permisos de administrador los cambios no serán permanentes y se perderán al cerrar la ventana.

La primera pestaña, Opciones, nos permitirá activar o desactivar las opciones de autocompletado, de inserción (pegar en un solo click) o de edición rápida. También nos dejará definir el tamaño del buffer o el del cursor:

La segunda pestaña, Fuente, nos permitirá cambiar la tipografía y su tamaño:

La tercera pestaña, Diseño, nos permite definir el tamaño del buffer, el de la ventana y la posición de la misma:

Y finalmente en la pestaña Colores podremos elegir el color de fondo y de letra para la pantalla de PowerShell y para las pantallas emergentes.

Trasteando un poco lo podemos dejar a nuestro gusto. En mi caso me gusta que parezca una venta clásica de MS-DOS, puede que por nostalgia o por la fuerza del hábito.

¿Cómo forzar que la instrucción “net use /delete” no nos pida confirmación para desmontar una unidad de red?

Vamos con un tip rápido sobre sistemas operativos. Si en Windows queremos desmontar una unidad de red desde un script utilizaremos el comando net use con el parámetro /delete. El problema es que este nos pedirá confirmación, por lo que si es una tarea automatizada se quedará esperando la respuesta ¿Cómo podemos forzar que se desconecte la unidad? Pues con el parámetro /y después del /delete.

La cosa sería más o menos la siguiente:

#Así para desmontar todas
net use * /delete /y

#Cambiando * por el nombre de la unidad 
#desconectamos solo esa
net use x: /delete /y

La opción /y hará que se interprete “yes” como respuesta por defecto a todas las peticiones de confirmación.

Poñer o Windows 10 en Galego

Imos pechar este 2018 cunha entrada técnica en galego. Dende fai anos a instalación dunha distribución do Linux en galego era una tarefa sinxela, canda menos en distribucións baseadas no Ubuntu pois o galego era un dos idiomas dispoñibles na instalación. Mais o Windows era cousa ben distinta, precisaba da instalación dunha serie de complementos que non sempre funcionaban ben. A boa nova é que con Windows 10 este proceso é moito máis sinxelo.

Basta con procurar no menú e a Configuración->Todas las Configuraciones->Hora e Idioma. Alí no menú da columna esquerda eleximos Región e Idioma. Na lapela dereita abrirá unha serie de opcións e temos un botón de Agregar un Idioma no que pulsar.

Hora e idioma

Ao pulsar ese botón poderemos ver unha listaxe con tódolos idiomas dispoñibles e un cadro no que facer a procura do que queremos de forma directa. Una vez atopamos o galego calcamos sobre el, e na pantalla de confirmación escollemos estas opcións e calcamos no botón de Instalar.

Cando vexamos a confirmación de que o proceso de instalación rematou teremos que facer un reinicio do equipo para que este arrinque en galego, tendo non só o sistema operativo mais tambén tódalas aplicacións que sexan compatibles.

Activar Windows Subsystem for Linux en Windows 10 e instalar una distribución de Linux

Ya en su día hablamos aquí sobre cómo activar el bash de Ubuntu en Windows10. Vamos a actualizar y ampliar un poco esto viendo cómo activar el Windows Subsystem for Linux en Windows y cómo instalar después una distribución de Linux:

El primer paso es activar en nuestro Windows 10 la característica del subsistema para Linux. Para eso tenemos que abrir el PowerShell y ejecutar el siguiente comando:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Tras esto toca reiniciar para completar la activacion. Una vez realizado tenemos dos opciones para instalar nuestra distribución. La primera y más cómoda, para las versiones más actualizadas de Windows 10, es hacerlo directamente desde el Windows Store, la tienda de aplicaciones de Microsoft. Están disponibles Ubuntu, OpenSuse, KaliLinux, Debian y la versión Enterprise de Suse para servidores.

La otra opción es descargar e instalar manualmente. Podéis buscar el paquete appx y descargarlo desde el navegador o podéis serviros de cURL para hacerlo desde el PowerShell con el siguiente comando:

curl.exe -L -o ubuntu-1804.appx https://aka.ms/wsl-ubuntu-1804

En el ejemplo descargaríamos la versión 18.04 de Ubuntu. Tendrías que cambiar la version por la que corresponda.

Una vez descargado tendríamos que desempaquetar e instalar. Desde PowerShell sería así, poniendo las rutas y el nombre de fichero que corresponda:

Expand-Archive ~/Ubuntu.appx ~/Ubuntu

Una vez abierto buscamos el archivo .exe de nuestra distribución, en este caso sería Ubuntu.exe y lo ejecutamos.

Por comodidad se recomienda añadir ese fichero ejecutable al path de Windows, de esta forma podrás invocarlo desde cualquier parte sin tener que escribir toda la ruta.

Un último apunte importante: la distribución de Linux debe estar almacenada en el mismo disco duro donde está instalado el sistema operativo. En caso contrario mostrará un error en la ejecución.