Proxmox + OPNsense + (Cisco) Switch + VLANs: Wie realisieren?

milkytwix

Member
May 17, 2021
19
1
8
47
Guten Morgen, ich habe einen kleinen Homeserver mit Proxmox, diversen Diensten und einem VM und Client-Zoo.
Auf dem Proxmox laufen unter anderem:
  • Pihole, Grafana, Omada und Nextcloud als LXEs
  • 2 * Windows, Jellyfin Server, jdownloader, 2 * Linux, OPNsense, checkmk als VMs
  • Im Netzwerk befinden sich ein Cisco-Switch (SG-200/8), ein WiFI-AP. eine Fritzbox und diverse Clients (Smartphones, Laptops, Workstations)
Das ganze ist im Moment wie folgt aufgebaut:
An der Fritzbox hängt eine NIC mit 2 ports, die an OPNsense durchgereicht ist (WAN) und von der es in den Switch geht (LAN).
Proxmox selber ist ebenfalls mit dem Switch verbunden, die dazu gehörende Bridge ist VLAN aware "yes". Außerdem hängen an dem Switch noch der AP und 2 Linux-Clients (dieser PC an dem ich gerade tippe und ein Test-Notebook), der Rest kommt per WLAN dazu.

Ich möchte diesen Zoo jetzt mit VLANs segmentieren und reglementieren (dafür auch die OPNsense) und habe gleich am Anfang Probleme das überhaupt mit einem ersten VLAN zum Laufen zu bringen. Wie würdet ihr da vorgehen?

Was ich bisher getan habe:
  • VLAN "11" auf OPNsense angelegt, unter Assignments dem LAN-Port zugewiesen, aktiviert und DHCP inkl. Range dafür konfiguriert
  • Auf dem Switch das VLAN angelegt und einem Port zugewiesen
  • Ein Gerät an diesen Port gehängt zum testen
Ergebnis: Gerät kriegt entweder eine "falsche" IP aus dem Adressbereich des default VLANs, oder, wenn ich im Switch das VLAN11 auf priorisiert stelle eben gar kein Netzwerk. Wo liegt mein offenbar grundsätzlicher Fehler? Anbei wie es im Moment aussieht:

network1.png

Proxmox /etc/network/interfaces sieht so aus:
Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        address 10.10.0.11/24
        gateway 10.10.0.1
        bridge-ports eno2
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094
Jede Hilfe ist willkommen. :)
 
Last edited:
Wenn deine vmbr1 VLAN aware ist, dann solltest du da keine IP vergeben.
Stattdessen den Host selbst über ein VLAN interface erreichbar machen. Also sowas in der Art, wenn der Host z.B. im VLAN 11 sitzen soll:

Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        bridge-ports eno2
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

iface eno2.11 inet static
        address 10.10.0.11/24
        gateway 10.10.0.1

Bei einer VLAN aware Bridge kannst du dann in den VMs über "VM -> Hardware -> Network Device -> Edit -> VLAN Tag" für die virtio NIC das VLAN ID bestimmen.
 
A, okay, gerade letzteres ist ja genau das was ich erreichen will - eine VM in das jeweilige VLAN schieben. Das klingt schon mal gut. Komme ich da hin ohne am Proxmox direkt zu sitzen? Hab da weder Monitor noch Keyboard dran, wie muss ich vorgehen um mich nicht "aus zu sperren"?
 
Auch kein IPMI/BMC vorhanden?
Ist dann schon etwas heikel. Mit installiertem ipupdown2 prüft Proxmox eigentlich, ob die neue Konfiguration überhaupt funktioniert und setzt diese dann ggf. wieder zurück. Aber so ganz sicher kann man sich da ja auch nicht sein.

Du hast ja aber 2 NICs dran. Du könntest vmbr0 eine IP aus einem anderen Subnetz geben. Dann wäre Proxmox über 2 IPs aus verschiedenen Subnetzen erreichbar. Wenn du dann was an vmbr1 änderst und dich dort aussperrst, dann würdest du wenigstens noch über die andere IP über vmbr0 an die WebUI kommen. Wenn dann Proxmox über eno2 erreichbar ist, dann kann man die IP von vmbr0 ja wieder entfernen.
 
Last edited:
Doch, IPMI ist vorhanden, das kann ich ja einfach an die Fritze hängen und bin relativ safe, danke für den Hinweis, aber!
Wenns schief geht stecke ich das Kabel von vmbr0/eno1 wieder ein - das hing usprünglich an der Firztbox, so hab ich angefangen bevor ich alles auf die OPNsense umgezogen habe. Mnachmal bin ich etwas.... dumm. Von da aus komme ich dann ja auf den Proxmox-Host und kann jederzeit auf die OPNsense Konsole. Okay, brb, eben Mut antrinken. :D
 
Doch, IPMI ist vorhanden, das kann ich ja einfach an die Fritze hängen und bin relativ safe, danke für den Hinweis, aber!
Wenns schief geht stecke ich das Kabel von vmbr0/eno1 wieder ein - das hing usprünglich an der Firztbox, so hab ich angefangen bevor ich alles auf die OPNsense umgezogen habe. Mnachmal bin ich etwas.... dumm. Von da aus komme ich dann ja auf den Proxmox-Host und kann jederzeit auf die OPNsense Konsole. Okay, brb, eben Mut antrinken. :D
Jain. Du hast keine IP mehr auf eno1/vmbr0 also ist Proxmox auch nicht darüber reichbar. Und es ist nicht gut Proxmox 2 IPs im selben Subnetz zu verpassen. Daher mein Vorschlag auf eno1/vmbr0 eine zweite IP im anderen Subnetz zu verpassen. Sollte dann eno2/vmbr1 nicht mehr gehen kann man einfach einen beliebigen Rechner direkt dem eno1 Port verbinden und temporär in das jeweilige Subnetz wechseln. Dann hätte man ja trotzdem wieder Zugriff.
Aber IPMI macht das natürlich am einfachsten, wenn dein IPMI auch KVM kann (musst du gucken, oft muss man für WebKVM im IPMI eine extra Lizenz kaufen). Mich hat da mein IPMI schon öfter mal gerettet, wenn ich mich da ausgesperrt habe. Ist schon echt praktisch sowas :)
 
Nee, das IPMI ist toll - ist nen Supermicro Board, das ist wunderbar.
Wenn ich eno1 an die Fritzbox hänge, kriegt eno1 ja eine IP via DHCP von der Fritze - so ich es denn wieder auf auto stelle. Das ist ja ein ganz anderes Netz (das 192er). Ich müsste meine Workstation natürlich auch wieder an die Fritze hängen, aber das ist ja schnell gemacht, wenn ich eh an die Kabelage ran muss - oder denke ich hier jetzt was falsches?
 
Ja, müsstest du halt vmbr0 von manual auf dhcp stellen. Aber gut, wenn IPMI geht ist das ja eh alles überflüssig. Dann kann man ja immer zur Not selbst die /etc/network/interfaces über die KVM-Konsole editieren.
 
So, heute habe ich mal die Zeit und Muße das umzusetzen. Wie mache ich das denn am besten? Direkt über die Konsole - so dachte ich - und danach systemctl service networking restart. Aber eine Sache verwirrt mich dabei - auf der Konsole habe ich ja nicht den "Schutz" von ifupdown2.
Wenn ich das aber mit Schutz über die Gui mache - was lege ich denn dann unter Networking genau an? Linux Bridge/Bond/VLAN oder OVS Bond/Bridge/IntPort scheint mir nicht das richtige zu sein...
 
Kannst du alles über die GUI machen.
1.) mit apt update && apt install ipupdown2 ipupdown2 installieren falls nicht bereits vorhanden

2.) IP/Gateway von vmbr1 entfernen: vmbr1 wählen -> Edit -> "IPv4/CIDR" und "Gateway (IPv4)" leeren (wichtig...nicht sofort übernehmen)

3.) Neues VLAN Interface hinzufügen: Create -> Linux VLAN (hier im Beispiel "11" für VLANID 11)
Name = eno2.11
IPv4/CIDR = 10.10.0.11/24
Gateway (IPv4) = gateway 10.10.0.1

4.) mit "Apply Configuration" wenn alles fertig ist bestätigen

Das sollte dann eine /etc/network/interfaces erzeugen was so aussieht:
Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        bridge-ports eno2
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

iface eno2.11 inet static
        address 10.10.0.11/24
        gateway 10.10.0.1
 
Last edited:
A, okay, wieder verstanden. Danke dafür!
ifupdown2 ist installiert, trotzdem danke für den Hinweis.

So wie ich das verstehe hebe ich doch dann aber den ganzen Proxmox Host (10.10.0.11 ist ja gerade meine IP-Adresse) in VLAN11? Das ist ja eigentlich nicht mein Ziel, sondern ich will ja erstmal nur VLAN11 (also mein TEst-VLAN) zum laufen bringen. Sorry für meine blöde Fragerei....
 
A, okay, wieder verstanden. Danke dafür!
ifupdown2 ist installiert, trotzdem danke für den Hinweis.

So wie ich das verstehe hebe ich doch dann aber den ganzen Proxmox Host (10.10.0.11 ist ja gerade meine IP-Adresse) in VLAN11? Das ist ja eigentlich nicht mein Ziel, sondern ich will ja erstmal nur VLAN11 (also mein TEst-VLAN) zum laufen bringen. Sorry für meine blöde Fragerei....
Über welches VLAN willst du denn deinen Proxmox-Host ansprechen? Alles was du an IPs angibst ist immer nur für den Host selbst, also wie dieser erreichbar sein soll. Wenn du tagged VLAN nutzt um verschiedene VLANs über eine NIC zu leiten dann muss dein Host halt auch in einem VLAN sitzen. Und wenn es nur VLAN1 ist, was bei den meisten Switches untagged Traffic entspricht.
 
Okay, jetzt gerafft.
folgendes würde ich dann einstellen:

Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        bridge-ports eno2
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

iface eno2.1 inet static
        address 10.10.0.11/24
        gateway 10.10.0.1
iface eno2.11 inet auto

Und dann kann sich der client der an port6 des Switches hängt, welcher für vlan11 getagged ist, per DHCP im vlan 11 von OPNSense eine IP holen, richtig? Und an der Erreichbarkeit des Hosts unter .11 im default vlan aka vlan1 ändert sich nichts.
 
  • Like
Reactions: noPa$$word
Und dann kann sich der client der an port6 des Switches hängt, welcher für vlan11 getagged ist, per DHCP im vlan 11 von OPNSense eine IP holen, richtig? Und an der Erreichbarkeit des Hosts unter .11 im default vlan aka vlan1 ändert sich nichts.
Solltest du nochmal vergewissern was dein Switch als VLAN für untagged traffic nutzt. Alles was als untagged Traffic über den Switch läuft landet ja auch normal in einem VLAN (meist VLAN1).
Und...
iface eno2.1 inet static
address 10.10.0.11/24
gateway 10.10.0.1
...macht dann natürlich keinen Sinn. Jedes VLAN sollte ja sein eigenes Subnetz haben. Wenn du schon 10.10.0.0/24 für VLAN 11 nimmst sollte dein VLAN1 natürlich ein anderes Subnetz nutzen. Also 192.168.254.0/24 oder was du sonst bisher benutzt hast für untagged Traffic. Und Gateway wäre dann ja auch 192.168.254.1 für deine Fritzbox.
 
Last edited:
Als VLAN für untagged nimmt der Switch vlan1 aka default VLAN - das will ich ja auch eigentlich nicht ändern, ich will ja aber eben auf port 6 VLAN 11 getagged haben. So dachte ich zumindest, um diesen Port bzw. alles das da dran hängt zu trennen und erst in OPNSense via Firewall-Regeln gegeben falls wieder zusammenführen bzw. "miteinander reden" lassen.
10.10.0.0/24 will ich ja für VLAN1 bzw untagged nehmen - das ist mein "Hauptnetz" im Moment. Und das ist das Gateway ja die OPNSense, siehe Zeichnung oben. 10.10.10.0/24 sollte ja in meiner ursprünglichen Planung VLAN11 werden - so ists zumindest in OPNSense eingerichtet. Und das Interface dachte ich stell ich auf auto damit der sich darin befindene Client seine IP vom OPNSense per DHCP holt - oder wieder falsch gedacht?
 
Habe mir nochmal dein Bild von ganz oben angeguckt. Da finde ich einiges nicht schlüssig.

1.) Hast du 3 NICs im Proxmox-Host? du willst ja 3 Verbindungen zum Host haben, aber du schreibst nur von eno1 und eno2. Da müsstest du dann ja mit Trunking arbeiten und verschiedene VLANs über eine NIC senden damit das klappt.

2.) Du hast nur einmal angegeben das du VLANs nutzt (VLAN11 zum Notebook). Du bräuchtest da mindestens 2 VLANs wenn ich das richtig sehe:
1 VLAN für das Netz von Fritzbox zu Switch und Switch zu OPNsense WAN
1 VLAN für dein LAN
...oder...
1 ohne VLAN von Fritzbox zum OPNsense WAN
1 VLAN von OPNSense LAN zum Switch
1 VLAN von Switch zum Proxmox-Host

3.) Wenn du schon mit VLAN arbeitest, dann solltest du überlegen ob du nicht gleich noch mehr VLANs nutzen willst. Mal ein paar nützliche Beispiele für Segmentierung:
a.) eigenes DMZ VLAN für VMs, damit die unsicheren VMs die vom Internet aus zugreifbar sind nicht bei dir im sicheren LAN sitzen
b.) Management VLAN, damit nicht jedes Gerät an die WebUI von Fritzbox, Switch, Proxmox, AP und die WebUIs verschiedenster VMs etc kommt
c.) Gast VLAN, damit du nicht jedem Gast vollen Zugriff auf deine Netzwerk-Shares etc geben musst. Ich weiß ja nicht was du für ein AP hast, aber Fritzbox und Co erlauben ja auch ein Gast-Zugang für Wifi und Ethernet. Da kann man das schön trennen, dass da Gäste zwar ins Internet kommen aber nicht auf andere Rechner.
d.) IoT VLAN wo du den Internetzugriff verbietest, damit Dinge wie Glühbirnen und Co nicht immer nach China telefonieren können
e.) SAN VLAN, damit Dinge wie ein NAS die richtig Bandbreite brauchen nicht im selben Netz sitzen wie andere Dinge (VoIP etc) die eine niedrige Latenz brauchen und dann wegen Datentransfers verlangsamt werden.

Wenigstens eine DMZ würde ich da schon noch einrichten. Webserver und Co was gerne angegriffen wird möchte man ja nicht im LAN haben. Erst recht, wenn man da kein Profi ist und nicht alle Tricks kennt um es perfekt abzusichern.
 
Last edited:
Okay, mein Text war etwas undeutlich, mein Fehler. Ich versuche das mal besser zu erklären:

In dem Rechner auf dem Proxmox läuft befinden sich 2 NICs auf dem Mainboard - das ist das was man bei Proxmox unter eno1 und eno2 sieht. Ursprünglich hing eno1 an der Fritzbox, im Moment ist eno1 aber ohne Kabel. eno2 hängt an dem Switch.
Zusätzlich ist in dem Rechner eine Dual-NIC Karte verbaut, diese ist an die OPNSense-VM mittels Virtualisierung durchgereicht. Ein Port davon spielt WAN, dieser ist im 192er Netz der Firtzbox, und einer ist LAN, dieser ist auf 10.10.0.1 gestellt - mein eigentliche Gateway für alles was ich jetzt so mache (ohne VLANs).

1) Es sind also 4, allerdings nutze ich nur 3. Genau genommen sind es sogar 5, Nummer 5 ist IPMI.

2) Das ist korrekt, bisher nutze ich nur dieses eine VLAN, um des Lernens willen. Unter der Prämisse der Erklärung sollte das jetzt versändlich sein warum ich im Moment kein VLAN zur Fritzbox brauche, oder?

3) Ja, ja, und nochmals: JA. Genau da will ich hin, das ist mein Antrieb: Ich habe Kinder, die haben in "meinem" Netzwerk nichts verloren. Mein Fernseher soll nicht ins Internet, aber ich will ihn von innen sehen können. Ab und an bring ich "Arbeit" mit nach Hause, die will ich komplett trennen. Und und und. - nur dafür will ich es erstmal mit einer VM und einem physischen Client hinbekommen. Wenn es dann damit läuft muss das ganze auch nochmal auf andere "Füße" gestellt werden - mit dem 8-Port "Baby-Switch" komm ich nicht weit, der ist nur zum lernen jetzt.

Btw: Ich finds klasse das du mir das alles erklärst, ich hab die letzten 3 Wochen wie ein bekloppter "alleine" versucht das hinzukriegen und das war nicht so ganz fruchtbar. Danke!
 
Wenn du eine eigene NIC nur für die OPNSense hast, dann solltest du echt überlegen, ob du die nicht lieber per PCI Passthrough an die OPNSense VM durchreichen willst. Dann raubt dir das Routing nicht so viel CPU Leistung und weil dann keine NIC virtualisiert werden muss ist das Routing auch schneller. Und wenn dein einer onboard-Port auch unbenutzt ist, dann kann man den auch in die VM durchreichen. Dann hättest du 1 NIC für den Host selbst und 3 NICs worauf die OPNSense ohne Virtualisierung zugreifen kann.
Dann könntest du eine NIC für WAN, eine NIC für LAN und eine NIC für DMZ nutzen, dass da zwischen allen 3 VLANs mit vollen 1 Gbit geroutet werden kann.

Später kannst du dann noch Trunking (tagged VLAN) nutzen und mehrere VLANs über eine NIC mit der OPNsense verbinden. Aber nicht vergessen, dass sich da dann ja die VLANs die Bandbreite der einen NIC teilen müssen. Würdest du z.B. nur 2 NICs nutzen und das LAN VLAN und DMZ VLAN zusammen über eine NIC laufen lassen, dann wären ja alle Verbindungen von LAN zur DMZ auf 500Mbit gedrosselt, weil sich beide die 1Gbit teilen müssen.

Alles an VLANs was irgendwie geroutet werden muss (Zugriff auf andere VLANs oder Zugang ins Internet) braucht dann ja eine Verbindung zur OPNsense.

Wenn du wegen besserer Performance PCI Passthrough für die NICs nutzen willst dann kannst du dir auch das ganze mit vmbr1, VLANs etc auf dem Host sparen, da dann der Host nichts mehr mit all dem zu tun hat. Nachdem man etwas durchgereicht hat kann es der Host nicht mehr benutzen und es steht exklusiv der VM zur Verfügung. Dann verschwindet eno2 etc vom Host und du findest es direkt in OPNsense wieder und es sitzt der Host nicht mehr dazwischen. Wie man PCI Passthrough erlaubt findest du übrigens hier (den GPU Teil kannst du da ignorieren).

Und wenn du kein PCI Passthrough willst dann brauchst du ja eigentlich trotzdem kein Trunking, kannst dir das mit dem "Linux VLAN interface" also eigentlich sparen wenn du eine eigene NIC frei hast. Dann würde ich dem Proxmox-Host einfach eine eigene NIC verpassen.
 
Last edited:
O, die ist durch gereicht per PCI Passthrough - Proxmox sieht sie nicht. Sonst gäbe es ja noch Eno3 und 4. Eno1 mit durch zureichen für DMZ ist allerdings eine gute Idee. Meine eigentliche Idee dazu war eigentlich Eno1 und 2 zu bonden für mehr Durchsatz. Allerdings werde ich beizeiten auch eine 10GB Karte einbauen für den Host, da macht die Idee mit der DMZ weitaus mehr Sinn.
Den GPU-Teil habe ich btw für meine GPU genutzt, mein Jellyfin macht da munter Gebrauch von. Für weitere "Spielereien" hätte ich hier auch noch eine Quad GB Intel Karte, die SR-IOV unterstützt - damit wollte ich bestimmten VMS dedizierte NICs geben, aber erstmal sollen die Netze getrennt werden. Sicherheit vor Performance und so.
Die Idee war tatsächlich das ganze Routing/VLANing auf der OPNSense zu machen, daher bin ich jetzt verwirrt - wie gehe ich denn jetzt konkret weiter vor? Was wäre denn der "Best Approach"?
 
Ich würde das wohl so machen falls dein Switch tagged VLAN (IEEE 802.1q) und LACP (IEEE 802.1ad) berherrscht:
netzwerk.png

Paar Anmerkungen:
1.) Wenn du einen LACP Bond auf dem Switch und in der OPNsense VM einrichtest und dann über den Bond alles als tagged VLAN laufen lässt, dann kannst du da zwischen beliebig vielen VLANs (ich habe da inzwischen über ein Dutzend^^) über nur 2 NICs routen. In der Summe würden dann alle VLANs zusammen auf max 2Gbit kommen, dass du da zwischen beliebigen VLANs mit annähernd 1Gbit routen könntest.

2.) Die Verbindung zwischen Proxmox-Host und Switch würde ich auch über ein tagged VLAN laufen lassen, damit du die verschiedensten VMs in unterschiedliche VLANs zuordnen kannst. Da könntest du dann auch beliebig viele VLANs mit 1Gbit über die Eno4 anbinden.

3.) andere Hosts kannst du dann über untagged VLAN mit dem Switch verbinden und die Ports am Switch so einstellen, dass da alles was am bestimmten Port rein-/rausgeht in ein bestimmten VLAN geleitet werden soll. Untagged Traffic ist ja nicht fix VLAN1, das kannst du normal für jeden Port einzeln einstellen, welche VLAN da für den Port als Standard-VLAN für untagged Traffic genutzt werden soll.

4.) Wenn du später eine andere NIC mit SR-IOV einbaust und alle VMs eine "virtuelle" NIC per PCI Passthrough durchgereicht bekommen haben brauchst du die vmbr0 ja eigentlich nicht mehr. Die könnte dann weg und du könntest auch eno4.1 wegnehmen und einfach Eno4 eine IP verpassen, dass da Proxmox eine IP für das WebUI, SSH und Internetzugang hat.

5.) Hättest du genügend Ports am Switch (also 24 statt 8) würde ich die Fritzbox auch nicht direkt an die NIC der OPNsense anschließen sondern die Fritzbox mit dem Router verbinden, Im Switch ein WAN Vlan anlegen was dem Port zugeteilt wird wo die Fritzbox dranhängt und dann würde ich das WAN Vlan mit auf den Trunk geben, dass es da parallel mit den anderen VLANs über den Bond läuft. Dann bräuchtest du auch Eno3 nicht mehr für die OPNsense VM und die würde mit 2 NICs auskommen. Kostet dich dann 2 Ports am Switch aber dafür hast du 1 NIC frei die anders benutzt werden könnte (z.B. um auch zwischen Proxmox-Host und Switch einen weiteren LACP Bond zu bilden).
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!