Wireguard in Docker macht Probleme

  • Hallo Liebe Foren-Mitglieder/Innen,


    ich bin dabei mein Wireguard/Firezone Docker Container weiter aufzubauen. Als Test habe ich einen Wireguard mit UI in Docker versucht zu starten. Die UI funktioniert soweit ohne Probleme über meine IPv4 (Port ist nur intern aufrufbar). Allerdings bekomme ich den eigentlichen Wireguard nicht mehr gestartet. Folgende Fehlermeldung erhalte ich:

    wireguard | Uname info: Linux 1213c8e320f3 5.10.0-23-amd64 #1 SMP Debian 5.10.179-2 (2023-07-14) x86_64 GNU/Linux

    wireguard | **** It seems the wireguard module is already active. Skipping kernel header install and module compilation. ****

    ...

    wireguard | **** Client mode selected. ****

    wireguard | [custom-init] No custom files found, skipping...

    wireguard | **** Disabling CoreDNS ****

    wireguard | Warning: `/config/wg0.conf' is world accessible

    wireguard | wg-quick: `wg0' already exists

    wireguard | s6-rc: warning: unable to start service svc-wireguard: command exited 1



    Ich habe über ifconfig das Interface nicht finden können. Wie kann ich weitere Informationen bekommen oder hat von euch vielleicht jemand eine Idee, woran das liegen könnte?

    Ich bin am verzweifeln!

  • Vielleicht ist das Interface down? Was sagt ifconfig -a?


    Offenbar läuft Wireguard schon. Gibt es eine gültige Konfiguration? Überprüfe das mal.


    Einer der Gründe, warum ich diese vorgefertigten Container nicht mag. Solange man exakt das tut, was die vorschlagen, geht es. Sobald man eine Kleinigkeit ändert, steht man im Regen. Lieber selber machen, dann funktioniert es auch. Voraussetzung: Man hat sich vorher damit befasst und weiß, was man tut.

  • ifconfig -a zeigt auch nichts, was auf WireGuard hinweist. Weder ein wg0 Interface, noch ein Interface dass ich mit Wireguard in Verbindung bringen kann.

    Warum soll man sich nicht nicht an Containern bedienen, wenn jemand sich schon den Aufwand gemacht hat. Ich möchte nicht ein extra Webinterface für Wireguard bauen.

  • Warum soll man sich nicht nicht an Containern bedienen, wenn jemand sich schon den Aufwand gemacht hat.

    Weil es halt nicht so funktioniert, wie du dir vorstellst.


    Hast du die Wiregaurd Config überprüft? Und die Frage von stop ist auch berechtigt: Wo genau hast du nach dem Interface gesucht? Im Container? Oder außerhalb?

  • Ob Du nach dem Interface innerhalb oder außerhalb des Container geschaut hast würde ich mich auch interessieren.


    Wäre auch hilfreich das docker-compose oder den docker run command zu sehen. Ich könnte mir vorstellten, dass das in einem container der nicht das host network benutzt bzw nicht privileged ist gar nicht funktioniert.

  • cat /opt/wireguard/docker-compose.yaml

    version: "3"


    services:


    # WireGuard VPN service

    wireguard:

    image: linuxserver/wireguard:latest

    container_name: wireguard

    cap_add:

    - NET_ADMIN

    volumes:

    - ./config:/config

    ports:

    # Port for WireGuard-UI

    - "5000:5000"

    # Port of the WireGuard VPN server

    - "51820:51820/udp"


    # WireGuard-UI service

    wireguard-ui:

    image: ngoduykhanh/wireguard-ui:latest

    container_name: wireguard-ui

    depends_on:

    - wireguard

    cap_add:

    - NET_ADMIN

    # Use the network of the 'wireguard' service

    # This enables to show active clients in the status page

    network_mode: service:wireguard

    environment:

    - SENDGRID_API_KEY

    - EMAIL_FROM_ADDRESS

    - EMAIL_FROM_NAME

    - SESSION_SECRET

    - WGUI_USERNAME=admin

    - WGUI_PASSWORD=password

    - WG_CONF_TEMPLATE

    - WGUI_MANAGE_START=true

    - WGUI_MANAGE_RESTART=true

    logging:

    driver: json-file

    options:

    max-size: 50m

    volumes:

    - ./db:/app/db

    - ./config:/etc/wireguard


    ------------------


    Nachdem interface habe ich außerhalb des Containers gesucht. Der Container wurde mit docker compose up gestartet.

  • Jetzt bin ich ein bisschen verwirrt. Oben in deinem ersten Post steht, dass du WireGuard/Firezone aufbauen möchtest, aber hier ist gar kein Firezone-Container dabei. Kann es sein, dass Firezone noch auf dem selben Host läuft?


    Was gibt denn `docker ps` aus?

  • Nein den Firezone Container habe ich noch gar nicht auf dem Server. Ich möchte erstmal den Wireguard Container ans laufen bekommen..

    Aber du weißt, dass du für Firezone nicht schon bereits einen laufenden WireGuard-Container brauchst/haben darfst ja?
    Will hier nur doppelte Arbeit verhindern :)

  • cat /opt/wireguard/docker-compose.yaml

    Das ist nicht die Wireguard Config. Ich meine die Konfiguration im Container, mit der Wireguard gestartet wird, denn die entscheidet dann ja, ob und wie das wg0 Interface gestartet wird.


    Nachdem interface habe ich außerhalb des Containers gesucht. Der Container wurde mit docker compose up gestartet.

    Dann schau noch mal innerhalb des Containers, ob es da anders aussieht. Das wg Binary läuft ja innerhalb des Containers, und vielleicht erreichst du den Wireguard Service von außen nur über das virtuelle Netzwerkdevice des Containers.

  • Dort im Container ist das interface WG0 zu sehen:

    wg0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

    inet addr:10.252.1.0 P-t-P:10.252.1.0 Mask:255.255.255.0

    UP POINTOPOINT RUNNING NOARP MTU:1450 Metric:1

    RX packets:0 errors:0 dropped:0 overruns:0 frame:0

    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 txqueuelen:1000

    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

  • Gut. Das wg0 Interface hätten wir also gefunden, und damit erklärt sich die Fehlermeldung.


    Reicht dir das jetzt als Lösung? Ich vermute, das allein hilft dir noch nicht weiter, denn das Interface gab es ja oben bei deiner Frage auch schon, aber funktioniert hat es ja nicht wie du dir vorstellst, oder?