einer Bridge zugewiesenes Interface fehlt

Started by rookie, October 18, 2023, 09:31:44 PM

Previous topic - Next topic
Hallo in die Runde,

ich habe folgendes komisches Phänomen unter OPNsense 23.7.6 und brauche bei der Lösung Hilfe,
da ich es trotz Foren Suche und Google bisher nicht lösen konnte.

OPNsense läuft in einer VM auf einem Proxmox Host. Auf dem Host ist SR-IOV aktiviert.
Es werden 5 igb- und 3 ix-Interfaces per passthrough in die OPNsense VM durchgereicht.
Da das vierte ix Interface mit dem Durchreichen als Ganzes Probleme macht, sind auf diesem Interface 5 virtual functions (ixv) konfiguriert, die ebenfalls in die OPNsense VM durchgereicht werden.

Auf jedem der 3 ix Interfaces ix0 bis ix2 ist in der OPNsense VM ein vlan mit der VID 10 eingerichtet.
Bei den vf Interfaces sind die vlans auf dem Proxmox Host eingerichtet, u.a. auch eins mit der VID 10, das in OPNsense den Namen ixv0 hat.

In OPNsense habe ich eine Bridge aus ix0, ix1, ix2 und ixv0 erstellt, dieser Bridge die Mac Adresse des vf Interfaces gegeben und anschließend diese Bridge als mein LAN Interface zugewiesen, sowie die VM neugestartet.
Die Zuteilung der Mac Adresse hängt mit dem vf Interface zusammen.

Nach dem Neustart kann ich mich auf den Interfaces ix0 bis ix2 mit der VM verbinden. Auf dem Port an dem das vf Interface ixv0 hängt klappt dies nicht.
Im ersten Screenshot sieht man auch, dass mein Rechner dort keine IP-Adresse erhält. Logge ich mich über Proxmox auf der Konsole der VM ein, sehe ich, dass das Interface ixv0 in der Bridge fehlt.
Füge ich das Interface händisch der Bridge mit:
ifconfig bridge0 adds ixv0
hinzu, erhalte ich kurz darauf eine IP-Adresse und kann auf das Webinterface der OPNsense zu greifen.

Nun die Frage. Warum fehlt das Interface ixv0 in der Bridge und wie kann ich das abstellen?

Danke schon mal für's Lesen.

Ich antworte mir mal selbst. Das Problem habe ich nun umschifft, gelöst ist es noch nicht.

Ich habe in /usr/local/etc/rc.syshook.d/start folgendes Script mit dem Namen 99-add-missing-bridge-ifaces
abgelegt und ausführbar gemacht:

#!/bin/sh

bridges="bridge0"
bridge0="ixv0 vlan01 vlan02 vlan03"

for BR in ${bridges}; do
BRI=$(eval "echo \${$BR}")
for IF in ${BRI}; do
ALREADY_ADDED=$(/sbin/ifconfig ${BR} | grep ${IF})
if [ -z "${ALREADY_ADDED}" ]; then
echo "adding ${IF} to ${BR}"
/sbin/ifconfig ${BR} addm ${IF}
fi
done
done

In bridges trage ich die Netzwerkbrücken ein, die nicht so wollen, wie ich es will. Und in der Variable für jede Brücke die Interfaces, die zu der Brücke gehören sollen.

Grüße rookie.