Problem: VLAN Routing, bhyve & Server VM

thorsten

Member
Moin zusammen,

ich habe mal wieder ein Problem, ist sicher nur eine Kleinigkeit, aber ich komme nicht drauf.

Zum Setup:
Cisco SG350 L2 /L3 managed Switch im 10...* Netz und 3 VLANS
VLAN Routing enabled
VLAN 10 --> IF (Interface) = 10.10.10.1 --> DHCP für Clients macOS, FreeBSD & Windows 11
VLAN 20 --> IF = 10.10.20.1 --> DHCP für Clients macOS ...
VLAN 100 --> IF = 10.100.1.1 --> für Server (fix): 10.100.1.10 = bhyve (FreeBSD Hypervisor) & 10.100.1.2 = FreeBSD VM (Leerer FreeBSD Server als VM)
Die IF des Servers werden via tap und bridge in die VM gereicht

Für alle VLANS legt der Switch "Direct Routes" von den *.0 Netzen auf das jeweilige IF *.1
Es gibt auch eine Default Route von 0.0.0.0 auf die Adresse der VM 10.100.1.2

Jetzt zum Problem:
Das Inter VLAN Routing erlaubt mir jeden Client von jedem Client anzupingen
Von den Clients kann ich auch auf den bhyve Server mit der Adresse .10 pingen
Niemals kann ich die VM mit der *.2 Adresse anpingen, wohlgemerkt die VM liegt im gleichen Netz wie der Hypervisor!
Vom bhyve (.10) kann ich die VM (.2) anpingen und umgekehrt

Join ich einen Port eines Clients in das Netz des Hypervisors und vergebe im Client eine feste IP (bspw. 10.100.1.101), so dass sich auch der Client im selben Netz wie der Server befindet kann ich sowohl den Hypervisor als auch die VM anpingen - so will ich das aber nicht haben! Ich will getrennte VLANS!

Was also mache ich falsch, was fehlt wo, damit ich aus VLAN 10 die VM in VLAN 100 erreiche
(Firewalls und andere PF sind alle freigeschaltet, daran liegt glaube ich nicht)
Per ssh Hopping komme ich auch schlussendlich auf die VM, egal aus welchem VLAN, physisch also erstmal alles da.

Ich weiß aber grad noch nicht mal wo ich suchen soll.
Gerne kann ich Configs vom Servern oder Router hier reinpasten

Ich hoffe hier kann mir jemand helfen

Vielen Dank & Gruß

Thorsten
 
Es würde helfen die config der bhyve vm und des hosts zu haben denke ich, natürlich vor allem im Bereich netzwerk.
 
hi

auf den smb cisco sollte man kein routing machen.

du benoetigst auch keine ip auf dem switch.

leg auf dem cisco eine trunk ( switchport mode trunk ) ggf ueber einen port-channel
interface TenGigabitEthernet1/0/3
switchport mode trunk
switchport trunk allowed vlan 10,20,100

auf dem bhye legst du die ensprechenden switches an und fuegst das
vlan dem entsprechenden switch zu.

wenn freebsd routing machen soll dann forwarding einschalten, und die vlans
mit ips versegen.

Firewall kannst du dann mit ipfw oder pf machen .

# vm switch info dmz
local: _netgraph,: bad variable name
------------------------
Virtual Switch: dmz
------------------------
type: standard
ident: vm-dmz
vlan: -
physical-ports: vxlan120
bytes-in: 234600916513 (218.489G)
bytes-out: 234587648772 (218.476G)

virtual-port
device: tap1
vm: jailhouse

virtual-port
device: tap0
vm: silo
ich verwende im uebrigen vm-bhyve zum managen

da ich einen firewall / Router mit den entsprechenden vlan(x)s und IPs habe
muss mein bhyve server nicht routen und hat somit keine ips auf den vm-switches.

die config von mir wuerde dir nicht helfen da ich meine segementiert komplett auf vxlan
umgestellt habe.

holger
 
Moin zusammen,

vielen Dank für die Antworten soweit und sorry, dass ich mich jetzt erst wieder melde...

@Holger: vielen Dank für die Hinweise, auch wenn ich sie grad nicht ganz verstehe.

Ganz allgemein möchte ich noch anmerken, dass mein Setup nicht wirklich professionell genutzt wird! Ich habe hier im Haus mehr Clients als User und ich möchte mich mit den Themen beschäftigen um sie besser zu verstehen, macht also nix wenn das nicht immer so optimal ist.
Grundsätzlich kann der Cisco smb aber Routing oder?

Ich bin jetzt auch einen Schritt weiter. ich kann den Server mit der Adresse *.2 anpingen, aus allen Netzen und ich kann auch eine ssh Session starten.
Fehler war der "defaultrouter", der muss auf dem Interface des VLANs stehen und hat auf die firewall gezeigt...

Und da ist mein eigentliches Problem: die Firewall (pfSense) liegt auf dem selben Hypervisor eine IP daneben (jetzt *.1), musste den Switch umkonfigurierten, hier hat das IF jetzt die .254

Also, die TestVM funktioniert mit folgender rc.config:
1684677742390.png


Ich kann die FW nur aus dem eigenen Netz 10.100.1.0 anpingen nicht aus den anderen VLANs, wo aber die leere VM funktioniert.
Und auch nur aus diesem Netz habe ich Internet.
Es muss also an der Einstellung der Firewall liegen. Es ist quasi eine "nackte" pfSense, aktuell ohne zusätzlichen Routen oder Gateways
(Ich hatte da ein bisschen gespielt und dabei leider die FW unerreichbar gemacht, darum musste ich neu konfigurieren...)
Braucht es statische Routen aus den VLANs? Ich bin verwirrt...

Danke nochmals für weitere Hilfe

Thorsten
 
hi

grundsaätzlich kann der cisco als router verwendet werden , ist aber eher davon abzuraten das der
nicht die performance dafuer hat.

eigentlich benötigst du auch kein routing auf dem switch , wenn du diesen nur layer2 maessig configugrierst

cisco -> trunk -> freebsd (lagg if )

die ueber die den trunk uebertragenen vlan koppelst du an die vm switches.
hier sollten du deine vlans 10,100,200 sich wieder finden.

auf den vm switch der das vlan einthält ,worueber der bhyve server erreichbar sein
soll konfiguriert du die ip ensprechenden ( siehe FreeBSD Handbuch -> Bridge )

alle anderen vm-switches brauchen keine ip konfig.

die firewall vm verbindest du mit dem entsprechenden vm switches
wichtig ist das alle vlan letztenendlich an der firewall ankommen,
diese mach dann dein routing.

alle weiteren VMs verbindest du mit dem vm-switches wie benötigt.

auf dem switch musst du nun noch die ports an denen PC , drucker , WLAN AP , etc
dem entsprechenden vlan zuweisen.

z b.
int gi1
switchport mode access
switchport access vlan 10


so sollten alle geräte dann die jeweile segement ( VLAN ) ip erreichen ,
ebenso die geräten in den unterschiedlichen VLANs.

Achtung a ich nicht weiss wie der pfsense default ist bei den firewall regen
muessten du ggf noch allow regel , wie benötigt , bauen oder die
Zone auf allow all umstellen, das musst du im pfsense nachschauen.

das routing findet dann auf der Firewall statt.

der switch bewegt sich dann im reinen Layer2 .

cisco nennt das ganze auch gerne "router on a stick"

wenn du z.b. noch einen eingenen router vor der pfsense hast , z.b. fritzbox ,
solltest du das gerät an deinen bhyve server anschliessen ,
das interfave einem vm-switch z.b. WAN zuweisen und hier eine verbindung
zum wan if der firewall herstellen.
auf der pfsense das wan if und das default if ensprechen konfigurieren.

ggf nat auf der pfsense oder , besser auf dem vorgeschalteten router konfigurieren,
damit der auch fuer alle verwendeten ip netze das nat macht.

somit sollte das ganze so aus sehen

wan-----> bhyve host interface -> vm-switch-wan -----------------------------> vm pfsense
cisco ---> bhyve host interface -> vm-switch-vlan10,vlan100,vlan200 ---> vm pfsense
bhyve host interface -> vm-switch-vlan10 ---> vm A
bhyve host interface -> vm-switch-vlan100 -> vm B
bhyve host interface -> vm-switch-vlan200 -> vm C

somit hat die pfsense vm mindestens 4 interfaces

auf dem cisco gibt es:
a: 1x switchport mode trunk
b: 9x switchport mode access
c: auf dem vlan unter dem der switch selber erreichbar sein soll die entsprechende IP config

alle weiteren IP / Netze und routing die du aud dem switch gemacht hast solltest du löschen

ich hoffe das hilft weiter.


Holger
 
Moin Holger,

vielen Dank, ich versuche da gerade durchzublicken.
Was ich jetzt geändert habe:
VLAN 30 gab es auf Cisco, das zugehörige IF habe ich gelöscht.
Den Port (Cisco IF 10.100.1.254), wo der bhyve Server physisch angeschlossen ist mit 10.100.1.10, habe ich auf trunk gestellt (VLAN 30 ist sowohl administrativ als auch operational getagged.

Als pendent habe ich in der pfSense VM das VLAN 30 angelegt und dem LAN IF mit der IP 10.10.30.1 der pfSense hinzugefügt.
Einen DHCP für den gewünschten IP Bereich angelegt, so wie ich es auf dem Cisco hatte.

Auf der pfSense in der Shell kann ich dieses IF anpingen, sonst nirgends woher.

Heißt das, das ich auf dem physischen IF des bhyve soviel tap anlegen und via bridge in die pfsense reichen muss wie ich VLANs haben möchte?
oder was ist mit vm switch gemeint?

Bei 3 VLANs muss ich 3 * tap auf dem 10.100.1.10 anlegen und 1 * tap auf dem physischen IF wo die Fritz!Box (noch) als Internet Gateway dient.

Edith: hab noch ein bisschen gemalt:
vm-switch.jpg

das blau geschriebene ist in der pfSense angelegt
Muss ich rot auch noch im bhyve anlegen?

sorry für meine vielen Fragen

Danke & Gruß

Thorsten
 
Zuletzt bearbeitet:
hi
du legest ja bridges fuer die verbindung zwischen vm und dem physisch interface an.
das ist der "vm switch".

hiervon legst du pro vlan einen vm-switch an mit dem vlan interface als member .
siehe auch

das vlandev ist hier bei das interface welches zum switch geht.

die vm's werden dann an dem switch verbunden wo es benötigt wird,
die pfsense hat das mehrere verbindungen zu dem bridges / vm-switch.

ich kann dir nur empfehlen das paket vm-bhyve zu installieren das ist das
besser mit den vm-switches zu verstehen.

die wenn du die fritzbox an einem dedizieren interface angeschlossen hast am
bhyve server das musst du diesen interface der bridge hinzufügen statt dem
vlan interface ( deswegen soll WAN/Internet ) auch eine eigene Bridge / vm-switch sein)

du musst auf dem trunk alles vlan allow'en die getagged uebertragen werden sollen,
oder "switchport trunk allowed vlan" , ganz weg lassen , dann werden alle übertragen.

Holger
 
noch , was
die tap interfaces der vms sind quasi die ethernet kabel fuer die vm,
diese steckst ( verbindest ) du mit einem switch ( bridge ) .

Somit können auch mehrere vm auf einem switch verbunden werden.

In diesen Setting muss im kern nur ip auf den vm's konfiguriert werden.
ausnahme gibt es nur fuer die management ips des cisco und des
bhyve Server.

Holger
 
Moin Holger,

vielen vielen Dank für deine Erklärungen und Mühen, das hilft mir sehr weiter und ich verstehe Stück für Stück.
Den Link mit den VLAN Konfigurationen habe ich gestern Abend selbst noch gefunden, jedoch funktioniert die Syntax bei mir nicht so wie dort beschrieben.
Du schreibst:
In diesen Setting muss im kern nur ip auf den vm's konfiguriert werden.
ausnahme gibt es nur fuer die management ips des cisco und des
bhyve Server.
Management ist klar, habe ich jetzt das 10.100.1.10 auf dem bhyve, .254 auf dem Cisco verwendet, damit ich auf die *.1 der pfSense komme und administrieren kann.
Das heißt, dass die im bhyve kreierten VLANs kein Interface, keine IP Adresse brauchen?
(... hätte ich jetzt wie oben mit dem 10.100.1.0 für jedes VLAN außer der .254 auf dem Cisco gemacht.)

Weil die IPs *.1 der jeweiligen VLANs habe ich in der pfSense angelegt, kann sie aber nur in der pfSense anpingen, vom bhyve erreiche ich sie nicht.
Also klemmt es gerade mit tap & bridges, bzw. VLANs im bhyve mit der Zuordnung zu den physischen interfaces
...muss mich da heute Abend noch weiter einlesen.

Danke & Gruß nochmal

Thorsten
 
hi

richtig die vlans auf dem bhyve brauchen keine ips ausser dem vlan was ggf. fuers management ist.

Holger
 
Moin,
ich glaube ich habe jetzt jede Permutation von Syntax und für die Verwendung von VLANs in FreeBSD durchprobiert, nix funktioniert!
Unabhängig von der Firewall als VM habe ich probiert ganz normal an BSD Hosts ein VLAN einzurichten, möglichst einfach

Am Switch folgende Konfiguration:

switcha55c5f#do show vlan

Created by: D-Default, S-Static, G-GVRP, R-Radius Assigned VLAN, V-Voice VLAN

Vlan Name Tagged Ports UnTagged Ports Created by
---- ----------------- ------------------ ------------------ ----------------

1 1 gi23,Po1-8 DV

20 WLAN gi13 S

99 99Default S

192 TEMP192 S

1002 vlan1002 gi6,gi12 S

Um das VLAN 1002 geht es, am Switch mal mit Interface 10.100.2.254, mal ohne ...
Kein trunk, ich will nur die beiden Hosts an gi6 & gi12 gegenseitig anpingen können...

Am BSD Host folgende rc.conf (Schnipsel)

ifconfig_em1="up"
cloned_interfaces="vlan1002"
ifconfig_vlan1002="inet 10.100.2.10 netmask 255.255.255.0 vlan 1002 vlandev em1"

# ifconfig_em1="10.100.2.10 netmask 255.255.255.0 broadcast 10.100.2.255"
# defaultrouter="10.100.2.254"

Die mit # kommentierten Zeilen funktionieren mit IF auf dem Switch, ohne natürlich nicht
ifconfig zeigt das vlan auch richtig an mit phys IF und VLAN, alles richtig IMO:

vlan1002: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4000001<RXCSUM,NOMAP>
ether 0a:e4:4c:68:16:ff
inet 10.100.2.10 netmask 0xffffff00 broadcast 10.100.2.255
groups: vlan
vlan: 1002 vlanproto: 802.1q vlanpcp: 0 parent interface: em1
media: Ethernet autoselect
status: no carrie
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Der zweite Host hat inet 10.100.2.101 und das physische IF heißt re0 statt em1 - sonst alles identisch

ich kann immer auf dem Host die lokale IP anpingen .10 oder .101, niemals den anderen Host, oder das IF auf dem Switch wenn es denn konfiguriert ist mit .254

mit den mit # auskommentierten Zeilen geht es in alle Richtungen

Wo ist der Fehler?

Vielen Dank & Gruß

Thorsten
 
hi
hast du den port an de der freebsd host am switch angeschlossen ist , auch entsprechen configuriert ?

int gi6
switchport mode trunk


nur dann werden die vlans getagged übertragen und deine freebsd config sollte dann funktionieren.


die freebsd config fuer die vlans sieht fuer mich ok aus.

holger
 
HI,

also die FreeBSD Config scheint OK, denn wenn ich die beiden Hosts direkt miteinander verbinde, kann ich sie untereinander anpingen.

Also muss ich am Cisco suchen und mich noch mal mit Access /Trunk auseinandersetzen, hab schon ein wenig mit trunk & "allowed vlans" herumgespielt, aber ohne erfolg...
Ein bisschen problematisch ist, dass "Lehr Videos" immer mit Catalyst oder so gemacht sind.
Der IOS Befehlssatz von PRO und SMB Switches ist ein bisschen unterschiedlich, bei SMB nicht nur anders, sondern auch weniger Schalter /Eigenschaften...

... melde mich

Thorsten
 
Das klingt auf jedenfall nach einer Richtung.

Bei Aruba wärs erst die vlans anlegen mit

vlan 100
vlan 110
etc
und dann auf den jeweiligen interfaces

vlan trunk allowed 100,110
 
Hi
Gerade was den Interface Befehl Switchport betrifft kann du das allermeisten übernehmen vom catalyst
Der Default, wenn du Switchport Mode trink setzt ist Switchport allowed vlan any

Holger
 
Hi,
Noch mal für mein Verständnis, sorry wenn ich nerve:
Ich habe 2 Hosts (FreeBSD) und 1 Switch, alle im selben VLAN (1002) und alle im selben Adress Bereich 10.100.2.0 (10, 101 & 254 für den Switchport)
Nehme ich auf den Hosts die VLANs weg und belasse es nur auf dem Switch funktioniert alles wie es soll, Ich kann Switch und Hosts anpingen
Die Hosts mit VLAN kann ich nur anpingen, wenn ich sie direkt als peer2peer verbinden, verbinde ich sie mit dem Switchport geht kein Ping mehr raus.

Wenn ich das richtig verstanden habe sind Trunk Ports nur dann notwendig, wenn ich aus mehreren VLANs über einen Port (eben den Trunk) an einen anderen Switch übertragen möchte. Der Switch merkt, dass er Pakete aus verschieden VLANs verschicken muss und erweitert den Paketheader um den VLAN Tag des sendenden VLANs nach dem 802.1q Standard, dieser muss von allen Interfaces verstanden werden.
Auf der letzten Meile, dann wenn es nur noch einen Empfänger geben kann, wird vom letzten Switch dieses Tag wieder entfernt, weil im Zweifelsfall das IF nix damit anfangen kann.
Wenn ich nachher die Firewall auf dem Hypervisor betreibe ist mir jetzt klar, das der gi12, an dem die Büchse angeschlossen ist, ein Transport sein muss.

Für den einfachen Fall jetzt habe ich nur eine erste und letzte Meile mit einem Switch dazwischen, nix muss verteilt oder verhindert werden, und somit auch nicht getagt werden

Nach meinem Verständnis müsste es also egal sein ob die Ports im access oder trunk mode konfiguriert sind, nur für diesen einfachen Fall, 2 Hosts, 2 Ports, 1 Switch - oder?

Hier noch mal die Port Configs, gi6 für den BSD Client und gi12 für den Host, der nachher der Hypervisor ist und getrunkt werden muss (sind aber aktuell beide:
1684947649280.png


1684947695223.png





... gibt es eigentlich einfache Programme für FreeBSD oder macOS, mit denen man sich den Header der Pakete mal ansehen kann, mittracen kann?

Danke & Gruß

Thorsten
 
Zuletzt bearbeitet:
Hi,
Noch mal für mein Verständnis, sorry wenn ich nerve:
Ich habe 2 Hosts (FreeBSD) und 1 Switch, alle im selben VLAN (1002) und alle im selben Adress Bereich 10.100.2.0 (10, 101 & 254 für den Switchport)
Nehme ich auf den Hosts die VLANs weg und belasse es nur auf dem Switch funktioniert alles wie es soll, Ich kann Switch und Hosts anpingen
Die Hosts mit VLAN kann ich nur anpingen, wenn ich sie direkt als peer2peer verbinden, verbinde ich sie mit dem Switchport geht kein Ping mehr raus.


Nach meinem Verständnis müsste es also egal sein ob die Ports im access oder trunk mode konfiguriert sind, nur für diesen einfachen Fall, 2 Hosts, 2 Ports, 1 Switch - oder?

Das kommt etwas drauf an was du machen möchtest, egal ist das aber keineswegs.

Entweder du hast an einem Switchport ein weiteres Gerät (Weiterer Switch, FreeBSD) das getaggte pakete erwartet, dann musst du den Switch so konfigurieren das er mit vlan getaggte Pakete an dieses interface weitergibt. Auch unter cisco wird ein so konfigurierter Port "trunk" genannt sofern ich das gerade richtig recherchiert habe.
(Hier muss man uu noch dem Port auf BEIDEN SEITEN sagen welche VLANs akzeptiert werden.

Oder du hast ein Gerät das auf der anderen Seite das keine getaggten Pakete erwartet, dann muss der Port als "Access" port konfiguriert werden, dieser entfernt dann vorm "rüberschicken" den Tag, und gibt auch nur pakete entsprechend weiter die zu einem bestimmten vlan gehören.

Beispiel: Ein Internetgateway-Router/"Firewall" (zb die PF Sense) ist auf einem seiner Ethernet-Ports mit vlan 100, 150 und 200 konfiguriert und hat dort auch für jedes dieser VLANS ein IP-Netz und eine IP konfiguriert, ziel ist es das unterschiedliche Geräte im lokalen Netz unterschiedliche dinge im Internet machen dürfen (Nur ein Beispiel, VLAN ist Layer2 und funktioniert auch komplett ohne IPs).
Das Interface ist so konfiguriert das es ausschließtlich "vlan-getaggte" Pakete dadrüber weitergibt (100, 150, 200) - in "meiner" Netzwerksprache ein "Trunk" Interface.

Jetzt schließ ich da einen Switch an und konfiguriere den port als reinen "access". Das wird nicht funktionieren, da der Switch getaggte Pakete bekommt, mit dem er nichts anfangen kann, und es ist ja auch s.o. nicht das ziel.
Also konfiguriert man auf dem Switch die 3 VLANs und dann auch den Port der zum Router führt als "Trunk" und dort nochmal explizit das die 3 vlans erlaubt sind.

Möchte ich jetzt mehrere "normale" Clients, villeicht ein PC oder ein Drucker oder auch ein Server der nicht auf vlans konfiguriert ist an den Switch anschließen, konfiguriere ich die entsprechenden Ports als "ACCESS" port mit dem jeweiligen vlan in das das Gerät soll, z.b. vlan 100. Der Switch nimmt nun jedes Paket, das an den angeschlossenen Client anhand der Mac-Addressliste soll, entfernt den Tag und gibt es so als "normales" Paket an den Client weiter. Pakete die vom Client ans netz kommen, werden mit dem TAG wieder versehen. Grundidee: Der Client "sieht" keinen Datenverkehr aus den anderen VLANs und kann diesen Datenverkehr auch nicht manipulieren. Möchte er Clients die auf ein anderes VLAN konfiguriert sind erreichen, muss er über den Router auf Layer3 gehen.

Habe ich einen weitere Switch, der auch Clients aus allen 3 VLANs bedienen soll, so verbinde ich beide Switche über einen Port, den ich auf beiden Seiten als Trunk definiert habe und dem ich sage das die auch "erlaubt" sind an diesem Ports. Dann kann ich beim zweiten Switch auch wieder endgeräte als "Accessport" definieren. Soviel zum grundaufbau.

Im fall der FreeBSD Kiste ist also die Kernfrage: Hast du FreeBSD gesagt das es vlan-tagging betreiben soll? Dann sollte das ein Trunk-Port sein. Hast du das nicht getan? Dann sollte es ein Accessport sein.

Dazu noch ein weiterer Gedankengang: Du kannst theoretisch FreeBSD als "trunk interface" so konfigurieren das das "Host" Betriebsystem im z.B. VLAN100 ist, dort auch eine IP hat und das HOST-Betriebsystem dann für die VM-Gastsysteme die VLAN Tags entfernt, dadurch muss das Gastsystem sich nicht mehr drum kümmern und es kann nur noch das eine VLAN sehen. Das kann sehr sinnvoll sein. Es ist aber auch möglich die getaggten Pakete weiterzugeben. An der stelle verhält sich FreeBSD, sofern richtig konfiguriert, wie ein virtueller Switch, zb der Switch 2 aus meinem Beispiel.

(Noch 2,3 weitere Gedanken: Moderne Switche können meist noch sehr viel mehr als nur "trunk" und "access" mit relativ statischer Konfiguration, manchmal zb Hybrid genannt, das hat viele gute Gründe, würde ich zum einstieg / im Lernprozess erstmal vermeiden. Zweitens: Idr. weißt man einem Switch ein "Management-VLAN" zu. In dem jew. mgmt-vlan bekommt der Switch dann eine IP, so das er zb auch den router auf Layer 3 erreichen kann. Er taggt dann seine "eigenen" Pakete mit dem gewünschten vlan, wie als wäre "er" zum Managen ein normaler PC, Drittens: Sollte man einen Layer3-Switch haben und auch als solchen verwenden wollen, ist der Switch gleichzeitig sowohl der router als auch der Switch im beispiel - würde ich auch nicht direkt mit einsteigen ehrlich gesagt)
 
Hi ZED,

vielen Dank für deine Erläuterung, die auch teilweise, immer mehr verstehe. Nachher ist eine der BSD Kisten ein Client (aktuell an gi6 angeschlossen) wie viele andere auch und eine BSD Kiste wird ein Hypervisor mit VMs für pfSense und evtl noch anderes - da ich es aktuell nicht durchdringe wäre es zu kompliziert. Darum erstmal die beiden BSD Kisten BEIDE als Client betrachten - so simple wie möglich das ich da reinkomme.
Aktuell sind beide BSD Kisten und der Switch mit VLAN 1002 und IP Adressen im Raum 10.100.2.0 konfiguriert.
Lasse ich auf den BSDs die VLANs weg kann ich alles innerhalb des VLANs 1002 alles anpingen, beide Hosts und das IF des Switches.
Konfiguriere ich bei einem BSD das VLAN ist er eingesperrt und kann weder den Switchport noch den anderen BSD anpingen.
Die Konfigurationen sind oben.

Ich habe jetzt mal einen tcpdump auf dem IF mit der IP 10.100.2.10 gemacht, ab der Zeile 05:22:16 setze ich auf dem andern Host von der IP 10.100.2.101 einen Ping 10.100.2.10 ab, also es kommt was an
Ich sehe dadrin aber nix von irgend einer VLAN ID die 1002 sein müsste:

1684951965988.png
 
Code:
vlan1002: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
   options=4000001<RXCSUM,NOMAP>
   ether 0a:e4:4c:68:16:ff
   inet 10.100.2.10 netmask 0xffffff00 broadcast 10.100.2.255
   groups: vlan
   vlan: 1002 vlanproto: 802.1q vlanpcp: 0 parent interface: em1
   media: Ethernet autoselect
   status: no carrie
   nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Ich würde erstmal schauen, wieso das Ding keinen Carrier hat. ;)
 
Zwei Tips:
Stöpsel den Cisco ab und resette ihn, damit du einen frischen Stand hast und keine ungewollte Sicherheitslücke (btw. Sicherheitslücke...eine gute Gelegenheit nach Firmware zu schauen, der SG350 müsste bald oder schon EOL sein?). Schließe nur einen Client an zur Fehlervermeidung. Ändere die IP des webGUI wie du sie haben willst, statisch!, DHCPclient etc. alles aus, reboote den switch aus der GUI heraus. Jetzt wechselt du die IP deines Clients auf den gleichen Bereich und verbindest zur neuen IP (ohne VLAN, alles native). Wenn das klappt, bestätigst du die Änderung fest. Bei Cisco ist das temporär beim Neustart, Stecker ziehen würde die letzte Änderung rückgängig machen, ggf. läuft da auch ein Zeitfenster ab. Suche dir nun einen Port aus, den du dir als Notfallport reserviert hältst. Gerne den letzten, die 8 und markiere den mit einem Aufkleber/Edding etc.
Diesen definierst du als untagged Access-Port, alle anderen deaktivierst du zunächst. Jetzt erneut rebooten. Stecke das Kabel auf jeden Port und prüfe, ob du die webGUI erreichst. Wenn 1-7 'tot' sind und du nur über Port8 reinkommst, ist alles korrekt. Wenn gar nichts mehr geht, wieder resetten und zurück auf Los. ;)

Richte dir doch mit bhyve passthrough eines einzelnen Ports (geht problemlos bei Intel, bei anderem Hersteller muss man mal schauen/probieren) deiner NIC ein, dann sparst du dir den Umweg über den bhyve-vswitch sowie Latenz und dort aufprallende Pakete gehen direkt zu pfSense. In pfSense siehst du den Port dann mit der echten MAC und als Gegentest ist er auf dem Host verschwunden. Ich weiß nicht genau, wie sich das bei pfSense verhält, bei opnsense braucht man es nicht, aber schaden tut es auf keinen Fall: füge diesen Port als 'blanko'-Interface hinzu. Nur den Haken bei 'enable Interface' rein, IP auf none lassen, nichts weiter konfigurieren, als Name bietet sich 'trunkport_cisco' an. Das ist, damit das Interface auf jeden Fall 'up' kommt.
Nun setzt du darauf deine vlans in pfSense. Jedes einzelne VLAN fügst du nun in der Sense als Interface hinzu, für die Übersichtlichkeit als name v10, v20, v30. Der Einfachheit fürs Verständnis bietet sich jeweils 192.168.10.1/24, 192.168.20.1/24 und 192.168.30.1/24 an.
Zurück auf dem Cisco legst du die gleichen VLANs an. Suche dir am Cisco nun deinen Port für den Trunk aus, gerne die 7. Du definierst den port7 als trunk-only, also alles andere weg/verbieten. Füge alle vlans als 'tagged' diesem trunk/port7 zu. Jetzt kannst du port7 mit dem trunkport_cisco der pfSense verbinden. Es bietet sich auch an, die webGUI in ein gesondertes VLAN zu verfrachten, z.B. tagged99 und auch dieses packst du in den trunk/port7. Hier weiß ich es nicht mehr genau aus dem Hinterkopf, aber Cisco hat da ein paar Eigenarten wie man die webGUI nicht konfigurieren kann, ggf. etwas probieren. Es kann sein, dass du den port8 zunächst umkonfigurieren musst, wenn du der webGUI ein VLAN zuweist. Probiere danach, ob der port8 noch geht, ggf. hier Stecker ziehen um zur vorherigen config zu gelangen.
Auf der Sense das gleiche Spiel, vlan99 anlegen, dem Interface 192.168.99.1/24 geben und jetzt vorausgesetzt, dass die webGUI vom Cisco 192.168.99.2/24 hat, solltest du von der Sense aus diese pingen können. Andersrum wird erstmal die Firewall reingrätschen. ;)
Nun kannst du dich um den port5 kümmern, da legst du z.B. das VLAN 30 drauf, aber diesmal untagged! Daran kannst du nun einen Client aus dem 192.168.30.x/24 anschließen und die Pakete erreichen auf der Sense 192.168.30.1/24

Bonus: auf dem Host kannst du einen extra-vswitch anlegen. Wenn du die IP (z.B. 192.168.88.2/24) auf den vswitch legst und diesen nur der pfSense gibst, erscheint der erste (wenn er der erste in der vm ist) als vtnet0 als Gegenstück. Dem gibst du seitens pfSense dann 192.168.88.1/24 und hast auch nach Durchlassen auf der Firewall Verbindung und kannst wiederum auf dem Host die 192.168.88.1 als Gateway und DNS geben.
Du kannst natürlich auch einen kostbaren Port am physischen Cisco 'verschwenden' und ein Kabel stecken (Access-Port!) und du könntest sogar noch einen Port der NIC an die Sense 'passthroughen' und die Fritzbox direkt an die Sense anlegen. Hat den Vorteil, dass der Host auch vom anliegenden Internet der Fritzbox durch die pfSene abgeschirmt ist.

Für mich war es immer sehr nützlich, solche größeren configs mit einem von meinem eigentlichen Netzwerk unabhängigen Laptop auszuführen. Damit ist man flexibel, sieht die Auswirkungen auf den Zielrechnern direkt und man verliert nicht den Überblick.

Viel Spaß! :)
 
Danke mr44, werde ich morgen nach Feierabend mal genau so machen...

Noch mal zum tcpdump:
Ich habe mich jetzt vom Mac aus 2 mal auf dem 10.100.1.10 verbunden, das ist das em0 IF der Kiste mit insgesamt 4 Ports, die mal Firewall werden soll, bzw aktuell auch ist, nur eben ohne VLAN

Also, in der einen Instanz läuft der tcpdump und in der anderen setze ich einen Ping zu dem anderen Host ab, auf dem auch ein tcpdump läuft.
Also genau andersherum wie im Beispiel oben, wo der spätere "Server" so ähnlich antwortet:

09:36:39.751957 ARP, Request who-has 10.100.2.10 tell 10.100.2.101, length 46

Jetzt antwortet er wie folgt:
09:36:39.751957 ARP, Request who-has 10.100.2.101 tell 10.100.2.10, length 28

Das die IP Adressen andersherum sind klar, aber warum ist die length mal 46 und andersherum 28?

Auf dem zweiten Host, dem späteren Client sieht der Dump ganz anders aus
1. ist da deutlich mehr los, da hier wie oben in der Cisco Port Konfig zu sehen ist, alle VLANs erlaubt sind, auf dem anderen ist nur das 1002 erlaubt - sieht also so aus, als würde die Einschränkung irgendwie funktionieren...

2. In dem ganzen "Gewusel" hätte ich eine Zeile wie diese erwartet:
09:36:39.751957 ARP, Request who-has 10.100.2.101 tell 10.100.2.10, length 46

tatsächlich gibt es dort:
09:36:39.751957 ARP, Request who-has 10.10.20.101 tell 10.10.20.101, length 46

--> WHAT??? das sind IP Adressen aus dem späteren VLAN für das WLAN, das es zwar auf dem Switch inkl IF schon gibt, aber gar nicht angeschlossen ist! Und auch im Adress Binding des DHCP nicht vorhanden sind

und: Das Dings fragt sich selbst, beide IPs sind gleich
und: Es gibt einen Reply: 10.10.20.101 is-at 00:00:5e:00:01:01 (oui IANA), length 46

Das is-at müsste ja von der Logik eine MAC-Adresse sein und das Format sieht ja auch so aus
So eine MAC gibt es aber in dem ganzen Umfeld nicht, vllt ein Mobiltelefon was mal verbunden war

seltsam...
 
die MAC is Teil des RFC 7042 (vorderer Teil) und RFC 5798 (hinterer Teil), kommt also auch vom Router selbst

P.S. schalte auch mal testweise das Spanning-Tree auf dem Cisco ab
 
hi

im uebrigen ist das vlan1002 ein reserviertes vlan sollte man erstmal nicht verwenden.



Holger
 
hi

im uebrigen ist das vlan1002 ein reserviertes vlan sollte man erstmal nicht verwenden.



Holger

Oh spannend, unter Aruba, Comware, HPE hab ich noch nie sonne Einschränkung gelesen, google sagt auch das ist nen reines Cisco ding noch :D
 
Zurück
Oben