opnsense wireguard ip routing

Registriert
Juli 2019
Beiträge
190
Hallo,

da ich von CGNAT betroffen bin und einige Server bei mir daheim hoste, brauche ich natürlich eine statische öffentliche IPv4.

Dafür habe ich mir einen VPS gemietet mit zusätzlicher static IPv4 und habe darauf opnsense eingerichtet mit Proxy Arp und einem Wireguard Tunnel zu meiner opnsense daheim. In dem Tunnel route ich sozusagen die öffentliche IP nach Hause.

Bei der opnsense daheim wiederum habe ich diese geroutete IP in der Wireguard Schnittstelle angelegt, quasi eine weitere virtuelle WAN Schnittstelle. Da fangen die Probleme an.

Früher konnte ich dieser Schnittstelle die geroutete IP als statische IP mit einem Gateway anlegen. Alles hat funktioniert. Meine Server liefen über die geroutete IP und waren/sind darüber auch erreichbar.

Nach einigen opnsense Upgrades ging das nicht mehr. Man kann einer WG Schnittstelle keine IP Adresse mehr zuweisen. Das verstehe ich auch. Schließlich gibt man ja die IP sowie das Gateway in der WG Konfig in der Instanz ein. Und obwohl ich meiner Schnittstelle nicht dieselbe geroutete IP direkt zuweise, sehe ich im Dashboard unter Interfaces meine WG Schnittstelle und es wird die bezogene IP angezeigt, passt.

Allerdings funktioniert es nicht! Meine Server empfangen nichts mehr und können auch nichts senden. Erst wenn ich einen kleinen Trick anwende und der WG Schnittstelle das Gateway und die IP eintrage über die opnsense shell, erst dann funktioniert es wieder richtig.

Das möchte ich gerne verstehen, weil eigentlich müsste es ohne direkte Zuweisung funktionieren.

So, worum es mir hier eigentlich geht, ist folgendes:
Ich möchte eine zweite öffentliche IP durch diesen Tunnel routen und frage mich, ob das möglich ist.

Meine ersten Tests haben leider nicht funktioniert. Ich habe dem bestehenden Tunnel die zweite IP hinzugefügt, eine entsprechende NAT Regel gesetzt und es funktioniert leider nicht.

Ist es möglich, dass man einer Schnittstelle zwei IPs zuweist? Beide IPs benötigen dasselbe Gateway. Das Gateway kann man soweit ich weiß nur einer Schnittstelle zuweisen.

Bin gespannt.
 
Zuletzt bearbeitet:
Anonymous User schrieb:
Dafür habe ich mir einen VPS gemietet mit zusätzlicher static IPv4 und habe darauf opnsense eingerichtet mit Proxy Arp und einem Wireguard Tunnel zu meiner opnsense daheim. In dem Tunnel route ich sozusagen die öffentliche IP nach Hause.
Das Vorgehen an sich mache ich auch so, aber wofür Proxy ARP? Warum routest du nicht einfach vom VPS nach Hause?

Anonymous User schrieb:
Bei der opnsense daheim wiederum habe ich diese geroutete IP in der Wireguard Schnittstelle angelegt, quasi eine weitere virtuelle WAN Schnittstelle.
Meinst du damit die öffentliche IP, die du zu Hause einem Interface zugewiesen hast? Also jetzt bin ich raus, das verstehe ich überhaupt nicht. Wie genau hast du das gemacht? Zeige mal Konfigurationen und das Ergebnis anhand der Internetschnittstellen und den resultierenden Fluss der Datenpakete. Was wolltest du damit bezwecken?

Anonymous User schrieb:
Früher konnte ich dieser Schnittstelle die geroutete IP als statische IP mit einem Gateway anlegen.
Welches Gateway?

Anonymous User schrieb:
Und obwohl ich meiner Schnittstelle nicht dieselbe geroutete IP direkt zuweise, sehe ich im Dashboard unter Interfaces meine WG Schnittstelle und es wird die bezogene IP angezeigt, passt.
Damit meinst du jetzt die IP aus dem Transfernetz?

Anonymous User schrieb:
Ich möchte eine zweite öffentliche IP durch diesen Tunnel routen und frage mich, ob das möglich ist.
Technisch überhaupt kein Problem. Aber ich würde es völlig anders machen, als du es bislang machst. Jedenfalls, als es sich bislang anhört.

Zeige mal anhand konkreter Adressen und Beispiele, wie das Netzwerk-Setup bislang aussieht, bei dir zu Hause und auf dem VPS. Ich habe überhaupt noch nicht verstanden, was du da machst, aber es hört sich sehr kompliziert an für ein eigentlich sehr einfaches Problem.
 
  • Gefällt mir
Reaktionen: Bob.Dig
@riversource im Grunde habe ich es genau so gemacht wie in dieser Anleitung beschrieben:

https://www.busche.org/index.php/20...on-opnsense-zu-opnsense-routen-cgnat-umgehen/

Falls es auch anders bzw besser geht, würde ich das gerne wissen. Wie hast du das umgesetzt?

riversource schrieb:
Damit meinst du jetzt die IP aus dem Transfernetz?
Ja

riversource schrieb:
Das Gateway vom Hoster, bei dem ich die öffentlichen IPs beziehe.


Aktuell würde ich das so lösen, dass ich für die zweite öffentliche IP eine weitere opnsense Instanz aufsetze mit dem Setup und einen eigenen Tunnel erstelle und dafür daheim eine eigene Schnittstelle, fertig

Kosten würde mich das 5,50€
Aber ist natürlich blöd, wenn ich für jede zusätzliche IP einen eigenen VPS miete.
Gut, in Zukunft kann ich mir nicht vorstellen, dass ich deutlich mehr Adressen bräuchte...
 
Anonymous User schrieb:
@riversource im Grunde habe ich es genau so gemacht wie in dieser Anleitung beschrieben:
Das halte ich für maßlos oversized und unglaublich kompliziert, ohne einen wirklichen Mehrwert zu bieten. Allein schon der Umstand, dass man quasi standardmäßig eine (kostenpflichtige) zweite IPv4 braucht, ist mehr als seltsam.

Anonymous User schrieb:
Aktuell würde ich das so lösen, dass ich für die zweite öffentliche IP eine weitere opnsense Instanz aufsetze
In dem merkwürdigen Konstrukt braucht man das wahrscheinlich. Auf andere Art und Weise könnte man das einfach mit über eine vorhandene VPN Verbindung tunneln.

Ich würde einfach einen VPN Tunnel zwischen dem VPS und zu Hause etablieren, der kein NAT macht, sondern zwischen beiden Netzen vollwertig routet. Jetzt kann man einfach für jeden Port von jeder öffentlichen IP, die man nutzen will, eine iptables Regel auf den entsprechenden Zielhost zu Hause einrichten. Anzahl der öffentlichen IPs und der zu nutzenden Ports ist dabei quasi egal, da gibt es kein Limit (außer die maximale Anzahl von 65.536 Ports pro IP). Falls man einen Rechner von zu Hause fest auf eine öffentliche Abgangs-IP des VPS mappen möchte, geht das ebenfalls einfach mit Hilfe einer einfachen SNAT Regel.

Das Vorgehen hat meines Erachtens neben der Einfachheit diverse weitere Vorteile. So profitiert man von der Firewall des VPS, und alle möglichen Scanner- oder Hacker Pakete, die auf einer öffentlichen IP permanent einprasseln, werden nicht unnötigerweise durch den Tunnel übertragen, sondern nur die Applikationspakete, die man wirklich möchte.
 
okay, das klingt umsetzbar und deutlich einfacher, das würde ich später bzw mal morgen testen.

Also müsste ich dann einen "normalen" Wg Tunnel aufbauen und als Transfernetz ein rfc 1918 Netz nehmen. das noch nicht in Verwendung ist? Also ohne die öffentliche ip.

Mein aktuelles Setup funktioniert auch mit nur einer IP. Da hätte ich den Tunnel mit ipv6 initialisieren können, darauf hatte ich jedoch keine Lust.
 
Anonymous User schrieb:
Also müsste ich dann einen "normalen" Wg Tunnel aufbauen und als Transfernetz ein rfc 1918 Netz nehmen. das noch nicht in Verwendung ist?
Ja.

Anonymous User schrieb:
Mein aktuelles Setup funktioniert auch mit nur einer IP. Da hätte ich den Tunnel mit ipv6 initialisieren können, darauf hatte ich jedoch keine Lust.
Das kann eigentlich nicht funktionieren. Die öffentliche IP, die im Heimnetz eingesetzt wird, kann nicht gleichzeitig für den Tunnelaufbau verwendet werden. Steht ja auchbsehr deutlich in der Anleitung.
 
riversource schrieb:
Ja.


Das kann eigentlich nicht funktionieren. Die öffentliche IP, die im Heimnetz eingesetzt wird, kann nicht gleichzeitig für den Tunnelaufbau verwendet werden. Steht ja auchbsehr deutlich in der Anleitung.
Doch, wenn man den Tunnel mit Ipv6 aufbaut und die öffentliche Ipv4 direkt als floating ip nutzt:

Zitat aus der Anleitung:
"FALLS man IPv6 daheim hat und weiss wie man es benutzt, kann man die Wireguard Tunnel per IPv6 aufbauen, die IPv4 auf dem OPNsense 1 (siehe unten) vom WAN Interface entfernen und direkt diese durchleiten. Es ist erstmal nicht Bestandteil dieser Anleitung aber leicht zu adaptieren, da man statt der Zusatz IPv4 nun einfach die Primary IPv4 durchreicht."
Ergänzung ()

Was ich nicht verstehe, es gibt noch eine Person, die das Setup so aufgebaut hat wie ich.
https://administrator.de/tutorial/feste-ips-zuhause-in-pfsense-via-wireguard-tunnel-1124828094.html
 
Zuletzt bearbeitet:
Anonymous User schrieb:
Doch, wenn man den Tunnel mit Ipv6 aufbaut und die öffentliche Ipv4 direkt als floating ip nutzt:
Dann läuft der Verkehr aber über 2 öffentliche IPs. Das hast du ja nicht gemacht, hast du geschrieben.
 
Was genau ist das Ziel? Deine Server Dienste zu Hause über die öffentlichen IPs des VPS erreichbar machen?
 
Wenn Du zwei öffentliche IPs auf einer Schnittstelle auf dem VPS haben willst, dann löse das erst mal ohne WireGurad. Wenn das steht dann machst Du einfach zwei Tunnel auf, optimalerweise über IPv6.
 
riversource schrieb:
Wenn ich das richtig deute, dann will er, warum auch immer, zwei öffentliche IPs auf seiner Sense zuhause nutzen können. Damit das dynamisch klappt, braucht er dort zwei Gateways, was wiederum zwei Tunnel erfordert, zumindest nach meinem Laien-Verständnis.
 
riversource schrieb:
Was genau ist das Ziel? Deine Server Dienste zu Hause über die öffentlichen IPs des VPS erreichbar machen?
genau, einerseits das und manche Server sollten auch über die static IP nach außen laufen, also bidirektional.
Das ist wichtig für z.B. den Mailserver.
Ergänzung ()

Bob.Dig schrieb:
Wenn ich das richtig deute, dann will er, warum auch immer, zwei öffentliche IPs auf seiner Sense zuhause nutzen können. Damit das dynamisch klappt, braucht er dort zwei Gateways, was wiederum zwei Tunnel erfordert, zumindest nach meinem Laien-Verständnis.
Und wieso brauch ich da zwei Gateways? Meinst du interne Wireguard Gateways oder das der öffentlichen IPs? Denn alle drei öffentliche IPs werden auf einen Vps geroutet, dem wiederum ist ein default Gateway für diese drei IPs zugewiesen.

Mit zwei virtual IP Aliasen kann ich anscheinend dem WG Interface mehere IP Adressen mit nur einem Gateway zuweisen.

Jetzt bräuchte ich noch die WG Konfiguration.
 
Zuletzt bearbeitet:
Die WG Konfiguration ist einfach. Wichtig ist eigentlich nur, dass keinerlei NAT Regeln in der WG Konfiguration auftauchen. Die Netze müssen sich gegenseitig vollwertig erreichen können.

Beispiel:
Dein Heimnetz mit den Servern nutzt das Netz 192.168.0.0/24
Das WG Transportnetz hat 10.0.0.0/24
Der Server hat 2 öffentliche IPs: 1.2.3.4 und 5.6.7.8

Jetzt nutzt du eine WG Config aus dem Lehrbuch ohne irgendwelchen Klimbim. Server:
Code:
[Interface]
Address = 10.0.0.1/32
ListenPort = 40210
PrivateKey = PrivateKay

[Peer]
PublicKey = PublicKey
AllowedIPs = 10.0.0.0/24,192.168.0.0/24
Endpoint = Client:40210
PersistentKeepalive = 25
Client:
Code:
Address = 10.0.0.2/32
ListenPort = 40210
PrivateKey = PrivateKay


[Peer]
PublicKey = PublicKey
AllowedIPs = 0.0.0.0/0
Endpoint = Server:40210
PersistentKeepalive = 25
Achtung: Im Client steht 0.0.0.0/0 als Allowed IPs drin, das brauchst du, wenn Rechner von die zu Hause die VPN Verbindung als Default-Gateway nutzen sollen. Ggf. musst du über Metriken dafür sorgen, dass nicht der gesamte Heimnetz-Traffic oder zumindest der gesamte Traffic des VPN Gateways über diese Verbindung läuft.


Willst du jetzt einen Dienst von außen erreichbar machen, gibt es eine entsprechende iptables Regel dafür auf dem VPS:
Code:
iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.10:443
iptables -t nat -A PREROUTING -i eth0 -d 5.6.7.8 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.11:443
Das Beispiel routet jeweils Port 443 von beiden öffentlichen IPs auf unterschiedliche Server bei dir zu Hause. Du kannst beliebige Quell- auf beliebige Zielports mappen, und auch Gruppen oder Bereiche von Ports angeben.

Wenn du nun von einem Server in deinem Heimnetz eine der öffentlichen IPs fest nutzen, musst du dafür sorgen, dass dieser Server die VPN Verbindung als Default Gateway nutzt. Dafür sind ggf. statische Routen in deinem Heimnetz erforderlich. Auf dem VPS braucht es dann noch so eine Regel:
Code:
iptables -t nat -A POSTROUTING -s 192.168.0.10 -i wg0 -j SNAT --to-source 5.6.7.8
Ggf. - da bin nich mir nicht ganz sicher - braucht es noch eine MASQUERADE Regel für den ausgehenden VPN Verkehr auf dein WAN Interface. Das musst du testen.
 
@riversource, vielen Dank für die Erläuterung. Das ist verständlich und könnte funktionieren. Behalte ich auf jeden Fall im Hinterkopf. Meine aktuelle WG Konfig sieht ähnlich aus, nur dass ich die öffentliche IP als Tunneladresse nutze.

Ich habe es auch tatsächlich geschafft, die zweite öffentliche IP durch den Tunnel zu leiten. Ich habe ganz einfach zur bestehenden Tunneladresse die zweite hinzugefügt, auf der homesense diese IP als Alias auf der WG Schnittstelle angelegt und eine entsprechende SNAT und DNAT Regel gesetzt. Zack, funktioniert wunderbar.

Auch das Problem was ich anfangs mit der IP Zuweisung der WG Schnittstellen hatte, hat sich erledigt. Die Schnittstellen selbst haben keine IP Zuweisung. Nur das VPS Gateway. Es hatte anfangs scheinbar nicht funktioniert weil blöderweise eine 1:1 Nat Regel angelegt war, wie, keine Ahnung. Entfernt, funktioniert.

Zudem habe ich das Proxy Arp auf der VPS Seite entfernt, ich weiß gar nicht, wozu genau das gut sein sollte, alles funktioniert genauso gut ohne. Dazu habe ich noch eine WAN Regel für die zweite IP auf dem VPS gesetzt. Aktuell filtert die Sense VPS seitig nichts, das kann ich ganz leicht ändern. Statt einer Allow any Regel zur öffentlichen IP, kann ich da schon portbasiert arbeiten usw.

Also meine Konfig ist nicht wirklich komplex und ich sehe da keine Nachteile. Ich kann jede beliebige IP durch den Tunnel routen, auch IPv6 bestimmt. Zusätzlich werde ich noch den Traffic der VPS Sense mit FW Regeln weiter restriktieren.

-Eine Kleinigkeit, die ich bisschen blöd finde, auf dem OPNsense Dashboard sieht man bei der WG Schnittstelle nur die eine IP von den beiden :( Ich hätte dort gerne beide öffentlichen IPs angezeigt.
Ergänzung ()

Oder was meinst du, würde gegen NAT sprechen? ICh wüsste auf anhieb gar nicht, wie ich die IPtables in OPNsense umsetzen sollte. Linux ja, OPNsense nicht. Könnte ich bestimmt mit etwas Recherche herausfinden bei Bedarf
 
Zuletzt bearbeitet:
Anonymous User schrieb:
Aktuell filtert die Sense VPS seitig nichts
Keine gute Idee. Die ganzen Attacken, die von außen auf öffentliche IPs einprasseln, leitest du durch den VPN Tunnel. Unnötige Systemlast für beide Seiten des Tunnels, und eine Sicherheitslücke. Lass nur das durch, was auch wirklich im Heimnetz benötigt wird.
 
Zurück
Oben