Verkabelungshilfe ProxMox/OPNsense

Started by webkonto, January 17, 2024, 09:58:05 AM

Previous topic - Next topic
Hallo!

Ich habe einen Micro-Computer mit 4x 2.5GBit NICs und darauf Proxmox installiert (16GB/N100). Darauf läuft eine VM mit OPNsense. Physikalisch steckt im Port 1 (eth0) zunächst mal nichts. Im Port 2 (eth1) steckt WAN (in Richtung DSL Modem) und im Port 3 (eth2) steckt LAN (kommt vom zentralen Switch). Dort habe ich 4 VLANS, eine Daisy Chain Verbindung zu einem weiteren Switch (Beide Netgear 308E), DHCP auf allen VLANS, alles soweit OK.

Der Proxmox-Zugang liegt auf eth0 mit der Adresse x.x.10.50 im VLAN 10.

Die Konfiguration ist im angehängten Bild zu sehen (hoffentlich klappt das mit dem screenshot), ist aber rein intuitiv!

Um jetzt auf den Proxmox zu kommen, muss ich ein Kabel von eth0 zum Switch (VLAN10) ziehen. Das kann es doch nicht sein, oder? Wie kann ich das lösen, sodass ich z.B. über eth2 (LAN) auf den proxmox-server komme? Ich habe viel gelesen über Linux-VLAN Bridge etc, meine Versuche waren aber alle erfolglos.

Bitte um Schließung dieser Bildungslücke!

Da du eine OPNsense hast, die in allen deinen Netzen gleichzeitig ist, solltest du per Routing auf dein Proxmox kommen.

Die OPNsense ist der Standardgateway in allen Netzen, das heißt, jedes Paket was keine "local route" hat, kommt erstmal an der OPNsense an.

Wenn dein ProxMox eine Firewall hat, musst du dort freigeben, dass auch aus den IP Ranges der anderen VLAN Netze darauf zugegriffen werden kann. In der OPNsense musst du auf dem Interface, wo die eingehende Anfrage zum IP Adressbereicht des ProxMox Server ankommt, auch eine Regel erstellen die diesen Verkehr erlaubt.
Hardware:
DEC740

OK, ich habe folgendes gemacht:
In ProxMox:
Firewall ja auf Rechenzentrum, Node und VM
Regel angelegt: IN, ACCEPT, TCP (ich gehe davon aus, das jetzt alles offen ist?) auf Rechenzentrum, Node und VM

In OPNsense:
Alle Netze haben "Accept Any", im Moment bauche ich das System ja erst auf, deswegen habe ich alles frei geschaltet. Ich habe diese Regel für LAN (das sollte unnötig sein, da alle Verbindungen VLAN sind) und VLAN10 (wo der Proxmox läuft).

Ergebnis: geht nicht. Ich schätze meine ProxMox Regel sind Stuss..?

Die Beispiel-Regel (https://www.wundertech.net/how-to-configure-the-firewall-on-proxmox/) für die GUI ist
IN, ACCEPT, vmbr2 (Bridge, auf dem LAN physikalisch rein kommt), tcp, Port 8006
Das geht aber auch nicht...

Wie kommt den die Info von eth3 ("Stecker LAN") zu eth0 ("Stecker ProxMox", den ich einsparen will)? Geht das automatisch intern?

Schneide mal mit tcpdump mit.

- Client der den Request macht die ProxMox Website zu öffnen
- Das empfangende Interface auf der OPNsense
- Das ausgehende Interface auf der OPNsense
- die vmbr2 Bridge auf dem Proxmox

Schau ob du TCP SYN Retransmits hast, das bedeutet das Paket kommt nicht an und wird nicht beantwortet.
Wenn du Antworten bekommst (TCP ACK), schaue wo sie nicht mehr weiterkommen.

Einfacher TCPdump befehl auf der OPNsense in der SSH Shell:
tcpdump -i INTERFACENAME port PORTNAME and host IPADDRESS
z.b.
tcpdump -i opt1 port 8889 and host 172.16.1.1
Hardware:
DEC740

January 17, 2024, 12:24:49 PM #4 Last Edit: January 17, 2024, 01:00:51 PM by webkonto
OK, mit dem Schema von dir kam nix..??
Eingabe war tcpdump -i vlan02 port 8006 and host 192.168.10.50

Ich habe folgende Ausgabe raus gekitzelt, kling für mich 100% kryptisch.. Jemand will wissen, wer die IP 192.168.10.50 hat und dieses Wissen an 192.168.10.101 weiter geben?

tcpdump -i vlan02 host 192.168.10.50
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan02, link-type EN10MB (Ethernet), capture size 262144 bytes
12:19:58.147702 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:19:58.818388 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:19:59.820407 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:01.207793 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:01.809916 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:02.811911 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:04.218147 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:04.822967 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:05.820829 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:07.225064 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:07.825051 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:08.811145 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:10.181699 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:10.813587 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:11.815634 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:13.508226 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:20:14.324114 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46

Ich habe den Browser auf 192.168.10.101 offen, dann das Kabel raus gemacht und das ist die Ausgabe. Mit Kabel ist die Ausgabe leer, weil der Switch die Pakete offensichtlich direkt routet.

Das hier ist ein ping 192.168.10.50 von 192.168.10.101

root@OPNsense:~ # tcpdump -i vlan02 host 192.168.10.50
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan02, link-type EN10MB (Ethernet), capture size 262144 bytes
12:23:30.570693 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:31.312052 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:32.313743 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:33.378955 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:34.311839 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:35.318950 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:39.140429 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:39.810019 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:40.811515 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:42.245787 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:42.814933 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:43.816446 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:45.185808 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:45.819921 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:46.806290 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:48.201332 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:48.824243 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:49.826336 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:50.822535 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:51.808523 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:52.808502 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:54.263777 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:54.811595 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:55.813268 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:58.571020 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:23:59.318621 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:24:00.319183 ARP, Request who-has 192.168.10.50 tell 192.168.10.101, length 46

Das kommt mit option -v

root@OPNsense:~ # tcpdump -i vlan02 host 192.168.10.50 -v
tcpdump: listening on vlan02, link-type EN10MB (Ethernet), capture size 262144 bytes
12:25:57.644170 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:25:58.305961 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:25:59.309298 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.50 tell 192.168.10.101, length 46
12:26:00.662310 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.50 tell 192.168.10.101, length 46

January 17, 2024, 02:10:52 PM #6 Last Edit: January 17, 2024, 02:12:46 PM by Monviech
Das ist ARP, ein Layer 2 Protokoll. Es wird benutzt um in einer Layer 2 Broadcast Domain die IP Adressen von Mitgliedern der Broadcast Domain aufzulösen.

In dem Fall versucht 192.168.10.101 die IP Adresse 192.168.10.50 zu finden, da 192.168.10.101 die MAC Adresse von 192.168.10.50 nicht kennt.

Schau in die ARP Tabelle von deiner OPNsense ob du dort alle deine IP Adressen finden kannst.

/ui/diagnostics/interface/arp

Wenn du sie nicht finden kannst, bedeutet das, dass die beiden IP Adressen nicht in der selben Layer 2 Broadcast Domain sind, obwohl sie im selben Layer 3 IP Adressbereich liegen.
Hardware:
DEC740

Mit Kabel: Ja (über die GUI angesehen)
Ohne Kabel: Nein

Ich glaube hier https://forum.proxmox.com/threads/proxmox-host-nicht-erreichbar-vom-lan.32450/ hat jemand dasselbe Problem, aber mit pfsense. Klingt auf jeden Fall sehr ähnlich.
Zitat von dort "Okay, die default Route ist hier die falsche." (Schreibfehler habe ich mit kopiert)


OKay, einen Versuch starte ich noch, dann nehme ich das Kabel.

Ich habe den ProxMox-Port in der OPNsense VM garnicht verbunden, es fehlt schlicht die (virtuelle) Netzwerkkarte in der VM.

Dort ist nur vmbr1 und vmbr2 angegeben (als Proxmox "Netzwerkkarte"), ich schätze es fehlt vmbr0, auf dem die IP für den ProxMox Zugang liegt.

Ich kann die Netzwerkkarte hinzu fügen und OPNsense neu starten. Dort sehe ich jetzt als zusätzliche (zunächst unbenutzte) Schnittstelle vmbr0. Die IP von ProxMox X.X.10.50 liegt im VLAN10, was mache ich denn jetzt? Ein VLAN mit dem Anschluss vmbr0 erstellen? Eine Bridge?

Sorry für die Grundlagenforschung!

January 18, 2024, 09:18:08 AM #9 Last Edit: January 18, 2024, 09:23:42 AM by Monviech
Wenn du die Proxmox virtuelle Netzwerkkarte mit der OPNsense VM verbindest, musst du sichergehen, dass das IP Netzwerk eindeutig ist und nicht auch das gleiche auf anderen VLANs ist.

Warum du X.X.10.50 schreibst verstehe ich nicht, du verwendest RFC1918 Adressen, die kann jeder verwenden und sind nicht unique.

In deinem Fall solltest du also einfach mit einem neuen OPT Interface in der OPNsense arbeiten, welches an dem Proxmox virtuellen Port im virtuellen Switch vmbr0 angeschlossen ist und eine IP in einem Netz hat das noch nicht in deinen anderen VLANs verwendet wurde. Ein VLAN musst du hier nicht verwenden da es einfach eine virtuelle Direktverbindung ist.

Beispiel:
10.50.50.1/24 ist der Proxmox
10.50.50.2/24 ist die OPNsense

Danach kannst du in deinen anderen VLANs ganz einfach die 10.50.50.1 aufrufen und das wird dann zum neuen OPT Interface zum Proxmox geroutet.
Hardware:
DEC740

January 18, 2024, 09:49:21 AM #10 Last Edit: January 18, 2024, 10:03:38 AM by Senten
Hallo zusammen,

ich möchte hier einen Vorschlag anbieten, da ich selber eine sehr ähnliche Hardware einsetze.
Meine 4 physischen Ports sind so verschaltet:


Port1 [x] -> Trunk, dient als Bridge-Port für vmbr0; Hierüber werden PVE, als auch alle anderen VMs und CTs erreicht
Port2 [ ] -> leer
Port3 [x] -> PCI-Passthrough an OPNsense-VM (WAN)
Port4 [x] -> PCI-Passthrough an OPNsense-VM (LAN | Trunk)


Port1 und Port4 sind mit dem selben Switch verbunden.

Der Zugriff von einem Client zu Proxmox verläuft dann in etwa so:
Client(VLAN100) -> Untagged Port -> Switch -> Trunk (OPNsense) -> OPNsense_eth0.100 -> OPNsense_eth0.200 -> Trunk (OPNsense) -> Switch -> Trunk (Proxmox) -> Proxmox_enp2s0 -> Proxmox_vmbr0.200 (Mgmt-IP-Adresse)
Ich hoffe ich hab mich da jetzt nicht verhaspelt :D

Durch den PCI-Passthrough sind die Ports3 und 4 exklusiv der OPNsense vorbehalten und mir persönlich gefiel die Idee der Trennung vom Hypervisor und angeblich soll es so auch performanter sein (das habe ich nicht getestet, sondern einfach darauf vertraut).

Grüße,
Senten

Quote from: Senten on January 18, 2024, 09:49:21 AM


Port1 [x] -> Trunk, dient als Bridge-Port für vmbr0; Hierüber werden PVE, als auch alle anderen VMs und CTs erreicht
Port2 [ ] -> leer
Port3 [x] -> PCI-Passthrough an OPNsense-VM (WAN)
Port4 [x] -> PCI-Passthrough an OPNsense-VM (LAN | Trunk)


Port1 und Port4 sind mit dem selben Switch verbunden.

OK, aber "verbunden" bedeutet doch Kabel, oder? Das ist exakt die selbe Verbindung wie bei mir, nur dass ich keine PCI Passthroughs verwendet habe....

Quote from: Monviech on January 18, 2024, 09:18:08 AM
Danach kannst du in deinen anderen VLANs ganz einfach die 10.50.50.1 aufrufen und das wird dann zum neuen OPT Interface zum Proxmox geroutet.

probier ich aus! Das mit dem X war Faulheit....