OpenWrt als Wireguard Client

CoMo

Commander
Registriert
Dez. 2015
Beiträge
2.851
Hallo,

ich habe hier gerade OpenWrt 23.05.2 auf einen Router geflasht und möchte nun WireGuard als Client einrichten.

Ich habe die Config meines Servers hier:

Code:
[Interface]
PrivateKey = XXX
Address = 10.207.155.3/24,fd11:5ee:bad:c0de::3/64
DNS = 127.0.0.1

[Peer]
PublicKey = XXX
PresharedKey = XXX
Endpoint = <ip-des-servers>:<port-auf-dem-der-server lauscht>
AllowedIPs = 0.0.0.0/0, ::0/0

Ich stelle mich offenbar aber zu doof an. Ich füge ein neues Interface vom Typ "Wireguard VPN" hinzu und importiere die Config. Das funktioniert auch. Es wird aber keine Verbindung aufgebaut.

Außerdem will das Interface einen "Listening Port" und wenn ich da keinen angebe, nimmt er einen random Port. Ich brauche aber doch gar keinen Listening Port, ich will ja keinen Wireguard Server aufsetzen.

Was mache ich falsch?

Achja, das Ziel soll sein: Ich möchte, dass auf einem Interface des Routers alles durch das VPN getunnelt wird.
 
Ich habe den Wireguard-Dienst auf einem Raspi laufen und verbinde mich von außen damit. Hast du in deinem Client die entsprechende IP statisch eintragen? Das habe ich gern mal vergessen. Das VPN verbindet sich dann zwar noch laut Statusmeldung, aber ich hatte keine Verbindung.
 
Also ich kann mich mit anderen Geräten zum Wireguard Server verbinden. Nur von OpenWrt aus scheint es nicht zu funktionieren.
Ergänzung ()

So sieht meine Config in der /etc/config/network aus:

Code:
config interface 'wg_netcup'
        option proto 'wireguard'
        option private_key 'XXX'
        list addresses '10.207.155.3/24'
        list addresses 'fd11:5ee:bad:c0de::3/64'
        list dns 'fc00::10'
        option listen_port '0'

config wireguard_wg_netcup
        option description 'Imported peer configuration'
        option public_key 'XXX'
        option preshared_key 'XXX'
        list allowed_ips '0.0.0.0/1'
        option endpoint_host '<server-ip>'
        option endpoint_port '<server-port>'

Was fehlt?
 
Zuletzt bearbeitet:
Bloss vertippt, oder steht das da wirklich in der Config?
CoMo schrieb:
list allowed_ips '0.0.0.0/1'
Sollte doch eher
Code:
list allowed_ips '0.0.0.0/0'
heißen?
Oder sollen mit Absicht nur IP-Adressen von 0.0.0.0 bis 127.255.255.255 (bzw. 1.0.0.0-126.255.255.255) durchgelassen werden?
 
Ich habe das bereits auf 0.0.0.0/0 geändert.

In meinem Windows Client ist AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1 konfiguriert, das passiert automatisch, wenn man den "Not-Aus" deaktiviert.

Es funktioniert aber in allen Varianten nicht.
 
Zuletzt bearbeitet:
qiller schrieb:
Und bei der Doc zum Wireguard-Client gibts auch kein 'Listening-Port'. Sicher dass du einen Wireguard-Client konfigurierst und keinen Server?

Ja, das scheint einfach der Port für ausgehende Verbindungen zu sein. Den muss man wohl leer lassen, damit Wireguard einen zufälligen wählt.

riversource schrieb:
Da bin ich mir nicht sicher, ob da ne gute Idee ist. Läuft da ein lokaler DNS Server? Aber selbst wenn, würde ich es anders machen.

Ja, da läuft ein Unbound und da soll auch das DNS gemacht werden.
 
CoMo schrieb:
Ich brauche aber doch gar keinen Listening Port, ich will ja keinen Wireguard Server aufsetzen.
Bei Wireguard gibt es in dem Sinne keinen Server und keinen Client. Es gibt zwei gleichberechtigte Partner, die miteinander reden. Jeder öffnet einen Port, und das gegenüber schickt die Daten dahin. Benutzt wird das UDP Protokoll, das ist verbindungslos.

Das heißt, du musst auf jeden Fall einen Listening Port angeben, und der muss auch von außen erreichbar sein.
 
Zuletzt bearbeitet:
Ich habe es nun irgendwie hinbekommen. Ich glaube, es lag an der Firewall. Ich habe nun eine zusätzliche Zone hinzugefügt:

Code:
config zone
        option name 'wireguard'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        list network 'wg_netcup'

Code:
config forwarding
        option src 'lan'
        option dest 'wireguard'

Code:
config rule
        option name 'Allow-Ping-Wireguard'
        list proto 'icmp'
        option src 'wireguard'
        list dest_ip '10.207.155.3'
        option target 'ACCEPT'

Ich kann nun in beide Seiten pingen.

riversource schrieb:
Das heißt, du musst auf jeden Fall einen Listening Port angeben, und der muss auch von außen erreichbar sein.

Ich habe keinen angegeben und im Interface steht auch, dass der Port optional ist.

Jetzt kommt die nächste Aufgabe: Ich hätte gerne, dass jeglicher Traffic, der über eth0 rein- und rausgeht, über den Wireguard Tunnel läuft. Ich nehme an, das geht mit statischen Routen? Aber wie muss ich eth0 konfigurieren?
Ergänzung ()

Hmm, ich kann nur die Wireguard IP anpingen. Die IP-Adressen von anderen Interfaces erreiche ich nicht. Aber das macht wohl auch Sinn, wenn ich nur so eine Route habe:

Code:
10.207.155.0/24 dev wg_netcup scope link  src 10.207.155.3
 
Zuletzt bearbeitet:
CoMo schrieb:
Ich habe keinen angegeben und im Interface steht auch, dass der Port optional ist.
Dann nutzt das System einen zufälligen Port.

CoMo schrieb:
Jetzt kommt die nächste Aufgabe: Ich hätte gerne, dass jeglicher Traffic, der über eth0 rein- und rausgeht, über den Wireguard Tunnel läuft. Ich nehme an, das geht mit statischen Routen?
D.h., Wireguard soll die Defaultroute werden? Ist eth0 auch das WAN Interface des Routers? Oder nur LAN?

CoMo schrieb:
Hmm, ich kann nur die Wireguard IP anpingen.
Das könnte auch an der Firewall liegen, und natürlich an den allowed IPs der Gegenseite.
 
Was ist mit dieser Option aus der Doc, ich sehe die nicht in deiner Config:
Code:
option route_allowed_ips '1'
Die Frage ist auch, wer erstellt eigentlich die Routen. Ist es Wireguard selber? Oder OpenWRT, weil die das in der Erstellung des Tunnels eingescriptet haben? Oder muss man die Routen manuell anlegen? In der Doc seh ich jedenfalls keinen einzigen händischen 'ip route'-Befehl oder sowas. Also vermute ich mal, dass OpenWRT mit der richtigen Konfig die Routen selber erstellt, und beim Beenden des Tunnels auch wieder löscht.

Edit: Ich kenn das eigt. von IPSec IKEv2 Tunnel. Da bedeutet die Angabe 0.0.0.0/0 per se schon, dass der komplette Traffic durch den Tunnel geroutet wird. Dachte das wär bei Wireguard genauso. Wenn man das nicht will, gibt man halt genau das logische Netz an, welches durch den Tunnel erreichbar sein soll, der Rest geht automatisch übers normale Gateway. Unter Windows heißt das dann 'Split-Tunnel'.
 
Zuletzt bearbeitet:
Also. Stand der Dinge.

Tunnel steht, ich kann beide Seiten von beiden Seiten pingen.

Ich habe auf eth0 eine statische IP-Adresse konfiguriert. 10.0.0.1. Und DHCP aktiviert.

Ich habe 2 Firewall-Zonen erstellt. tunnel und wireguard. In der Tunnel-Zone liegt eth0, in der Wireguard-Zone liegt das Wireguard Interface.


waterfox_s70rH336uq.png


Masquerading ist aktiv, also sollte NAT tun.


Ich habe Firewall-Regeln angelegt, die den Traffic zwischen den Interfaces erlauben sollten.

waterfox_tHqazQj32A.png


Ich habe einen Laptop an eth0 angeschlossen, dieser hat erfolgreich eine IP-Adresse bezogen. 10.0.0.122.

Leider komme ich aber nicht ins Internet. Eine Ping auf 8.8.8.8 beantwortet der OpenWrt Router mit Destination Port Unreachable.

Also scheint NAT nicht zu funktionieren. Was könnte ich vergessen haben?
Ergänzung ()

qiller schrieb:
Die Frage ist auch, wer erstellt eigentlich die Routen. Ist es Wireguard selber? Oder OpenWRT, weil die das in der Erstellung des Tunnels eingescriptet haben?

OpenWrt legt eine Route an, mt der sich die beiden Wireguards sehen können:

10.207.155.0/24 dev wg_netcup scope link src 10.207.155.3

riversource schrieb:
D.h., Wireguard soll die Defaultroute werden? Ist eth0 auch das WAN Interface des Routers? Oder nur LAN?

Wireguard soll die default route für alles werden, was an eth0 angeschlossen wird. Der Router hängt einfach bei mir im Netz und bekommt eine DHCP IP auf allen 4 Switchports. Der WAN Port soll mein Wireguard Port werden.
 
Zurück
Oben