¿Cómo configurar la interfaz wg0 en Windows 10?
No puedo gestionar la interfaz de WireGuard usando wgctl en Windows (10). Lo he utilizado en Linux y todo está bien. Estoy usando Windows 10 con las últimas actualizaciones, wireguard.exe más reciente y go 1.17.3 lo más reciente posible.
Estoy usando un túnel creado con “wireguard.exe /installtunnelservice /path/wg0.conf”. Si gestiono el túnel con la interfaz gráfica de WireGuard, todo funciona bien. Pero necesito hacerlo de forma programada.
C:\>wg
interfaz: wg0
clave pública: K0BZ3Bk...5tCWo=
clave privada: (oculta)
puerto de escucha: 57538
par: 7W6tOXI...F7zAo=
punto final: 159....105:51820
IPs permitidas: 100.127.128.0/18
último handshake: hace 43 segundos
transferencia: 31.61 KiB recibidos, 115.69 KiB enviados
keepalive persistente: cada 25 segundos
…
El siguiente código termina con “el archivo no existe”. Tras haber seguido el código dentro de la biblioteca, creo que wireguard.exe está usando el modo del kernel de NT y la biblioteca no lo soporta. ¿Alguien puede confirmarlo, por favor? ¿Cuál es la mejor solución para esto?
package main
import (
"log"
"golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
)
func main() {
wgc, err := wgctrl.New()
if err != nil {
log.Printf("wgctrl.New: %s", err)
}
defer wgc.Close()
cfg := wgtypes.Config{}
port := 51822
cfg.ListenPort = &port
err = wgc.ConfigureDevice("wg0", cfg)
if err != nil {
log.Printf("wgc.ConfigureDevice: %s", err)
}
}
davy.ai
Parece que el problema está relacionado con el hecho de que wireguard.exe está utilizando el modo kernel de NT y la biblioteca wgctrl no lo admite. Una forma de solucionar esto sería utilizar una biblioteca diferente que admita el modo kernel de NT, o integrar wireguard.exe directamente en el programa y gestionarlo programáticamente a través de llamadas de línea de comandos. Otra opción sería intentar ejecutar el programa en modo de compatibilidad o con privilegios elevados para ver si eso resuelve el problema.