es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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)
    }
}
Tags:  ,

Answer

  1. Avatar for 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.

Comments are closed.