Netzwerkfrage betreffend Proxmox & einer pfSense-VM

Bob.Dig

Commodore
Registriert
Dez. 2006
Beiträge
4.122
Proxmox-Noob hier.
Kann ich auf einem Proxmox-VPS mit nur einer NIC eine pfSense-VM betreiben, ohne den Traffic zu NATen, sondern die einzige öffentliche IPv4-Adresse direkt an der pfSense-VM anliegen haben?
Meine Idee war Proxmox (per IPv6) und die VM (per IPv4) beide an vmbr0 anzuschließen, die VM hat aber keine Konnektivität...
 
Zuletzt bearbeitet:
Lösung
Ich hab es jetzt so umgesetzt, wie vom nun schon zweimal verlinkten Dennis S. beschrieben, also leider mit NAT auf Proxmox selbst. Irgendwie enttäuschend, dass Proxmox da doch recht limitiert nach meinem Empfinden.
Die einzige öffentliche IP liegt an deinem Router an. Du kannst dem WAN Port der VM eine IP geben im Netzwerk des Routers und am Router allen Traffic an diese IP weiterleiten, dann hast du was du möchtest. Bei Fritz-Boxen heisst das "Eposed Host".
Ergänzung ()

Dein internes Netzwerk muss dann natürlich ein anders sein, also Fritte: 192.168.178.0/24 und intern z.B. 192.168.0.0/24.
Ergänzung ()

Für IPv6 gilt das gleiche .... anderes Netz ...
 
@d2boxSteve Es handelt sich um einen VPS, also nicht bei mir zuhause, mit nur einer öffentlichen IPv4 und einem IPv6 /64 Prefix.
Ergänzung ()

Vielleicht hat ja @riversource eine Idee? Ich hab vermutlich was grundlegendes noch nicht verstanden.
 
Zuletzt bearbeitet:
Naja, dann hat dein VPS deine IP und du musst den Traffic von dem Betriebssystem zu deiner VM leiten ... mit Proxmox kenn ich mich nicht aus, nur mit Hyper-V und ESXI Server.
 
Bob.Dig schrieb:
Kann ich auf einem Proxmox-VPS mit nur einer NIC eine pfSense-VM betreiben ohne den Traffic zu NATen sondern die einzige öffentliche IPv4-Adresse direkt an der pfSense-VM anliegen haben?

Was soll dir das eigentlich bringen?

Hier haste mal was mit erklärung:

 
  • Gefällt mir
Reaktionen: Bob.Dig
Nein mit ipv6 würde es gehen
 
Wäre nett, wenn Du das erklären könntest.
Also warum kann ich meine pfSense VM zwar an vmbr0 anschließen, aber sie hat keine Konnektivität.
Ich habe ihr die einzige öffentliche IPv4 auf ihr WAN gegeben. WAN ist das einzige Interface dieser VM und wie gesagt, mit der einzigen Bridge vmbr0 von Proxmox verbunden.
PS: Mit pfSense selbst kenne ich mich recht gut aus, daran liegt es also nicht.
 
Zuletzt bearbeitet:
Ggf. hat der VPS Provider einen MAC Filter aktiv und erlaubt nur Pakete von der MAC Adresse des VPS? Alternativ würde ich beim Provider eine zweite IP bestellen und dann eine für den Proxmox Host nutzen und eine für die pfsense.
Hier hat das jemand mal umgesetzt, keine Ahnung ob noch aktuell und korrekt aber als Einstieg ggf. sinnvoll: https://schroederdennis.de/allgemei...ver-mit-nur-1-public-ip-addresse-pfsense-nat/
 
  • Gefällt mir
Reaktionen: Bob.Dig
Ich hab es jetzt so umgesetzt, wie vom nun schon zweimal verlinkten Dennis S. beschrieben, also leider mit NAT auf Proxmox selbst. Irgendwie enttäuschend, dass Proxmox da doch recht limitiert nach meinem Empfinden.
 
Private IPs werden im Internet nicht geroutet. Da bleibt also nur NAT in irgendeiner Form. Wo man die NAT Instanz unterbringt, kann man vielleicht ein Stück weit beeinflussen, aber grundsätzlich muss man es erst mal machen.

IPv6 kann helfen, allerdings bieten die mitgelieferten /64 Netze bei verschiedenen Hostern da auch Stolperfallen, da die häufig nicht geroutet sind, sondern einfach am Interface abgeladen werden. Sprich, man braucht NDP Proxys und ähnliche Mechanismen.
 
@riversource Vielleicht habe ich einen Denkfehler, aber ich kann z.B. bei Hyper-V eine VM an die NIC anschließen, ohne dass der Host beteiligt ist. Ich hatte erwartet, mit Proxmox etwas ähnliches basteln zu können, leider vergebens. Ich mach das aber nur privat und äußerst selten, also vielleicht wirklich ein Denkfehler meinerseits.
Ergänzung ()

Kann ich noch etwas tun, um die beiden verbleibenden Ports auf dem Host (Proxmox) weiter abzusichern? Vermutlich nur in der Console... die ich nicht so mag. 😝
 
Zuletzt bearbeitet:
Bob.Dig schrieb:
Vielleicht habe ich einen Denkfehler, aber ich kann z.B. bei Hyper-V eine VM an die NIC anschließen, ohne dass der Host beteiligt ist.
Beteiligt ist es schon. Es bridged halt transparent durch. Allerdings gibt es dann ein entsprechendes (virtuelles) Netzwerk-Device auf dem Host, dem man im Zweifel auch eine IP geben kann, mit der es an der Kommunikation teilnehmen kann. Sowas kann man auch mit Proxmox und den Linux Bridge Tools bauen. Die Frage ist, ob es Sinn macht, dem Host die IP zu klauen. Denn was macht man, wenn die VM mal nicht hochkommt? Dann schaut man ganz schnell in die Röhre.

Bob.Dig schrieb:
Kann ich noch etwas tun, um die beiden verbleibenden Ports auf dem Host (Proxmox) weiter abzusichern?
Was sind für dich "Ports"? Netzwerk-Devices? TCP-Ports?

Bob.Dig schrieb:
Vermutlich nur in der Console... die ich nicht so mag.
Die Geschmäcker sind unterschiedlich. Wenn es um Firewalls etc geht, mag ich keine grafischen Oberflächen. ;)
 
@riversource Kannst Du sagen, warum ich nicht die vm ansprechen konnte, obwohl sie mit der IPv4 an der vmbr0 hing, so wie der Host auch?

Ports sind 8006 und 22 des Hosts, alles andere wird an die pfsense VM geNATet.
Vielleicht macht ja auch Proxmox ootb schon einiges, keine Ahnung...
 
Bob.Dig schrieb:
warum ich nicht die vm ansprechen konnte, obwohl sie mit der IPv4 an der vmbr0 hing, so wie der Host auch?
snaxilian schrieb:
Ggf. hat der VPS Provider einen MAC Filter aktiv und erlaubt nur Pakete von der MAC Adresse des VPS?
Deine VM hat an ihrer vNIC eine andere MAC, die bridge ist ja erst einmal nur ein virtueller Switch und das was du vor hast sieht von außen betrachtet nach ARP Spoofing aus bzw. könnte dafür gehalten werden.

Der VPS Betreiber sieht an dem Netzwerk-Interface wo dein VPS dran hängt zwei MACs, die vom Proxmox Host und die von der pfsense VM und wird das vermutlich nicht zugelassen.
Lösungsansatz: Nicht mit einer public bridge arbeiten sondern PCI/PCIe Passthrough verwenden und die NIC des VPS direkt an die VM hängen.
Im Proxmox musst dann eine (interne/nicht-öffentliche) bridge erstellen an der Proxmox hängt und eine zweite virtuelle NIC der pfsense VM.

Tricky wird halt die Einrichtung. Du musst das webui der pfsense entweder aus dem Internet erreichbar machen oder soweit alles vorbereiten, dass nach Einrichtung des PCIe Passthrough alles startet/funktioniert damit du die pfsense als auch den proxmox Host administrieren kannst.

riversource schrieb:
Denn was macht man, wenn die VM mal nicht hochkommt? Dann schaut man ganz schnell in die Röhre.
Die meisten VPS Hoster haben ne remote Konsole mit der man an den VPS ran kommt. Ist natürlich unbequemer und man hat nur die CLI zur Verfügung aber immerhin etwas.

Alles in allem ein ziemlich kompliziertes Konstrukt. Ich hätte ja einfach 2x VPS gemietet. Auf einem die pfsense und auf dem anderen den Proxmox. Anschließend auf dem Proxmox die Firewall so reguliert, dass Zugriffe nur von der IP der pfsense erlaubt sind und im Proxmox noch die Netzwerkeinstellungen so anpassen, dass dieser alle Anfragen zur pfsense als Gateway/Router schickt. Alternativ auf dem Proxmox Wireguard eingerichtet, den Tunnel auf der pfsense terminieren lassen und sämtlichen Traffic dadurch geschickt.
 
  • Gefällt mir
Reaktionen: Bob.Dig
@snaxilian Danke Dir, macht vermutlich Sinn.
Will mich an die GUI halten und da geht das eh nicht mit dem Passthrough, wenn ich mich recht erinnere. Und dann käme noch der Ärger mit der Einrichtung dazu und wenn es mal Probleme gibt, von daher sollte es jetzt so passen.

Aktuell funktioniert die Console/VNC in Proxmox nicht, woran das jetzt wieder liegt...
 
Zuletzt bearbeitet:
Das mit den zwei offenen Ports von Proxmox (22, 8006) war mir dann doch zu heikel. Habe jetzt auch nichts dazu gefunden, ob sich das Teil selbst aktiv schützt oder eher nicht für eine sorglose Installation auf einem VPS gedacht ist. Ich habe daher diese Ports im Web-UI mittels der eigenen "Host"-Firewall nur noch für eine bestimmte IP von außen geöffnet und für alle anderen geschlossen. Dafür war es aber nötig, auch die "Datacenter"-Firewall zu aktivieren. Diese habe ich mit alles erlauben konfiguriert, da ja fast alles geNATet werden soll.

Capture.PNG

Bei jede Änderung einer Firewallregel gab es eine nichtssagende Fehlermeldung, das Entfernen und anschließende wieder Ergänzen einer Stelle der IP-Adressen erlaubte dann aber immer die Speicherung... 🤨
Weitere Ergänzung: schon bei der Einrichtung von Proxmox sollte die einzige öffentliche IP mit /32 angegeben werden, da ansonsten das Subnet weitreichendere Zugriffsrechte erhält.
 
Zuletzt bearbeitet:
snaxilian schrieb:
Deine VM hat an ihrer vNIC eine andere MAC, die bridge ist ja erst einmal nur ein virtueller Switch und das was du vor hast sieht von außen betrachtet nach ARP Spoofing aus bzw. könnte dafür gehalten werden.

Der VPS Betreiber sieht an dem Netzwerk-Interface wo dein VPS dran hängt zwei MACs, die vom Proxmox Host und die von der pfsense VM und wird das vermutlich nicht zugelassen.
Ich hab inzwischen die MAC-Adresse der pfSense geändert, auf die des Proxmox Host, wieder IPv 4 und 6 aufgeteilt. Beide sind also an der selbe Bridge, mit der gleichen MAC-Adresse, die pfSense VM hatte trotzdem keine Konnektivität. Liegt vielleicht doch an Proxmox und nicht am Betreiber...
 
Bob.Dig schrieb:
MAC-Adresse der pfSense geändert, auf die des Proxmox Host
Dann fang mal an zu recherchieren warum das eine sehr schlechte/dumme Idee ist. Im besten Fall ist standardmäßig eine Erkennung aktiv, die Pakete von doppelten MACs droppt/verwirft, im schlechtesten Fall gehen zwar vom pfsense WAN Interface Pakete raus aber die Antworten gehen zum Proxmox Host.

edit: kurz nachgeschaut und ja auch eine Bridge hat eine mac learning table so wie quasi jeder normale Switch. Da der Proxmox Host "zuerst" da war, gehen Pakete an diese Mac entsprechend zu dem Interface und nicht zu deiner VM.
 
Zuletzt bearbeitet:
riversource schrieb:
Die Geschmäcker sind unterschiedlich. Wenn es um Firewalls etc geht, mag ich keine grafischen Oberflächen. ;)
Daran würde ich gerne anknüpfen. ;)

Momentan ist die nötige Änderung der Konfiguration von Proxmox (Debian) allein in der Datei "interfaces" vorgenommen worden, ich möchte auch dabei bleiben. Ich würde jetzt gerne das NAT auf der pfSense beenden wollen.

Code:
auto lo
iface lo inet loopback

iface ens3 inet manual

auto vmbr0
iface vmbr0 inet static
    address XXXX/YY
    gateway ZZZZ
    bridge-ports ens3
    bridge-stp off
    bridge-fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport ! --dport 22,8006 -j DNAT --to 172.16.221.2
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp -j DNAT --to 172.16.221.2

auto vmbr1
iface vmbr1 inet static
    address 172.16.221.1/30
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   iptables -t nat -A POSTROUTING -s '172.16.221.0/30' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '172.16.221.0/30' -o vmbr0 -j MASQUERADE
Damit das Ganze dann aber immer noch funktioniert, müsste ich hier bei Proxmox weitere Veränderungen vornehmen.
  1. Ich müsste wohl Routen hinzufügen und würde diese unter das passende Interface (vmbr1)setzen?
  2. Die Firewallregeln bei vmbr1 sind wohl Outbound-NAT-Regeln, hier müsste ich also für jede Route die vorhandenen Regeln duplizieren und anpassen?
Keine Ahnung, ob das so geht. Wäre für jedes qualifizierte Drüberschauen und Hilfe dankbar.
 
Zuletzt bearbeitet:
Zurück
Oben