[Gelöst] DHCP zwischen OPNSense und Ubiquiti (VLANs) funktioniert nicht

Started by RicAtiC, July 24, 2018, 12:56:46 AM

Previous topic - Next topic
Hallo zusammen,

ich benötige dringend Eure Hilfe, bevor ich hier noch wahnsinnig werde. Ich habe nun X Foren durchgekramt und komme einfach nicht zur Lüsung.

Zwar gibt es vieles in die Richtung "Kein DHCP Lease im VLAN auf UniFi Switch" und ähnliches, aber nichts was mein Problem bis jetzt lösen konnte.

Seit einer gefühlten Ewigkeit versuche ich auf jeden Fall, auf einem "ungetaggten" Switch-Port ein DHCP-Lease im entsprechenden
Subnet zu bekommen (von der OPNSense Firewall), aber es haut und haut einfach icht hin.

Kurz zum Setup:

                                    <-> UniFi Controller (Port 7)
ISP / WAN <-> FritzBox7412 <-> OPNSense (18.1.6) <-> UniFi Switch (UniFi Switch 8 POE-60W) <-> UniFi UAP-AC-Lite (Port 6)
                                    <-> Laptop (Wahlweise Port 2 oder 3)


Im Moment erst einmal nur Interessant ist das Zusammenspiel der OPNSense mit dem Switch.

Auf der OPNSense habe ich folgnende Schnittstellen:

Schnittstelle   Netzwerkport   
-----------------------------
DEFAULT      re0 (physikalischer Port)
DMZ      VLAN 20 auf re0 (DMZ)
GUEST      VLAN 40 auf re0 (GUEST)
LAN      VLAN 10 auf re0 (LAN)
MANAGEMENT   VLAN 50 auf re0 (MANAGEMENT)   
VOICE      VLAN 30 auf re0 (VOICE)
WAN      re1

Die VLAN-Interface haben entsprechende, statische IPs (192.168.X.100). Jedes VLAN hat einen DHCP mit der Range (192.168.X.1 -192.168.X.99) konfiguriert.

Der Uplinkport (Port 1) des UniFi Switch hat das Profile "All", ist also als Trunk bzw. Tagged Port konfiguriert. Der Port 2, an dem testweise mein Notebook
dranhängt, ist in VLAN 10 (LAN) konfiguriert.

Stöpsel ich nun an, passiert nichts. Ich bekomme partout kein DHCP-Lease. Das funktioniert immer nur auf Ports, bei denen auch das DEFAULT-VLAN/Netz (VLAN 0)
mit konfiguriert ist. Aus diesem Bereich gibt es dann auch ein Lease.

Ich habe gelesen, das sich LAN und VLAN auf dem selben Interface nicht vertragen und dass das physische Trägermedium ohnehin hinfällig wird, beim reinen
Arbeiten mit VLANs, allerdings hat mir das zwischenzeitliche Löschen von der Schnittstelle re0, nichts gebracht... Außer das ich es über die Konsole wieder anlegen musste, um überhaupt wieder auf die OPNSense zu kommen.

Ich weiß im Moment einfach nichtmehr weiter. Ich hab das Ganze Setup schon mehrfach auf Werkseinstellungen zurückgesetzt (bis auf die OPNSense),
verschiedenste Konfigs pobiert, aber es will nicht.

Eigentlich hätte ich, wenn die Basics denn mal funktionieren, auch gerne sämtliche Komponenten mal in MANAGEMENT VLAN verschoben (Webinterfaces der
FW, CloudKey, usw.), aber davon bin ich Meilen entfernt.

Wer hat einen Rat für mich, ich wäre so dankbar. Es kann doch nicht so schwer sein...

Tausend Dank vorab für jede Hilfe!

Gruß
Ric

   

Hi Ric,

ich habe ein ganz ähnliches Setup problemlos in Betrieb. Allerdings nutze ich nicht die Unifi, sondern die Edgemax-Serie der Switches. Den Unifi-Controller betreibe ich ebenfalls problemlos und zusammen mit OPN rockt das ganze ordentlich.
Ich vermute mal, dass bei dir die Switch-Config ein wenig zerballert ist. Hast du das Switch über diese schrottige Ubiquity-GUI konfiguriert ? Falls ja, dann setz die mal auf default zurück und mach das über die CLI. Das soll jetzt keineswegs arrogan, oder 1337 klingen, aber immer wenn ich bei den Dingern was über die GUI gemacht habe, gings schief, oder in der eigentlichen Config ist nicht das angebkommen, was dort eigentlich stehen sollte :-) Ansonsten sind die Switche top.

Fang doch mal so an:

Erstmal nur die OPN ans Switch und zusehen, dass du an allen relevanten Ports auch einen DHCP-Lease bekommst.
Wechsel erstmal zu "Interfaces/VLAN" und kontrolliere, ob du auf allen VLANs auch das richtige TAG schreibst.
Falls das der Fall ist, kontrolliere deine virtuellen Interfaces (DMZ,LAN,MANAGEMENT usw.). Ist auf jdem Interface eine statische IP konfiguriert ? Der Haken "Block private Networks" entfernt ?
Nimm dir nun ein Interface, z.B. LAN und wechsel in den Firewall-Tab. Hier knallst du jetzt zum testen mal eine ANY-TO-ANY-Regel rein. Anschließen "Apply" klicken und zum "Services" Tab wechseln.

Überprüfe hier, alle Netzwerkeinstellungen, wie Gateways, DNS und vor allen Dingen Range und Netzmaske. Stell sicher, dass der DHCP-Server auch enabled ist. (Haken ganz oben). Wenn das der Fall ist, wechseln wir jetzt zum Switch.

Log dich per SSH ein und setze im Enable-Mode mal ein "show running config interface 0/XX" ab, wobei 0/XX der Port ist, an dem du die OPN connected hast. Ist der Port als "trunk" konfiguriert ? Falls nein, mach das mal schnell. Und außerdem: Falls du auf deinem Switch global DHCP-Snooping aktiviert hast, muss der Port explizit als "trusted port" konfiguriert werden. Sonst kannst du DORA über den Port vergessen:

interface  0/XX
description 'OPNSense'
ip dhcp snooping trust
switchport mode trunk
switchport trunk allowed vlan 10,20,30,40,50

Als nächstes schaust du dir den Port an, an den du dein NB klemmen willst. Konfigurier ihn als einfachen Access-Port / Edge-Port. Das geht so:

interface  0/YY
description 'Notebook VLAN 10 untagged'
spanning-tree edgeport
switchport mode access
switchport access vlan 10
exit

Jetzt einmal "write mem" und die Config ist reboot-persistent gespeichert.

Was du gemacht hast: Auf re0 liegen (hoffentlich) alle deine VLANs getagged. Port 0/XX haben wir als Trunk konfiguriert, auf dem alle VLANs getagged ankommen. Außerdem haben wir für den Fall, dass DHCP-Snooping gloab aktiv ist, definiert, dass über XX DHCP erlaubt ist. Port YY haben wir als Edgeport definiert. Also untagged VLAN. Das bedeutet, das Switch bügelt ein VLAN-Tag ins Paket, sobald es im Port ankommt und arbeitet dann damit weiter. Wenn du jetzt dein Noteboot an XX anschließt und auf der OPN alles korrekt ist, solltest du aus dem LAN / VLAN 10 einen DHCP-Lease bekommen.

Falls es immernoch nicht funktioniert, poste mal bitte deine Portkonfiguration des Switches. Den Unifi-Controller und die APs ans Netz zu bringen ist, dann auch kein Ding mehr.

MFG
Wayne


Hi Wayne Train,

zunächst mal den aller herzlichsten Dank für Deine ausführliche Hilfe und die Zeit die Du dir dafür genommen hast. Danke!

Soweit habe ich mir alles noch einmal angeschaut, hatte ich auch vorher bis zum erbrechen :P Allerdings habe ich jetzt auch noch einmal im DHCP des jeweiligen VLAN-Interfaces das Gateway & den DNS händisch gesetzt. Sollte sich doch aber auch automatisch "füllen", oder. Die Config vom physischen re0-Port (VLAN0 = Default) hat es auch nicht gesetzt und das DHCP-Lease kommt an.

Was die Switch-Config angeht, so habe ich "leider" keine Edge-Serie sondern die Unifi Serie. Ich habe auch mal eine CCNA/CCVP gemacht und kenne die Cisco und auch die HP Syntax, so wie Du beschreibst. Die Unifi Serie allerdings, auch wenn man per SSH drauf kommt, erinnert mich eher an irgendwas Linuxartigeres mit sehr eingeschräkten Features zur Konfiguration. Das ist wohl schlichtweg so gewollt, dass das über das Webinterface des Controllers passiert.

Hier mal die Commands, die ich zur Auswahl hätte:

US.v3.8.9#
[                    ip                   rm
[[                   jq                   rmdir
adjtimex             kill                 rmmod
arp                  killall              route
arping               killall5             scp
ash                  klogd                sed
awk                  less                 seq
base64               ln                   sh
basename             lock                 show_node
brctl                logger               show_nt
bunzip2              login                sleep
busybox              ls                   sort
bzcat                lsmod                ssh
bzip2                lzcat                stack-trace
cat                  mca-cli              start-stop-daemon
cfgmtd               mca-cli-op           strings
chgrp                mca-ctrl             stty
chmod                mca-custom-alert.sh  support
chown                mca-dump             swapoff
chroot               mca-monitor          swapon
clear                mca-sta              swctrl
cmp                  mca.sh               switch_root
cp                   mcad                 switchdrvr
crond                md5sum               sync
crontab              mem                  syncdb
curl                 mkdir                syncdb_test
cut                  mkfifo               sysctl
date                 mknod                syslogd
dbclient             mktemp               syslogd_wrapper.sh
dd                   mount                syswrapper.sh
devshell             mpstat               tail
df                   mtd                  tar
diff                 mv                   tcpdump
dirname              nc                   tee
dmesg                netmsg               telnet
dotlockfile          netstat              telnetd
dropbear             nice                 test
dropbearkey          nohup                tftp
du                   nslookup             time
echo                 ntpclient            top
egrep                ntpd                 touch
env                  passwd               tr
expr                 pgrep                traceroute
factorytest          pidof                true
false                ping                 ubntbox
fgrep                ping6                ubntconf
find                 pivot_root           udevtrigger
free                 pkill                udhcpc
fsync                pktgen.sh            umount
fuser                pm                   uname
fw_printenv          poweroff             uniq
fwupdate             printf               unlzma
fwupdate.real        procmgr              unxz
getty                proctest             uplink-monitor
grep                 procutil             uptime
gunzip               ps                   utermd
gzip                 pstree               vconfig
halt                 pwd                  vi
head                 qosLinkAddGroup.sh   walled_action.sh
hexdump              qosLinkAddVap.sh     watch
hostid               qosLinkInit.sh       watchdog
hotplug2             radartoolw           wc
htb                  rate.awk             which
hwclock              rdate                xargs
id                   readlink             xzcat
ifconfig             reboot               yes
init                 redirector           zcat
insmod               reset
iostat               reset-handler


Ein VLAN ließe sich noch anlegen (vconfig), allerdings nicht auf einem Port binden, geschweige denn taggen/untaggen.

Im Übrigen ist es auch so, und das habe ich noch nicht ganz verinnerlicht, kann man auf einem Port immer ein natives VLAN (untagged) setzen + ein oder mehrere tagged VLANs?!

Ich habe zusätzlich auch noch einen Thread im Ubiquiti-Forum erstellt, siehe hier:

https://community.ubnt.com/t5/UniFi-Routing-Switching/DHCP-zwischen-OPNSense-und-Ubiquiti-VLANs-funktioniert-nicht/m-p/2431033#M100347

Da scheint jemand das gleiche Problem zu haben und hat auch einen Case bei Ubiquiti geöffnet. Vielleicht ist es am Ende tatsächlich ein SW-Fehler. Aber ich schau parallel trotzdem nochmal, ob es nicht meine Konfig ist.

Ich probier also nochmal mit den neuen Einstellungen und melde mich.

Danke nochmal Wayn Train ;)

Gruß
Ric

Hi Ric,

bis auf die Fritzbox und eine etwas neuere OPNsense-Version habe ich das gleiche Setup wie du. Seit vorgestern versuche ich ein VLAN einzurichten und scheitere auch daran, dass ich kein DHCP-Lease bekomme. An Ports, denen kein VLAN  zugewiesen ist, bekomme ich sofort eine IP. Bin ratlos und hoffe, dass jemand eine Lösung hat.

Viele Grüße
Joe

Hi Ric,

ich habe mir erlaubt das Problem im englischsprachigen Forum zu posten. Vielleicht kann uns dort jemand helfen...

https://forum.opnsense.org/index.php?topic=9240.0

Grüße
Joe

Hey Jessfu,

das macht auch Sinn: Damit DHCP funktioniert, bzw. du auch einen Lease bekommen kannst, müssen DHCP-Server und der entprechende Client im gleichen Netz / VLAN sein. DHCP nutzt Broadcasts, die nicht vom Router geforwarded werden. Wenn dein DHCP in einem anderen Netz ist, musst du ein DHCP-Relay nutzen. Aber zurück zum eigentlichen Sachverhalt:
Wenn du sicherstellen kannst, dass der DHCP im entsprechenenden VLAN aktiv ist, dann  kann es eigentlich nur an deiner Portconfig auf dem Switch liegen. Auf dem Unifi solltest du schauen, ob du den Port irgendwie als "untagged" Port definiert bekommst. Vielleicht nennen die das auch "edge port" o.ä.. Kenne UniFi nicht, aber die "allwissende Müllhalde" hat mir eben verraten, dass man in der UniFi GUI für das entsprechende VLAN noch ein Profil anlegen muss. Dort wird dann definiert, ob das VLAN tagged, oder untagged ist. Wenn du deine Clients also alle in VLAN XXX hast, solltest du ein Profil für das VLAN XXX anlegen, dass untagged ist. Falls das notwendig ist.... Zuerst könntest du aber mal checken, unter Networks das jeweilige Netz als "Corporate" zu definieren und unter VLAN deine VLAN-ID zu setzen. Wenn du das VLAN dann auf einen Port mappst, sollte auch der untagged sein und DORA vom DHCP sollte sauber durchflutschen.
Hoffe dsa war jetzt nicht zu chaotisch erklärt.
MFG
Wayne

Hi Joe,

vielen Dank! Das macht absolut Sinn.

Gruß Ric

Hey,
konntest du das Problem denn jetzt lösen ?
MFG
Wayne

Hi Wayne,

leider nein. Habe im englischsprachigen Thread meinen DHCP-Log einmal gepostet:

https://forum.opnsense.org/index.php?topic=9240.msg41800#msg41800

Da fällt auf, dass der DHCP-Server im VLAN10 bspw. IP`s aus dem DEFAULT-Bereich offeriert?! Merkwürdig ist das... Obwohl ich für VLAN10 eine Range definiert hab (192.168.10.1 - 192.168.10.99).

Entweder ziehen die VLAN-Zuordnungen nicht, oder der DHCP antwortet immer nur auf der physischen Schnittstelle, also dem Default-VLAN?!

Die Anfrage kommt auch über die Schnittstelle "re0". Müsste aber doch eigentlich über "VLAN10 auf re0" kommen, oder?

Fällt Dir dazu was ein?

Gruß
Ric

Hey,

kann es sein, dass du "nur einen" DHCP-Server hast ? Du hast die Möglichkeit entweder mehrere instanzen laufen zu lassen, also für jedes Netz, oder du musst auf der FW einen DHCP-Relay einrichten und dort dann auf den DHCP der "alle bedient" redirecten. Kannst du vielleicht mal einen Screenie deiner DHCP-Config der entsprechenden Netze posten ?
Kannst du mir auch als PM schicken, wenn du es hier nicht hochladen willst.

Verstehe ich dich richtig:

Dein DHCP soll Adressen im Range 192.168.10.0/24 verteilen ?
Deine Clients bekommen aber eine IP aus dem Bereich 192.168.0.xyz ?

Auf welches VLAN ist der Port getagged an dem du die Clients anschliesst ?

Falls du WLAN nutzt:

Welches Native VLAN hast du auf dem Port hinterlegt an dem der AP angeschlossen ist ?

MFG
Wayne

Hi Wayne,

sorry das meine Antworten immer bisschen auf sich warten lassen.

Wo sehe ich denn, wieviele Instanzen laufen? Klingt ganz plausibel, dass da der Haken ist.

Der Port ist untagged im 10er VLAN. Der DHCP meldet sich aber immer über das Default VLAN, daher könnte das mit den Instanzen bzw. dem Relay gut sein. Hätte eigentlich gedacht, die Firewall regelt das eigenständig, wenn ich pro VLAN den DHCP aktiviere und eine Range festlege...

Wo müsste das Relay denn eingetragen werden?

Gruß
Ric


Moinsen.

Also ich hab bei mir auch ne Weile gebraucht um die Geschichte mit den VLANs zu verstehen.
Ich hab eine ähnliche Konstellation bei mir, nur halt mit nem HPE Switch und Mikrotik WLAN's.

Ich habe auch mehrere VLANs in der Sense angelegt.
VLAN 200 für DMZ, VLAN 50 für Gäste-WLAN.
Das normale LAN ist dann halt das VLAN 1 (am gewählten LAN Port der Sense).

Ich hab da keine Schwierigkeiten eine IP vom jeweiligen DHCP zu bekommen.
Hatte auch mal testweise einen Ubiquity Accesspoint dran. Das ging problemlos (hat aber halt keinen Switch eingebaut, deswegen dafür die Mikrotiks).

Das funzt auf jeden Fall. Nur was ich halt grad nicht beantworten kann, wie der Unify Switch eingestellt werden muß.

@ RicAtiC

Das befindet sich in der gleichen Rubrik  wie der DHCP, also unter Services. Ich vermute fast, dass es am Unifi liegt.

https://help.ubnt.com/hc/article_attachments/115026490327/mceclip0.png

Kannst du in den einzelnen Netzprofilen dort noch andere Einstellungen machen.
Was auf das Unifi hindeutet: Wenn wir davon ausgehen, dass deine DHCP-Geschichte tutti ist, dann müsste z.B. auf dem VLAN 10 Port der DHCP-Discover auch nur beim entsprechenden DHCP auf der OPN ankommen dürfen. Das du aber eine IP aus dem "falschen VLAN" bekommst zeigt, dass dort irgendwas nicht stimmt.

Schau mal ob du im  o.g.  Dialog irgendwas weiteres einstellen kannst. OPN-seitig hast du ja Tags gesetzt, oder ?

Also unter Interfaces / Other Types / VLAN ?

Und noch eine dumme Frage: Die Interfaces der einzelnen VLANs sind auch konfiguriert, oder ?

MFG
Wayne

Hi,

also nochmal von Anfang.

Konfigurationen die OPNSense-seitig passiert sind...

Zunächst habe ich meine VLANs unter "Schnittstellen" -> "Andere Typen" -> "VLAN" angelegt und zwar wie folgt:


Schnittstelle         Tag      PCP     Beschreibung
--------------       ----      ----  ---------------
re0               10 0 LAN
re0               20 0 DMZ
re0               30 5 VOICE
re0               40 1 GUEST
re0               50 0 MANGEMENT


anschließend habe ich die Zuweisungen vorgenommen:


Schnittstelle        Netzwerkport   
--------------        ----------------------------
DEFAULT             re0 (physikalischer Port)
DMZ                   VLAN 20 auf re0 (DMZ)
GUEST                VLAN 40 auf re0 (GUEST)
LAN                   VLAN 10 auf re0 (LAN)
MANAGEMENT       VLAN 50 auf re0 (MANAGEMENT)   
VOICE                VLAN 30 auf re0 (VOICE)
WAN                  re1 


Dann habe ich die DHCPs für die jeweiligen Netze angelegt unter "Dienste" -> "DHCPv4":

Für jedes VLAN ist eine eine DHCP-Range von 192.168.X.1 bis 192.168.X.99 angelegt. Die VLAN-Interfaces selbst haben statische IPs (192.168.X.100), passend zur VLAN ID.

Firewall regeln habe ich jetzt für meinen Feldversuch, das VLAN 10, auch angelegt. "Firewall" -> "Regeln" -> "LAN" = Any Any Allow, wobei wir ja schon auf einer wesentlich höheren Layer sind?! Ich will ja zunächst mal überhaupt eine IP in dem Segment.


Auf Ubiquiti-Seite sind folgende Konfigurationen passiert...

Unter "Settings" -> "Networks" habe ich analog zur OPNSense die VLANs angelegt (zunächst nur einmal drei!) und zwar wie folgt:

"Create new Network" -> "VLAN only" -> Name rein, unter VLAN die ID rein (bspw.  "LAN" und "10"), IGMP Snooping "an", DHCP Guarding "aus" (IGMP Snooping und DHCP Guarding habe ich bereits in jeglichen Kombinationen probiert, keine Veränderung!)

Die Profile (unter "Settings" -> "Profiles" -> "Switch Ports") zu den VLANs wurden alle automatisch angelegt! Hier ist das jeweilige VLAN unter "Native" (also untagged) eingetragen, unter "tagged" ist kein Haken für ein weiteres VLAN gesetzt.

Das "All"-Profil beinhaltet das DEFAULT VLAN als "Native" VLAN, alle anderen VLANs sind unter "tagged" angehakt. Das ist quasi mein "Trunk / Uplink" - Profil zur FW, welches auch auf dem Uplink (Port1) gesetzt ist.

Das "All" - Profil ist ebenfalls bereits vorkonfiguriert gewesen! Ich habe testweise auch schon einmal ein "Trunk"-Profil angelegt, kein Natives (untagged) VLAN gesetzt und bei "tagged" überall den Haken rein und dann beim "Uplink / Trunk" - Port hinterlegt, bringt auch nichts!!!

Danach unter "Devices" -> "Unifi Switch" -> das Profil "LAN" auf Port2 gesetzt.


Wenn ich jetzt den Laptop dranhänge, bekomme ich keine IP im VLAN 10 ("LAN"), welche aus der Range 192.168.10.X kommen müsste.


Die "Instanzen" von denen Du sprachst Wayne, sind wahrscheinlich die verschieden angelegten DHCPs für das jeweilige VLAN, oder? Hab ich ja. Ich dachte eher, Du meintest was in Richtung Prozesse. Pro DHCP ein Prozess.... Wird im Hintergrund ja auch so sein, deixelt die FW aber hoffentlich selbst.


Soweit bis hierhin, neue Ideen?

Fakt ist, eine IP gibt es nur aus dem VLAN1, also das Standard-VLAN, welches direkt auf Port "re0" der Firewall liegt.

Gruß
Ric

Hi,
du meintest ja, dass das UniFi keine CLI hat. Kannst du dennoch mal probieren, darauf zuzugreifen ? Ich kann mir das ehrlich gesagt nicht vorstellen. dort sehen wir dann, was das Switch wirklich macht. Nach dem was du geschildert hast, vermute ich den Fehler nicht in der FW-Config, sondern auf dem jeweiligen Port. Auch wenn ich nicht ganz verstehe, warum du in der FW eine Default-Schnittstelle angelegt hast... Default ist in der Regel immer untagged und hat die VLAN ID 1.
Dem Verhalten nach zu vermuten läßt dein Port den DHCP-Request ins VLAN 1 statt ins VLAN 10 raus. Ergo, beim DHCP im VLAN 10 kommt das garnicht an und er kann nichts verteilen.

Schau mal hier: https://jcutrer.com/howto/networking/ubnt/unifi-switch-cli-config-ssh

So kommst du auf die CLI des Unifi. Nach dem Login bitte ein "enable" absetzen, einloggen und dann im priviligeierten Modus einmal folgende Kommandos ausführen und hier rein pasten:

show running config interface 0/XY

show vlan brief

show interfaces status all | include 0/XY

show vlan port 0/XY


Das gleiche bitte noch für den Port, der als Uplink zur FW genutzt wird. Also dein trunk-port.
Denke so lässt sich das Ganze relativ schnell eingrenzen.

MFG
Wayne