Schuldi
Anmeldungsdatum: 24. Januar 2011
Beiträge: 7
|
Hallo,
ich möchte mit Wireguard und einem Server (bei Hetzner) drei (Heim-) Netzwerke verbinden. Dabei sollen aus den einzelnen Heimnetzwerken die Clients aus den anderen Netzwerken erreicht werden können. In der Grafik ist die Topologie grob gezeichnet. Wireguard in den Heimnetzen läuft auf RaspberryPis bzw auf einem Ubuntu Server. Meine Frage ist nun, wie ich die Routen konfigurieren muss, sodass die Netzwerke untereinander erreichbar sind. Es reicht, wenn der Interne Traffic über VPN geht, also nicht der gesamte Traffic. Aktuell kann ich von den einzelnen Clients die anderen Clients und den Server anpingen, das Wireguard-Setup funktioniert also. Hier noch die Wireguard Config Dateien: Server:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | [Interface]
Address = 10.10.20.1/24, fc00:23:5::1/64
ListenPort = 51821
PrivateKey = XXX
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT; ip6tables -t nat -A POS$
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -D FORWARD -o %i -j ACCEPT; ip6tables -t nat -D P$
# Client1 Laptop
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.2/32, fc00:23:5::2/128
#Client2 RPi-Home
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.100/32, fc00:23:5::100/128
|
Client RPi-Home | [Interface]
PrivateKey = XXX
Address = 10.10.20.100/32,fc00:23:5::100/128
DNS = 192.168.5.1
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.0/24, fc00:23:5::/64
Endpoint = meine.domain:51821
PersistentKeepalive = 25
|
Client Laptop
| [Interface]
PrivateKey = XXX
Address = 10.10.20.2/32, fc00:23:5::2/128
DNS = 1.1.1.1
[Peer]
PublicKey = XXX
Endpoint = meine.domain:51821
AllowedIPs = 0.0.0.0/0, 192.168.20.0/24, fc00:23:5::/64
PersistentKeepalive = 25
|
- Bilder
|
Ikarus68
Anmeldungsdatum: 8. Mai 2018
Beiträge: 22
|
Hallo, ich bin mir nicht ganz sicher ob das so überhaupt funktionieren kann. Ich habe immer gedacht von Client-Client-Zugriffe gehen nur im Bridged-Mode (TAP) und WireGuard beherrscht nur den Routing-Mode (TUN). Wie schon erwähnt ich bin mir nicht ganz sicher, evtl. können ein Paar Experten im Forum sich dazu äußern. OpenVPN kann TAP, jedoch gibt es meines Wissens bis heute leider noch keinen Android-Client der TAP beherrscht.
|
Rechnungstore
Anmeldungsdatum: 18. Februar 2011
Beiträge: 164
|
Hi Schuldi, hilf mir mal bitte auf die Sprünge, wo jetzt genau das Problem ist. Wenn sich die Kisten gegenseitig über ihre privaten IPs anpingen können, gehe ich davon aus, dass das Routing funktioniert. Was habe ich bei deiner Frage übersehen?
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13931
|
Schuldi schrieb: Aktuell kann ich von den einzelnen Clients die anderen Clients und den Server anpingen, das Wireguard-Setup funktioniert also.
Du meinst die einzelnen Clients, auf denen Wireguard installiert ist und nicht die Multiple-Clients. Du kannst in deinem Router statische Routen zu den Subnets der anderen LANs (sites), mit dem jeweiligen Wireguard-Client als gateway, konfigurieren.
|
Schuldi
(Themenstarter)
Anmeldungsdatum: 24. Januar 2011
Beiträge: 7
|
Vielen Dank für eure Antworten! Genau, ich kann von den Geräten, auf denen Wireguard installiert ist, auch die anderen Wireguard Geräte über die Wireguard IP Adresse anpingen. Ich möchte allerdings von einem Gerät in Netz 1 ein Gerät in Netz 2 erreichen. Das heißt ich möchte folgendes erreichen: | PC1---Wireguard Client 1---Wireguard Server---Wireguard Client 2---PC2
|
Aktuell funktioniert:
| Wireguard Client 1---Wireguard Server---Wireguard Client 2
|
Eine Route auf dem Router (Fritz!Box) habe ich schon eingerichtet:
Netzwerk: 10.10.20.0 (Wireguardnetz)
Subnetzmaske: 255.255.255.0
Gateway: 192.168.5.9 (Lokale Adresse des Wireguard-Clients/Gateway)
|
Cranvil
Anmeldungsdatum: 9. März 2019
Beiträge: 990
|
Die Einrichtung einer einzelnen Route dürfte da nicht reichen. Wenn du auf den übrigen Clients keine Änderungen vornehmen willst, musst du auf jedem dort als Standardgateway eingetragenen Router je eine Route für jedes andere Netzwerk eintragen. Der Router für 192.168.5.0/24 zeigt also für die Netzwerke 192.168.10.0/24, 192.168.20.0/24 sowie die 10.10.20.0/24 auf den lokalen Endpunkt für Wireguard (gemäß Skizze also Client1 mit der IP 192.168.5.?). Im nächsten Schritt brauchst du auf den Endpunkten für Wireguard auch wieder vergleichbare Routen. Beispielsweise benötigt dein Client1 eine Route ins Netzwerk 192.168.10.0/24 mit der Wireguard-IP von Client2 (10.10.200.100) und für den Weg ins Netzwerk 192.168.20.0/24 das Gateway 10.10.200.200. Eine Route für das Wireguard-Netzwerk selbst ist hier nicht mehr notwendig, weil bereits vorhanden. Und wie angedeutet: Das zuvor beschriebene ist auf allen Routern (Standardgateways wie Wireguardendpunkten) anzuwenden. Wenn dann die Firewalls nicht im Weg sind, sollte das schon einmal funktionieren können. Als weiteres Problem kann sich die bereits erwähnte Beschränkung auf tun- anstelle von tap-Adaptern ergeben.
|
Schuldi
(Themenstarter)
Anmeldungsdatum: 24. Januar 2011
Beiträge: 7
|
Dass ich dann auf allen entsprechenden Heimroutern eine Route in die anderen Netze anlegen muss, ist klar und auch kein Problem. Zur Vereinfachung will ich es erstmal hinbekommen, dass ich ein Heimnetz von "außen" erreichbar mache. Aktuell ist es ja ohne Probleme möglich ein RPi als Wireguard Server im Heimnetz zu betreiben und mit entsprechenden Port-Weiterleitungen von "außen" erreichbar zu machen. In dieser Konfiguration ist es dann auch ohne Probleme möglich das gesamte Heimnetz anzusprechen. Das wäre dann nach meinem Verständnix ein Point-to-Site VPN. So müsste es nach meinem Verständnis auch funktionieren, wenn ich einen externen Wireguard Server habe, auf den sich ein Client verbindet, dass dann das (Heim-)Netz des Clients vom Server aus erreichbar ist. Allerdings schaffe ich es aktuell nicht die richtigen Einstellungen zu finden.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13931
|
Schuldi schrieb: So müsste es nach meinem Verständnis auch funktionieren, wenn ich einen externen Wireguard Server habe, auf den sich ein Client verbindet, dass dann das (Heim-)Netz des Clients vom Server aus erreichbar ist. Allerdings schaffe ich es aktuell nicht die richtigen Einstellungen zu finden.
Wie ist auf deinem Server die Ausgabe von:
route -n
und auf deinem Client die Ausgaben von:
sysctl net.ipv4.ip_forward
route -n
sudo iptables -nvx -L -t nat
?
|
Schuldi
(Themenstarter)
Anmeldungsdatum: 24. Januar 2011
Beiträge: 7
|
Auf dem Server: | Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 78.46.XXX.XXX 0.0.0.0 UG 0 0 0 ens3
10.10.20.2 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.100 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
78.46.XXX.XXX 0.0.0.0 255.255.255.224 U 0 0 0 ens3
|
Auf dem RPi: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | root@raspi-home:/home/pi# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
root@raspi-home:/home/pi# route -n
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.5.1 0.0.0.0 UG 202 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.10.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1
root@raspi-home:/home/pi# sudo iptables -nvx -L -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
22822 1526610 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
|
10.10.10.0 ist ein anderes Wireguard Netz, für das der Pi der Server ist, dieses Funktioniert ohne Probleme für Verbindungen von einzelnen Clients von außen und erlaubt Zugriff auf das Heimnetz (192.168.5.0).
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13931
|
Schuldi schrieb: Auf dem Server: | Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 78.46.XXX.XXX 0.0.0.0 UG 0 0 0 ens3
10.10.20.2 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.100 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
78.46.XXX.XXX 0.0.0.0 255.255.255.224 U 0 0 0 ens3
|
Auf dem RPi: | root@raspi-home:/home/pi# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
root@raspi-home:/home/pi# route -n
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.5.1 0.0.0.0 UG 202 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.10.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1
|
Auf dem Server brauchst Du eine definierte Route mit dem wg0-Interface als gateway, in das Subnetz (192.168.5.0/24) deines PI und auf deinem PI brauchst Du auch eine definierte Route mit dem eth0-Interface als gateway, in das Subnetz 192.168.5.0/24 (in dem sich die Geräte befinden, die Du vom Server aus, erreichen willst).
|
Schuldi
(Themenstarter)
Anmeldungsdatum: 24. Januar 2011
Beiträge: 7
|
Ich habe etwas Fortschritt gemacht ☺ Ich setze jetzt folgende Konfigurationen ein: Server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | [Interface]
Address = 10.10.20.1/32
ListenPort = 51821
PrivateKey = XXX
#Client1 Laptop
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.2/32, 192.168.5.0/24, 192.168.10.0/24, 192.168.20.0/24
#Client2 Handy
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.5/32, 192.168.5.0/24, 192.168.10.0/24, 192.168.20.0/24
#Client3 RPi-Home
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.50/32, 192.168.5.0/24
#Client4 RPi-2
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.100/32, 192.168.10.0/24
#Client5 MicroServer
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.200/32, 192.168.20.0/24
|
RPi-Home
| [Interface]
PrivateKey = XXX
Address = 10.10.20.50/32
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.0/24, 192.168.20.0/24, 192.168.10.0/24
Endpoint = tld.de:51821
PersistentKeepalive = 25
|
RPi-2
| [Interface]
PrivateKey = XXX
Address = 10.10.20.100/32
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.0/24, 192.168.5.0/24, 192.168.20.0/24
Endpoint = tld.de:51821
PersistentKeepalive = 25
|
MicroServer
| [Interface]
PrivateKey = XXX
Address = 10.10.20.200/32
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.0/24, 192.168.5.0/24, 192.168.10.0/24
Endpoint = tld.de:51821
PersistentKeepalive = 25
|
Laptop
| [Interface]
PrivateKey = XXX
Address = 10.10.20.2/32
[Peer]
PublicKey = XXX
AllowedIPs = 10.10.20.0/24, 192.168.5.0/24, 192.168.20.0/24, 192.168.10.0/24
Endpoint = tld.de:51821
PersistentKeepalive = 25
|
Die Routen werden durch Wireguard automatisch erstellt: Server Routen
1
2
3
4
5
6
7
8
9
10
11
12 | Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 78.46.XXX.XXX 0.0.0.0 UG 0 0 0 ens3
10.10.20.2 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.5 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.50 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.100 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
10.10.20.200 0.0.0.0 255.255.255.255 UH 0 0 0 wg0
78.46.XXX.XXX 0.0.0.0 255.255.255.224 U 0 0 0 ens3
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
|
RPi-Home Routen
| Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.5.1 0.0.0.0 UG 202 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.10.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1
192.168.5.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1
|
RPi-2 Routen
| Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.1 0.0.0.0 UG 202 0 0 eth0
10.10.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.10.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
|
Microserver Routen
| Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.20.1 0.0.0.0 UG 202 0 0 enp3s0
10.10.20.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.20.0 0.0.0.0 255.255.255.0 U 202 0 0 enp3s0
192.168.20.1 0.0.0.0 255.255.255.255 UH 100 0 0 enp3s0
|
In den Fritzboxen habe ich die entsprechenden Routen für das VPN-Netz und die beiden entsprechenden anderen Heimnetze eingetragen. z.B. Fritzbox-Home
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | Route 1
Netzwerk: 10.10.20.0
Subnetzmaske: 255.255.255.0
Gateway: 192.168.5.9
Route 2
Netzwerk: 192.168.10.0
Subnetzmaske: 255.255.255.0
Gateway: 192.168.5.9
Route 3
Netzwerk: 192.168.20.0
Subnetzmaske: 255.255.255.0
Gateway: 192.168.5.9
|
Ich kann nun zwischen den Netzen "Home" und "RPi-2" untereinander zugreifen.
Nur der Microserver mit Ubuntu 19.10 verhält sich anders als Raspbian. Hier ist über das VPN ausschließlich eine Verbindung auf den Microserver möglich, Zugriffe auf z.B. die dortige Fritzbox verlaufen im Sand. Ping jedoch ist auf alle Geräte im Heimnetz des Mircoservers möglich. Ping/Traceroute auf die Fritzbox werden korrekt durchgeführt, Weboberfläche über ihre IP aufrufen geht nicht.
Entschuldigung für den ausführlichen Post mit den vielen Config Daten...
|