WireGuard funktioniert nur mit einem Tunnel
Moin,
seit mehreren Tagen versuche ich im Rechenzentrum ein WireGuard-Server zum laufen zu bringen.
Jeweils 1 Tunnel alleine geht = nur beim Aufbau eines 2ten Tunnels geht der 2te Tunnel nicht ins öffentliche Netz
cat /etc/wireguard/VPN1.conf
wg
ip a
cat /etc/wireguard/VPN1.conf
wg
So. Wieman sieht, besteht der VPN-Tunnel. Pings gehen auch alle perfekt durch
Ausgaben vom Client aus
Wie schon eingangs erwähnt ist der Aufbau EINES Tunnels problemlos möglich.
Wenn ich aber VPN2 hochfahre, dann bekommt VPN kein ping von googel. Die anderen erwähnten pings gehen aber.
Hinweis:
VPN2 benutzt natürlich seine eigene Netzwerkkarte (ens34) die mit einer öffentlichen IP-v4-Adresse(109.+++.+++.24) erreichbar ist.
VPN2 hat auch eigene Keys und natürlich eigene Ports (immer +1).
Sprich:
SERVER
CLIENT
Das waren jetzt nur die differenzen. Keys und so existieren natürlich auch. Sofern gewünscht kann ich das ungekürzt nochmal mit reinpacken
Weiß einer Rat wo ich suchen könnte/müsste ?
Bzw. welche Ausgabe soll ich auch Posten ?
Wieso kann ich keine 2 physiche Netzwerkkarten(aus Sicht des BS) mit 2 öffentlichen IP Adressen hochfahren ?
VIELEN DANK
seit mehreren Tagen versuche ich im Rechenzentrum ein WireGuard-Server zum laufen zu bringen.
Jeweils 1 Tunnel alleine geht = nur beim Aufbau eines 2ten Tunnels geht der 2te Tunnel nicht ins öffentliche Netz
Eckdaten vom Server:
- /26 Netz. (62 öffentliche IPv4 Adressen)
- VMWARE unterbau
- 10 virtuelle Netzwerkkarten (ens32 => ens42)
- Debian 12 (neu aufgesetzt, somit aktueller Stand)
SERVER-Ausgaben:
ip a
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0e:57:7c:ba:9b brd ff:ff:ff:ff:ff:ff
altname enp2s0
inet 109.+++.+++.23/26 brd 109.+++.+++.63 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::++:++:++:abb9/64 scope link
valid_lft forever preferred_lft forever
[..]
50: VPN1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 192.168.206.101/24 scope global VPN1
valid_lft forever preferred_lft forever
cat /etc/wireguard/VPN1.conf
[Interface]
Address = 192.168.206.101/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE; ip6tables -A FORWARD -i wg1 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens32 -j MASQUE>
PostDown = iptables -D FORWARD -i wg1 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens32 -j MASQUERADE; ip6tables -D FORWARD -i wg1 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens32 -j MASQ>
ListenPort = 50001
PrivateKey = qM+++++FA=
[Peer]
PublicKey = Kr+++++UM=
AllowedIPs = 192.168.206.201/32
wg
interface: VPN1
public key: KH+++++xc=
private key: (hidden)
listening port: 50001
peer: Kr+++++UM=
endpoint: 79.+++.+++.224:61989
allowed ips: 192.168.206.201/32
latest handshake: 35 seconds ago
transfer: 319.81 KiB received, 4.83 KiB sent
CLIENTSEITIG
- Debian 12 neu aufgesetzt
- Ebendfalls VMWare unterbau.
- Netzwerkkarte: NAT und Briged getestet. Aktuell auf NAT (192.168.30.*)
- Steht bei mir daheim über 100MBits DSL (Fritte: 192.168.2.1).
ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:<MAC>:10 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.30.110/24 brd 192.168.30.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::+++;+++:cb10/64 scope link
valid_lft forever preferred_lft forever
20: VPN1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 192.168.206.201/32 scope global VPN1
valid_lft forever preferred_lft forever
cat /etc/wireguard/VPN1.conf
## Der Client. Public Key bei der Ausgabe von: cat /etc/wireguard/pubkey
[Interface]
PrivateKey = D9+++++lEs=
Address = 192.168.206.201/32
DNS = 1.1.1.1
## Der Server. Public Key ist der, wenn man die Schnittstelle startet und bei "interface: VPN1" schaut (beim Server)
[Peer]
PublicKey = KH+++++xc=
Endpoint = 109.+++.+++.23:50001
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
wg
interface: VPN1
public key: Kr+++++UM=
private key: (hidden)
listening port: 60783
fwmark: 0xba0a
peer: KH+++++Fxc=
endpoint: 109.+++.+++.23:50001
allowed ips: 0.0.0.0/0
latest handshake: 42 seconds ago
transfer: 7.12 KiB received, 793.95 KiB sent
persistent keepalive: every 25 seconds
So. Wieman sieht, besteht der VPN-Tunnel. Pings gehen auch alle perfekt durch
Ausgaben vom Client aus
ping 109.+++.+++.23 (<= die IP vom Server von ens32)
PING 109.+++.+++.23 (109.+++.+++.23) 56(84) bytes of data.
64 bytes from 109.+++.+++.23: icmp_seq=1 ttl=64 time=16.5 ms
ping 192.168.206.101
PING 192.168.206.101 (192.168.206.101) 56(84) bytes of data.
64 bytes from 192.168.206.101: icmp_seq=1 ttl=64 time=15.9 ms
ping 192.168.206.201
PING 192.168.206.201 (192.168.206.201) 56(84) bytes of data.
64 bytes from 192.168.206.201: icmp_seq=1 ttl=64 time=0.021 ms
ping google.de
PING google.de (172.217.19.67) 56(84) bytes of data.
64 bytes from ham02s17-in-f3.1e100.net (172.217.19.67): icmp_seq=38 ttl=117 time=28.8 ms
Wie schon eingangs erwähnt ist der Aufbau EINES Tunnels problemlos möglich.
Wenn ich aber VPN2 hochfahre, dann bekommt VPN kein ping von googel. Die anderen erwähnten pings gehen aber.
Hinweis:
VPN2 benutzt natürlich seine eigene Netzwerkkarte (ens34) die mit einer öffentlichen IP-v4-Adresse(109.+++.+++.24) erreichbar ist.
VPN2 hat auch eigene Keys und natürlich eigene Ports (immer +1).
Sprich:
SERVER
[Interface]
Address = 192.168.206.102/24
PostUp = iptables -A FORWARD -i wg2 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens34 <= etc. wg1 wurde zu wg2 || ens32 zu ens34
ListenPort = 50002
[Peer]
AllowedIPs = 192.168.206.202/32
CLIENT
[Interface]
Address = 192.168.206.202/32
[Peer]
Endpoint = 109.+++.+++.24:50002
Weiß einer Rat wo ich suchen könnte/müsste ?
Bzw. welche Ausgabe soll ich auch Posten ?
Wieso kann ich keine 2 physiche Netzwerkkarten(aus Sicht des BS) mit 2 öffentlichen IP Adressen hochfahren ?
VIELEN DANK
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6999663623
Url: https://administrator.de/forum/wireguard-funktioniert-nur-mit-einem-tunnel-6999663623.html
Ausgedruckt am: 22.12.2024 um 11:12 Uhr
33 Kommentare
Neuester Kommentar
Hallo,
https://de.wikipedia.org/wiki/Standardannahme
https://de.langenscheidt.com/englisch-deutsch/default
https://www.computerweekly.com/de/definition/Default
https://www.dictindustry.de/englisch-deutsch/default
https://www.thomas-krenn.com/de/wiki/Zwei_Default_Gateways_in_einem_Syst ...
https://www.linuxmaker.com/linux/ein-system-mit-zwei-default-gateways.ht ...
https://www.andysblog.de/linux-mehrere-gateways-und-unterschiedliche-sub ...
https://de.wikipedia.org/wiki/Routingtabelle
Gruß,
Peter
Zitat von @Snowman25:
weitere Default-Route aktiviert. Dein Debian weiß dann nicht mehr, wohin mit den Paketen und macht Murks.
Welches OS kommt denn mit mehreren Default Gateways klar? Mit mehreren Gateways kommt eigentlich jedes OS klar.weitere Default-Route aktiviert. Dein Debian weiß dann nicht mehr, wohin mit den Paketen und macht Murks.
https://de.wikipedia.org/wiki/Standardannahme
https://de.langenscheidt.com/englisch-deutsch/default
https://www.computerweekly.com/de/definition/Default
https://www.dictindustry.de/englisch-deutsch/default
https://www.thomas-krenn.com/de/wiki/Zwei_Default_Gateways_in_einem_Syst ...
https://www.linuxmaker.com/linux/ein-system-mit-zwei-default-gateways.ht ...
https://www.andysblog.de/linux-mehrere-gateways-und-unterschiedliche-sub ...
https://de.wikipedia.org/wiki/Routingtabelle
Gruß,
Peter
Die zwei Bereiche überlappen sich.
Wo überlappen die sich denn?? Die beiden IPs sind doch zumindestens für ein /24er Netz vollkommen korrekt wenn es um die interne WG IP Adressierung geht! Siehe Wireguard Tutorial:Merkzettel: VPN Installation mit Wireguard
Der TO redet oben von einem /26er Netz intern aber hat seine Konfig dann überall mit /24er Masken versehen. Wirr und versteht man nicht denn diese Adressierung ist dann falsch wenn eine /26er relevant sein soll. 🧐
Den weiteren Kardinalsfehler den der TO gemacht hat ist, leider mal wieder, das völlig überflüssige NAT (Masquerading) im Tunnel. Damit ist dann ein transparentes Routing nicht möglich, denn das NAT im VPN Tunnel schafft, wie immer, eine routingtechnische Einbahnstrasse.
Eine klassische Konfig mit einem WG Server und 2 Client Peers sähe so aus wenn das interne WG IP Netz, wie vom TO geplant, ein /26er Netz ist:
Bei einer 192.168.206.101 Server Adresse (Vorgabe des TO's oben) mit einem /26er Prefix intern verwendet der TO also das...
- Netzwerk: 192.168.206.64
- Adressierbare Hostadressen: 192.168.206.65 bis 192.168.206.126
- Client Adressen hier im Beispiel mit dem o.a. internen Netz des TOs: Client-1 = 192.168.206.65, Client-2 = 192.168.206.66
Konfiguration Server:
[Interface]
Address = 192.168.206.101/26
PrivateKey = <Privater_Key_Server>
ListenPort = 50001
[Peer]
PublicKey = <Öffentlicher_Key_Client-1>
AllowedIPs = 192.168.206.65/32
[Peer]
PublicKey = <Öffentlicher_Key_Client-2>
AllowedIPs = 192.168.206.66/32
Konfiguration Client-1:
[Interface]
Address = 192.168.206.65/26
PrivateKey = <Privater_Key_Client-1>
[Peer]
PublicKey = <Öffentlicher_Key_Server>
Endpoint = 109.x.y.24:50001
AllowedIPs = 192.168.206.101/32
PersistentkeepAlive = 25
Konfiguration Client-2:
[Interface]
Address = 192.168.206.66/26
PrivateKey = <Privater_Key_Client-2>
[Peer]
PublicKey = <Öffentlicher_Key_Server>
Endpoint = 109.x.y.24:50001
AllowedIPs = 192.168.206.101/32
PersistentkeepAlive = 25
Was ist denn so schwer an solch einer banalen WG Konfig?! 🤔
Siehe dazu auch ein Praxistutorial.
Die interne IP Adressierung kann man auch etwas intelligenter lösen und nicht so wirr wie der TO wenn man sich das Leben etwas erleichtern will.
Man gibt dem Server die höchste Adresse im internen Netz und die Clients starten "unten" z.B. bei .1 aufsteigend nach oben.
Mit dem Beispiel des TO und seinem selbst vorgegebenen /26er Prefix (255.255.255.192), dann z.B. das 0er Netz mit:
- Netzwerk = 192.168.206.0/26 (Adressrange: 192.168.206.1 bis 192.168.206.62)
- Server = 192.168.206.62
- Client-1 = 192.168.206.1
- Client-1 = 192.168.206.2
Wo überlappen die sich denn??
Die zwei Instanzen der VPN Netze:VPN1.conf:
Address = 192.168.206.101/24
VPN2.conf
Address = 192.168.206.102/24
Der TO redet oben von einem /26er Netz intern aber hat seine Konfig dann überall mit /24er Masken versehen.
Sein "externes" Netz ist /26, nicht sein internes. Die Konfig seiner externen Netzwerkkarte ens32 wäre also mit dem oben abgebildeten "inet 109.+++.+++.23/26" korrekt. Die 24er Masken hat er auf den Schnittstellen der zwei VPN Instanzen, die kann er so groß wählen wie er möchte. Diese müssen ja nicht gleich groß mit seinem externen Netzwerk sein.Also so habe ich es zumindest verstanden...
Die zwei Instanzen der VPN Netze:
Sind auch überflüssig und braucht man in der Regel ja nicht bei WG.Diese müssen ja nicht gleich groß mit seinem externen Netzwerk sein.
Absolut korrekt.Sein "externes" Netz ist /26, nicht sein internes.
Sorry, das war in der etwas wirren Schilderung oben nicht ganz klar. Gut, die Standard Konfig mit 2 Peers steht ja oben und die Anpassung der IP Adressen ist ja auch kein Hexenwerk. Sind auch überflüssig und braucht man in der Regel ja nicht bei WG.
Stimmt eigentlich. Auf eine Instanz können sich mehrere Clients verbinden.Eine zweite Instanz kann man aufbauen, wenn man unterschiedliche Firewall Regeln pro Instanz erstellen möchte und man die einzelnen IPs der Clients nicht pflegen möchte.
wenn man unterschiedliche Firewall Regeln pro Instanz erstellen möchte
Aber auch das wäre überflüssig, denn das kann man mit entsprechenden nftables Regeln auch zentral umsetzen.Unterschiedliche Instanzen sind überflüssige Performancefresser und machen das Setup unnötigerweise komplexer und unsicherer.
mit entsprechenden nftables Regeln auch zentral umsetzen
Dafür müsstest du eben die einzelnen IPs der Clients (oder dessen MAC Adressen) pflegen, um sie in der Regel zu unterscheiden.Wenn das System genügend RAM hat können ruhig zwei Instanzen laufen. Bei uns laufen 7 Instanzen und OpenVPN ist ausreichend performant um die WAN Leitung komplett dicht zu bekommen
Dafür müsstest du eben die einzelnen IPs der Clients (oder dessen MAC Adressen) pflegen
Das ist ja bei WG und seinem Cryptokey Routing ja quasi "im System" eingebaut. und OpenVPN ist ausreichend performant
Nicht wirklich... 🤣 OpenVPN skaliert da eher sehr schlecht und IPsec oder WG machen da einen deutlich besseren (VPN) Job.Aber wir wollen hier jetzt nicht den Thread des TO's kapern und ihm wieder das Wort geben... 🏴☠️
Allerdings MUß jeder VPN Tunnel extern über eine andere IP rauskommen.
Darf man fragen warum? Was sollte der tiefere Sinn von sowas sein?Zum Rest mit dem 1234 Port hat Kollege @NordicMike ja schon alles gesagt...
Sind deine WAN Interfaces am Server separate NICs und wenn ja wie sind die angeschlossen?
Oder arbeitest du mit Secondary IP Adressen auf einer NIC?
https://www.garron.me/en/linux/add-secondary-ip-linux.html
https://ostechnix.com/how-to-assign-multiple-ip-addresses-to-single-netw ...
Relevant ist für die WAN Absender IP immer die Routing Tabelle des Servers die dir ip r zeigt.
Wenn dein Server üblicherweise Responder ist bestimmen immer die Clients mit der Endpoint Adresse die sie ansprechen auch die Absender IP. Der Server kann diese NICHT innerhalb einer Session ändern was zum sofortigen Abbruch führen würde.
Oder arbeitest du mit Secondary IP Adressen auf einer NIC?
https://www.garron.me/en/linux/add-secondary-ip-linux.html
https://ostechnix.com/how-to-assign-multiple-ip-addresses-to-single-netw ...
Relevant ist für die WAN Absender IP immer die Routing Tabelle des Servers die dir ip r zeigt.
Wenn dein Server üblicherweise Responder ist bestimmen immer die Clients mit der Endpoint Adresse die sie ansprechen auch die Absender IP. Der Server kann diese NICHT innerhalb einer Session ändern was zum sofortigen Abbruch führen würde.
Anhand der ersten Zeile sehe ich dann schon warum NIC2 immer als ausgehende IP Adresse angezeigt wird.
Wie gesagt: Statt überflüssiger NICs nur eine und Secondary IPs, die lösen dein Problem... Ein Rätzel weniger
Bretzel?? https://www.duden.de/rechtschreibung/Raetsel
Nur die Quelladresse umzuschreiben geht nicht, es wird ja weiterhin die Main Routing-Tabelle genutzt und da ist nunmal nur ein Default-GW über ein Interface drin und das wird immer genutzt auch wenn du die SRC umschreibst, für sowas legt man i.d.R. separate Routing-Tabellen mit Routing Rules an.
2 Routing-Rules hinzufügen (z.B. für zwei Clients die unterschiedliche ausgehende Ports/Adressen nutzen sollen, "from" kann natürlich auch Subnetze umfassen, ist ja nur ein Beispiel)
Default Routes den neuen Tabellen hinzufügen (Default GW-IP des Providers angeben und auf Interface achten)
Traffic auf ens32 und ens33 natürlich ausgehend masqueraden
Done.
Klappt hier im Test einwandfrei.
Alternativ kannst du statt Quell-Subnetzen auch firewall marks nutzen die du im Wireguard-Setup setzt und dann in der Routing-Rule auswertest und damit entsprechend auf die separaten Routing-Tabellen mappst.
Aber wie auch von @aqui gesagt, ein Interface mit mehreren virtuellen IPs geht natürlich auch dann sparst du dir die Tabellen und schreibst nur die SRC um.
Gruß Katrin
Beispiel wenn man mehrere Interfaces nutzt und den Traffic über bestimmte Interfaces laufen lassen will:
/etc/iproute2/rt_tables
2 neue Routing-Tabellen am Ende hinzufügen#...
#..
10 table-client1
20 table-client2
2 Routing-Rules hinzufügen (z.B. für zwei Clients die unterschiedliche ausgehende Ports/Adressen nutzen sollen, "from" kann natürlich auch Subnetze umfassen, ist ja nur ein Beispiel)
ip -4 rule add from 192.168.206.201/32 table table-client1
ip -4 rule add from 192.168.206.202/32 table table-client2
Default Routes den neuen Tabellen hinzufügen (Default GW-IP des Providers angeben und auf Interface achten)
ip -4 route add default via 109.+++.+++.1 dev ens32 table table-client1
ip -4 route add default via 109.+++.+++.1 dev ens33 table table-client2
Traffic auf ens32 und ens33 natürlich ausgehend masqueraden
iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
Klappt hier im Test einwandfrei.
Alternativ kannst du statt Quell-Subnetzen auch firewall marks nutzen die du im Wireguard-Setup setzt und dann in der Routing-Rule auswertest und damit entsprechend auf die separaten Routing-Tabellen mappst.
Aber wie auch von @aqui gesagt, ein Interface mit mehreren virtuellen IPs geht natürlich auch dann sparst du dir die Tabellen und schreibst nur die SRC um.
Gruß Katrin
Deine IP Addressierung ist total für'n A...., stimmt alles nicht überein. Mal benutzt du 192.168.206.203 mal 192.168.203.203 und am Server 192.168.103.103/24 ????? 🙃
Alles vollkommen fremde Subnetze, bring da erst mal Ordnung rein und trink einen Kaffee ... ☕
Wie gesagt klappt out of the box hier im Test, wenn man denn auch die Brille aufsetzt .
Alles vollkommen fremde Subnetze, bring da erst mal Ordnung rein und trink einen Kaffee ... ☕
Wie gesagt klappt out of the box hier im Test, wenn man denn auch die Brille aufsetzt .
Bei manchen muß ich mich aber nochmal einlesen.
Dann tu das erst mal, hilft ungemein fürs Verständnis. Rumprobieren auf gut Glück ist meist nie gut.
Welcome to the club .
Wenn es das denn nun war bitte deinen Thread dann auch als erledigt markieren!
Wie kann ich einen Beitrag als gelöst markieren?
Wie kann ich einen Beitrag als gelöst markieren?