Ubiquity - UniFi

UniFi - Ports

Erforderliche Port-Referenzen

Die folgenden Angaben listen die UDP- und TCP-Ports auf, die von UniFi verwendet werden. Diese Informationen sind vor allem für Nutzer relevant, die einen selbst gehosteten UniFi Network Server betreiben oder Geräte und Firewalls von Drittanbietern verwenden. Aus diesem Grund empfehlen wir in der Regel eine vollständige UniFi-Installation für eine nahtlose Bereitstellung und optimale native Kompatibilität.

Lokale Eingangsports (eingehend)

Protokoll Portnummer Verwendung
TCP/UDP 53 Wird für DNS verwendet. Erforderlich für die Umleitung des Gästeportals, das Herunterladen von Updates und den Fernzugriff.
UDP 3478 Wird für STUN verwendet.
UDP 5514
Wird für die Erfassung von Remote-Syslogs verwendet.
TCP 8080
Wird für die Kommunikation von Geräten und Anwendungen verwendet.
TCP 443
Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einer UniFi-Konsole laufen.
TCP 8443
Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einem Windows/macOS/Linux-System laufen.
TCP 8880
Wird für die HTTP-Umleitung des Portals verwendet.
TCP 8843
Wird für die HTTPS-Umleitung des Portals verwendet.
TCP 6789
Wird für den UniFi-Mobile-Speedtest verwendet.
TCP 27117
Wird für die lokale Datenbankkommunikation verwendet.
UDP 5656-5699
Wird für das Broadcasting von AP-EDU verwendet.
UDP 10001
Wird für die Geräteerkennung verwendet.
UDP 1900
Wird für die Option "Anwendung im L2-Netzwerk auffindbar machen" in den UniFi Network-Einstellungen verwendet.
UDP 123
Wird für NTP (Datum und Uhrzeit) verwendet. Erforderlich für die sichere Kommunikation mit Remote-Zugriffsservern.

Obwohl der TCP-Port 22 standardmäßig nicht von der UniFi Network Anwendung verwendet wird, ist es erwähnenswert, dass dieser Port genutzt wird, wenn über SSH auf UniFi-Geräte oder die Netzwerk-Anwendung zugegriffen wird.

Erforderliche Eingangsports für L3-Verwaltung über das Internet (eingehend)

Diese Ports müssen sowohl am Gateway/Firewall als auch auf der Maschine, auf der die UniFi Network-Anwendung läuft, geöffnet sein. Dies wird durch das Erstellen von Portweiterleitungen auf dem Gateway/der Firewall erreicht, auf dem die Anwendung ausgeführt wird.

Protokoll Portnummer Verwendung
UDP 3478 Wird für STUN verwendet.
TCP 8080 Wird für die Kommunikation von Geräten und Anwendungen verwendet.
TCP 443 Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einer UniFi-Konsole laufen.
TCP 8443 Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einem Windows/macOS/Linux-System laufen.
TCP 6789 Wird für den UniFi-Mobile-Speedtest verwendet.
TCP 8880 Wird für die HTTP-Umleitung des Portals verwendet (nur erforderlich bei der Nutzung eines Gäste-Hotspots).
TCP 8843 Wird für die HTTPS-Umleitung des Portals verwendet (nur erforderlich bei der Nutzung eines Gäste-Hotspots).

Erforderliche Ausgangsports für UniFi Remote-Zugriff (ausgehend)

In den meisten Fällen sind diese Ports standardmäßig offen und uneingeschränkt.

Protokoll Portnummer Verwendung
TCP/UDP 53 Wird für DNS verwendet. Erforderlich für die Umleitung des Gästeportals, das Herunterladen von Updates und den Fernzugriff.
UDP 3478 Wird für STUN verwendet.
TCP/UDP 443 Wird für den Remote-Zugriff verwendet.
TCP 8883 Wird für den Remote-Zugriff verwendet.
UDP 123 Wird für NTP (Datum und Uhrzeit) verwendet. Erforderlich für die sichere Kommunikation mit Remote-Zugriffsservern.

Ändern der Standardports

Das Ändern der Standardport-Zuweisungen ist nur auf selbst gehosteten UniFi Network Servern (Windows/macOS/Linux) möglich. Gehen Sie dazu wie folgt vor:

  1. Schließen Sie alle Instanzen der UniFi Network-Anwendung.
  2. Ändern Sie die Datei system.properties, die sich im Verzeichnis <unifi_base>/data/system.properties befindet.
    • Wenn z. B. der Port 8081 belegt ist und der Port 8089 frei ist, können Sie dies ändern, indem Sie unifi.shutdown.port=8081 in unifi.shutdown.port=8089 ändern.
  3. Starten Sie die UniFi Network-Anwendung neu.

Hinweis: Achten Sie darauf, dass keine führenden oder nachfolgenden Leerzeichen, Kommentare oder andere Zeichen (z. B. #) in den benutzerdefinierten Zeilen vorhanden sind. Andernfalls ignoriert die UniFi Network-Anwendung die Anpassungen.

 

 

Quelle: https://help.ui.com/hc/en-us/articles/218506997-Required-Ports-Reference

Unifi - Geräte Adopten

Wenn ein UniFi Controller verwendet wird, der mehrere Sites/Standorte/IP-Kreise hat, kann es sehr gut sein, das neue, nicht programmierte AP's nicht auf dem Controller erscheinen.
Warum das ganze so ist, kann mehrere Gründe haben, ein Grund wäre NAT, da bei NAT die MAC-Adressen nicht mitgegeben werden und somit die erkennung auf MAC-Adress Ebene nicht funktioniert.

Um dennoch einen AP auf den Controller zu fixen, muss sich dafür auf dem AP selber eingelogt werden.

Neues oder zurückgesetztes Gerät hinzufügen

Das ganze funktioniert nur, wenn das Gerät noch neu ist oder zurückgesetzt wurde.

Zurücksetzen tust du, indem du das Gerät an den Strom anschließt, wartest bis es hochgefahren ist und dann mit einer Büro klammer den Reset Knopf so lange drückst, bis er anfängt zu blinken oder sich die Status LED verändert.

Wenn du zuerst den Reset Knopf drückst und währenddessen Strom dazu gibst, setzt du das Gerät in den Recovery Mode, das benötigen wir aber nicht.

Diese Anleitung ist nur notwendig, wenn der UniFi-Controller in einem anderen Netzwerk und/oder an einem anderen Standort als das einzurichtende UniFi Gerät ist.
Andernfalls sollte der UniFi-Controller das Gerät nach dem Booten sehen und auch anbieten.

IP-Adresse finden

Zuerst musst du die IP-Adresse herausfinden, wenn der AP noch nicht konfiguriert ist, sucht er sich per DHCP im Unttaged LAN nach einer IP-Adresse.
Nutze einen IP-Scanner um die IP-Adresse des neuen AP’s zu finden.

Wenn du nun die IP-Adresse des AP’s kennst, kannst, bzw. musst du dich nun per SSH auf den AP rauf schalten.

Die Logindaten für die UniFi Geräte ist immer:
User: ubnt
Passwd: ubnt
also in einer CMD, Powershell oder Terminal einfach:
ssh ubnt@IP_Adresse_des_AP’s
eingeben.

1_.png

Nach dem du den SSH Befehl eingegeben hast, fragt er, ob er dem fingerprint vertrauen willst.
Da musst du “yes” eingeben, da du sonst keine Verbindung aufbauen kannst.

Danach fragt er nach dem passwd, das gibst du nun ein, beachte jedoch, das er nichts zeigt, wenn du tippst.
Also du gibst Buchstaben ein, aber nichts verändert sich, so wie du in dem Bild siehst, das ist völlig normal.

 

Sobald du drin bist, kannst du als hilfe “help” eingeben oder direkt den set-inform command.
Bei dem set-inform command musst du nun die IP-Addresse deines UniFi Controllers eingeben, in dem Beispiel wird die Addresse 172.19.0.154 verwendet, das musst du entsprechend anpassen.

set-inform http://172.19.0.154:8080/inform

Auch wenn du deinen Controller per https und Port 8443 öffnest, musst du hier http und den Port 8080 verwenden.

 

Danach sollte eine Ausgabe wie diese zu sehen sein:

2_.png

Auf der Webseite des UniFi-Controller kannst du nun den AP sehen und hinzufügen.
Achte darauf, das du auf der richtigen Site bist (in orange umkreist), der AP wird auf jeder Site angezeigt, falls nicht, aktualisiere das Browser Fenster.
Wenn du dann auf der richtigen Site bist, klicke auf die UniFi-Geräte (in rot umkreist) und klicke auf “Zum Verwenden klicken” um den AP in der Site hinzuzufügen.

3_.png

Nun braucht er je nach Modell 3-5 Minuten.
Je nachdem wie lange der schon am rumgammeln is, will der natürlich auch nen Update haben, das darfst du dann gerne auch noch hinterher jagen.

4_.png

Er zeigt dir auch immer so in etwa an, wie weit die AP’s sind.
Das sind aber nur geschätzte Werte, da UniFi hier einfach eine bestimmte Zeit wartet und während dessen den Blauen Balken zur beruhigung des Menschen anzeigt.

Wenn sie auf Aktuell stehen, haben sie alle nötigen Daten erhalten und sind nun aktiv im Einsatz.

 

 

 

 

UniFi‑Switch ohne SSH hinter NAT‑Firewall adoptieren per DHCP‑Option 43

Diese Anleitung beschreibt Schritt für Schritt, wie du einen UniFi-Switch (z. B. USW-Flex-Mini), der kein SSH bietet, mit einem Controller koppelst, der sich hinter einer NAT-Firewall befindet.
Der Trick: Wir geben dem Switch die Controller-IP direkt via DHCP Option 43.

Voraussetzungen

1 · Netzdesign / Topologie

# uplink-LAN (10.0.0.0/24)
Internet/Router ──> eth0 (10.0.0.2/24) [Debian]  \
                                                   \ NAT (Masquerade)
                            eth1 (172.0.0.1/24)    [Debian] ──> UniFi-Switch (DHCP, z. B. 172.0.0.10)

# Controller liegt im Uplink-LAN: 10.0.0.1

2 · Interface- und System-Basis

# /etc/network/interfaces – Ausschnitt
auto eth1
iface eth1 inet static
    address 172.0.0.1
    netmask 255.255.255.0
# IP-Forwarding permanent einschalten (als root)
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-nat.conf
sysctl -p /etc/sysctl.d/99-nat.conf
# Einfaches Masquerading für das Subnetz 172.0.0.0/24 (als root)
iptables -t nat -A POSTROUTING -s 172.0.0.0/24 -o eth0 -j MASQUERADE

# Regeln persistent speichern – z. B. via iptables-persistent / netfilter-persistent

2.3 · Forwarding erlauben (falls dein Host ein “Sicherheitsbunker” ist)

Einige Systeme haben die Standard-Policy der FORWARD-Chain auf DROP. Dann reicht Masquerading allein nicht: Pakete werden zwar NAT-ted, aber beim Forwarding verworfen.

Prüfen:

iptables -L FORWARD -n -v

Wenn dort oben policy DROP steht (und die Zähler hochlaufen), erlaube Forwarding für dein Switch-Netz:

# Forwarding von "Switch-Seite" (eth1) ins Uplink (eth0) erlauben
iptables -I FORWARD 1 -i eth1 -o eth0 -s 172.0.0.0/24 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

# Rückverkehr (Replies) wieder zurück zur Switch-Seite erlauben
iptables -I FORWARD 2 -i eth0 -o eth1 -d 172.0.0.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Hinweis: Wenn deine Interface-Namen anders heißen (z. B. enp0s31f6 statt eth1 oder wlp0s20f3 statt eth0), ersetze sie entsprechend.

Danach ggf. Regeln persistent speichern, sonst sind sie nach dem Reboot weg.

3 · ISC-DHCP-Server installieren & konfigurieren

# als root
apt-get update
apt-get install isc-dhcp-server

3.1 Server-Interface festlegen

# /etc/default/isc-dhcp-server
INTERFACESv4="eth1"

3.2 /etc/dhcp/dhcpd.conf

subnet 172.0.0.0 netmask 255.255.255.0 {
  range 172.0.0.10 172.0.0.50;
  option routers 172.0.0.1;
  option broadcast-address 172.0.0.255;

  # *** UniFi-Magie: DHCP Option 43 ***
  # 01  -> Sub-Option 1  (Controller-IP)
  # 04  -> Länge in Bytes (4)
  # 0a 00 00 01 -> 10.0.0.1 in Hex
  option vendor-encapsulated-options 01:04:0a:00:00:01;

  # DNS für Clients (hier Cloudflare)
  option domain-name-servers 1.1.1.1, 1.0.0.1;
}
IP → Hex-Konvertierung

Jedes Oktett der Controller-IP in Hex schreiben:

01:04:0a:00:00:01
systemctl enable --now isc-dhcp-server
systemctl status isc-dhcp-server

4 · Firewall / Ports

Port Protokoll Zweck
8080 TCP Inform & Adoption
3478 UDP STUN
10001 UDP Discovery (alt)
8443 TCP Controller-GUI/API

Achte darauf, dass diese Ports von 172.0.0.0/24 über NAT zu 10.0.0.1 passieren dürfen.

5 · Switch anschließen & adoptieren

  1. Switch auf Werkseinstellungen zurücksetzen (Reset-Taster > 5 s).
  2. An eth1 des Debian-Hosts stecken.
  3. Mit tcpdump überprüfen, dass Option 43 im DHCPACK auftaucht:
    tcpdump -ni eth1 port 67 or port 68 | grep -i "Vendor specific"
  4. Controller-UI öffnen https://10.0.0.1:8443 ➜ Devices » Pending Adoption.
    Gerät erscheint? → Adopt.

Debugging-Checks

# Kommt der Switch raus?
ping -c3 10.0.0.1

# Siehst du Inform-Traffic?
tcpdump -ni eth1 host 10.0.0.1 and port 8080

# Controller-Logs (Pfad je nach Installation/Container ggf. anders)
tail -f /usr/lib/unifi/logs/server.log
Gerät taucht nicht auf?

Anhang A · IP-Adresse in Hexadezimal umrechnen – Schritt für Schritt

Warum überhaupt Hex?
DHCP-Option 43 braucht die Controller-IP als rohe Bytefolge. Bytes schreibt man in der Netzwerktechnik üblich in Hexadezimal (“Hex”). Ein Byte kann Werte von 00 bis ff (= 0 – 255 dezimal) annehmen.

1 · Vier Oktette der IP aufschreiben

Beispiel-IP unseres Controllers:

10 . 0 . 0 . 1

2 · Jedes Oktett einzeln nach Hex konvertieren

Dezimal Rechenweg Hexadezimal
10 10 / 16 = 0 Rest 10 → 0 = 0, 10 = a 0a
0 0 = 0 → 00 00
0 0 = 0 → 00 00
1 1 / 16 = 0 Rest 1 → 01 01

Merksatz: Wenn das Ergebnis nur ein Hex-Zeichen hat (z. B. a), wird immer eine führende Null ergänzt → 0a. So entstehen exakt vier Byte.

3 · Bytes zusammenfügen

0a 00 00 01

4 · In DHCP-Option 43 einbauen

Die Struktur lautet: 01 : 04 : <IP-Hex-Byte1> : <IP-Hex-Byte2> : <IP-Hex-Byte3> : <IP-Hex-Byte4>

option vendor-encapsulated-options 01:04:0a:00:00:01;

Schnell-Check mit Python

Für größere Netze lohnt es sich, nicht zu rechnen, sondern einen Einzeiler zu nutzen:

python3 -c 'import sys,ipaddress; \
print(":".join(f"{b:02x}" for b in ipaddress.IPv4Address(sys.argv[1]).packed))' \
10.0.0.1

Ausgabe: 0a:00:00:01 – genau wie von Hand.

Spickzettel 0 – 255 → Hex

Dez Hex Dez Hex Dez Hex Dez Hex
0 00 16 10 128 80 240 f0
1 01 32 20 144 90 241 f1
2 02 64 40 160 a0 250 fa
3 03 100 64 176 b0 255 ff

Damit können auch Azubis ohne Vorwissen eine IP schnell in Hex umbrechen und die Option 43 korrekt setzen.

UniFi AP - zweiten SSH User hinterlegen

UniFi AP: Lokalen SSH-User rebootfest hinterlegen

Diese Anleitung legt auf einem UniFi AP einen lokalen SSH-User direkt in der Geräte-Konfiguration an. Der User überlebt einen Reboot, kann aber bei erneuter Controller-Provisionierung wieder überschrieben werden.

Achtung: Ein User mit UID 0 ist root-equivalent. Nur auf eigenen Geräten nutzen und SSH nicht offen ins Internet hängen.

1. Passwort-Hash erzeugen

Auf einem Linux-System mit OpenSSL einen MD5-crypt-Hash erzeugen:

openssl passwd -1

Passwort eingeben und den ausgegebenen Hash kopieren. Beispiel:

$1$abc12345$abcdefghijklmnopqrstuv

2. Per SSH auf den UniFi AP verbinden

ssh <admin-user>@<ap-ip>

Beispiel:

ssh ubntadmin@192.168.1.20

3. Aktuelle Config aus dem Flash lesen

cfgmtd -f /tmp/system.cfg -r

Wichtig: Dieser Schritt liest die gespeicherte Konfiguration aus dem Flash nach /tmp/system.cfg. Nicht nach dem Bearbeiten ausführen, sonst überschreibt man die eigenen Änderungen wieder. Weil Firmware offenbar gern kleine Fallen stellt.

4. Config bearbeiten

vi /tmp/system.cfg

Einen freien User-Slot suchen oder ergänzen, zum Beispiel users.2:

users.2.name=<ssh-user>
users.2.password=<openssl-passwd-hash>
users.2.shell=/bin/ash
users.2.status=enabled
users.status=enabled

Beispiel:

users.2.name=localadmin
users.2.password=$1$abc12345$abcdefghijklmnopqrstuv
users.2.shell=/bin/ash
users.2.status=enabled
users.status=enabled

Falls die Firmware UID/GID-Felder akzeptiert, können diese zusätzlich gesetzt werden:

users.2.uid=0
users.2.gid=0

Wichtig: users.2.shell=/bin/false verhindert einen brauchbaren SSH-Login. Für SSH muss dort z. B. /bin/ash stehen.

5. Config dauerhaft in den Flash schreiben

cfgmtd -f /tmp/system.cfg -w

Danach den AP neu starten:

reboot

6. Login testen

ssh <ssh-user>@<ap-ip>
id

Wenn der User root-equivalent ist, sollte id ungefähr so aussehen:

uid=0(...) gid=0(root)

Kurzablauf

openssl passwd -1

ssh <admin-user>@<ap-ip>

cfgmtd -f /tmp/system.cfg -r
vi /tmp/system.cfg
cfgmtd -f /tmp/system.cfg -w
reboot

Hinweise

USW-Pro Switch - SSH Observation

USW-Pro Switch - SSH Observation

Commands

cli

cli öffnet die eigentliche Switch-CLI, also die FastPath-/Switching-Ebene.

Dort arbeitest du mit Dingen wie:

show vlan
show running-config
configure
interface 0/1
switchport mode access
vlan database
write memory

Das ist die Cisco-ähnliche Oberfläche für:

Das Problem: Diese CLI verwaltet hauptsächlich den laufenden FastPath-Zustand. write memory meldet zwar Erfolg, aber die UniFi-Firmware baut FastPath beim Start wieder aus /tmp/system.cfg beziehungsweise der von ubntconf erzeugten Startup-Konfiguration auf. Deshalb verschwinden die Änderungen nach einem Reboot.




mca-cli-op

mca-cli-op gehört zur UniFi-Management-Ebene.

Auf deinem Switch ist es nur ein Symlink:

/usr/bin/mca-cli-op -> mcad

Es startet also das Programm mcad in einem speziellen Betriebsmodus.

mcad kümmert sich um Dinge wie:

Mit Argumenten wird es normalerweise als interner Einzelbefehl verwendet, zum Beispiel:

mca-cli-op inform
mca-cli-op set-inform http://controller:8080/inform
mca-cli-op set-default

Der Firmware-Wrapper ruft solche Befehle selbst auf. set-inform wird beispielsweise direkt an mca-cli-op weitergereicht, während set-default einen Werksreset einleitet.

Ohne Argument:

mca-cli-op

öffnet es die interaktive Management-CLI:

UniFi#

Das ist keine Linux-Shell und auch nicht dieselbe CLI wie cli. Deshalb kennt sie kein echo, awk, find oder Shell-Pipes.

Vereinfacht dargestellt

SSH-Shell
│
├── cli
│   └── FastPath-Switch-CLI
│       ├── VLANs
│       ├── Ports
│       ├── Trunks
│       └── running-config
│
└── mca-cli-op / mcad
    └── UniFi-Management-Stack
        ├── Adoption
        ├── Provisionierung
        ├── Controller/Inform
        ├── mgmt-Konfiguration
        └── Default-/Setup-Status




swctrl

swctrl ist eine interne UniFi-Switch-Control-Utility. Auf dem getesteten USW-Pro-48-US.7.5.6 meldet sie sich als Version 0.9. Sie liest hardwarenahe Switch-Zustände aus und enthält außerdem einige direkt verändernde Funktionen.

Sie ist weder die Cisco-ähnliche cli noch die UniFi-Management-CLI mca-cli-op. swctrl arbeitet näher an der laufenden Switch- und Hardware-Ebene. Änderungen sind deshalb nicht automatisch eine dauerhaft vom Controller verwaltete Konfiguration.

Aufruf und Optionen

swctrl FUNCTION
swctrl [OPTIONS]

Auf diesem Firmware-Build werden folgende globale Optionen angezeigt:

Die Unterbefehle sind nicht vollständig in der allgemeinen Hilfe aufgeführt. Bei vielen Funktionsgruppen zeigt ein Aufruf ohne weiteren Unterbefehl die jeweilige Syntax:

swctrl
swctrl -h
swctrl mac
swctrl mac block

Funktionsgruppen

Die Hilfe von Firmware 7.5.6 nennt diese Funktionsgruppen:

Wichtig: Eine aufgelistete Funktionsgruppe bedeutet nicht automatisch, dass die Hardware sie unterstützt oder dass jeder Unterbefehl auf jedem Switch identisch ist. swctrl ist stark firmware- und modellabhängig.

Typische lesende Diagnosebefehle

swctrl env show
swctrl poe show
swctrl sfp show
swctrl port show
swctrl port show counters
swctrl mac show

port show, port show counters und mac show eignen sich besonders für Live-Diagnose, weil sie den aktuellen Zustand anzeigen und selbst keine Konfiguration ändern.

Hinweis zu poe

Der getestete USW-Pro-48 ist die Variante ohne PoE. Trotzdem kann swctrl poe show vorhanden sein, weil dieselbe Utility auf mehreren Switch-Modellen verwendet wird.

Eine leere Tabelle oder ein offensichtlich unsinniger Wert wie Total Power Limit(mW): -1091736708 ist kein gültiger Leistungswert und kein verlässlicher Modelltest. Solche Ausgaben müssen als nicht unterstützte, fehlerhafte oder nicht initialisierte PoE-Abfrage behandelt werden.

mac

swctrl mac bündelt die MAC-/Client-Funktionen der laufenden Switch-Ebene. Auf Firmware 7.5.6 zeigt die Hilfe folgende Bereiche:

swctrl mac show [ id PORT_ID ]
swctrl mac block
swctrl mac white

PORT_ID darf einzelne Ports, Bereiche und kombinierte Listen enthalten:

3
5-7
1,4,9-12

mac show

swctrl mac show zeigt die vom Switch erfassten MAC-/Client-Einträge über alle Ports. Mit id lässt sich die Ausgabe auf bestimmte Ports begrenzen:

swctrl mac show
swctrl mac show id 52
swctrl mac show id 5-7
swctrl mac show id 1,4,9-12

Die Ausgabe enthält auf diesem Build folgende Spalten:

Da die Ausgabe zusätzlich IP-Adresse, Hostname und WLAN-Metadaten enthalten kann, ist sie mehr als eine rohe Hardware-FDB. Fehlende IP- oder Hostname-Werte bedeuten nicht, dass die MAC-Adresse ungültig ist; die Zusatzinformationen sind schlicht nicht bekannt.

Mehrere MAC-Adressen auf demselben Port sind bei einem Uplink, einem nachgeschalteten Switch, einem Access Point, einer Bridge oder einem virtualisierten Host normal. Beim USW-Pro-48 sind neben 48 RJ45-Ports vier SFP+-Ports vorhanden. Ein Eintrag auf Port 52 passt daher zum letzten SFP+-Port; die konkrete Portzuordnung sollte trotzdem mit swctrl port show geprüft werden.

mac block

mac block verwaltet auf diesem Firmware-Build eine interne Blockliste. Die knappe Unterhilfe zeigt nur show an, tatsächlich wurden aber auch add und remove erfolgreich vom Parser akzeptiert.

swctrl mac block show
swctrl mac block add 00:87:31:73:1e:e0
swctrl mac block show
swctrl mac block remove 00:87:31:73:1e:e0
swctrl mac block show

Folgende Varianten sind auf dem getesteten Build nicht gültig:

swctrl mac block 00:87:31:73:1e:e0
swctrl mac block del 00:87:31:73:1e:e0
swctrl mac block delete 00:87:31:73:1e:e0
swctrl mac block drop 00:87:31:73:1e:e0

Ein Aufruf wie swctrl mac block add ohne MAC-Adresse kann ohne verständliche Fehlermeldung zurückkehren. Das darf nicht als Erfolg gewertet werden. Nach jeder Änderung sollte die Blockliste erneut mit swctrl mac block show geprüft werden.

Der Eintrag in der Blockliste beweist zunächst nur, dass die MAC-Adresse in der laufenden internen Liste steht. Für eine saubere Prüfung der tatsächlichen Sperrwirkung muss der Datenverkehr des betroffenen Clients getestet werden. Ebenso sollte nach einem Reboot und nach einer Controller-Provisionierung geprüft werden, ob der Eintrag erhalten bleibt.

mac white

swctrl mac white wird von der Hilfe als weitere MAC-Funktionsgruppe genannt. Im vorliegenden Test wurde sie jedoch nicht weiter aufgerufen. Deshalb lässt sich aus den vorhandenen Daten weder die genaue Syntax noch sicher ableiten, ob sie als Whitelist, Ausnahme zur Blockliste oder für einen anderen internen Zweck verwendet wird.

Für eine belastbare Dokumentation sollte zuerst nur die Hilfe abgefragt werden:

swctrl mac white

Sicherheit und Persistenz

Eine MAC-Sperre ist keine starke Zugangskontrolle. MAC-Adressen können nachgeahmt werden. Für dauerhafte Sicherheitsregeln sind controllerverwaltete Switch-ACLs, Port-Isolation oder 802.1X geeigneter als eine manuell gesetzte Laufzeitliste.

Direkte Änderungen über swctrl sollten grundsätzlich als firmwareabhängige Laufzeitoperationen behandelt werden. Sie können nach Reboot, Firmware-Update oder erneuter Provisionierung verschwinden oder überschrieben werden.

Kurzfassung

swctrl -h

# Live-Diagnose
swctrl env show
swctrl port show
swctrl port show counters
swctrl sfp show
swctrl mac show
swctrl mac show id 52

# Laufende MAC-Blockliste
swctrl mac block show
swctrl mac block add 00:87:31:73:1e:e0
swctrl mac block remove 00:87:31:73:1e:e0

Damit ist swctrl vor allem ein Werkzeug für hardwarenahe Live-Diagnose. Einige Funktionsgruppen verändern auch den laufenden Zustand, sind aber nicht mit einer dauerhaft vom UniFi-Controller verwalteten Konfiguration gleichzusetzen.

USW-Pro Switch - SSH Observation

VLANs auf Ubiquiti-Switches per SSH konfigurieren

BookStack-Anleitung · Version 1.0 · Stand: 30. Juli 2026 · Zielgruppe: Administratoren und Homelab-Betreiber

Geltungsbereich
Diese Anleitung gilt für Ubiquiti-Switches, die über SSH eine Cisco-artige FastPath-/EdgeSwitch-CLI mit Befehlen wie vlan database, configure, switchport mode access und switchport mode trunk bereitstellen. Sie ist keine Behauptung, dass jeder UniFi-Switch, jede Firmware oder jede Produktfamilie dieselben Befehle unterstützt. Vor Änderungen wird die verfügbare CLI-Hilfe geprüft.

Wichtiger Hinweis zu UniFi Network
Bei einem durch UniFi Network verwalteten Switch können manuelle SSH-Änderungen bei der nächsten Provisionierung überschrieben werden. Für dauerhaft unterstützte Konfigurationen ist dort der Port Manager beziehungsweise ein Ethernet-Portprofil der vorgesehene Weg. Die SSH-CLI eignet sich vor allem zur Diagnose, für Laborumgebungen und für Geräte, deren lokale CLI und Speichermethode ausdrücklich geprüft wurden.

Inhalt

1. Grundlagen

Ein VLAN trennt ein physisches Ethernet-Netz logisch in mehrere Layer-2-Netze. Geräte in unterschiedlichen VLANs teilen sich zwar möglicherweise denselben Switch, befinden sich aber in getrennten Broadcast-Domänen. Kommunikation zwischen VLANs benötigt einen Router, eine Firewall oder einen Layer-3-Switch mit passenden Regeln.

Begriff

Bedeutung

VLAN-ID / VID

Numerische Kennung eines VLANs. Bei der hier beschriebenen CLI liegt der nutzbare Bereich typischerweise bei 1 bis 4093; VLAN 1 ist meist das Default-VLAN.

Untagged / unmarkiert

Ein Ethernet-Frame verlässt den Port ohne 802.1Q-VLAN-Tag. Normale Endgeräte erwarten üblicherweise ungetaggte Frames.

Tagged / markiert

Der Frame trägt ein 802.1Q-Tag mit VLAN-ID. Das Gegenüber muss VLAN-Tags verstehen.

Access-Port

Transportiert genau ein VLAN ungetaggt. Geeignet für PCs, Drucker, Kameras und andere nicht VLAN-fähige Endgeräte.

Trunk-Port

Transportiert mehrere VLANs. Ein VLAN kann als Native VLAN ungetaggt übertragen werden; weitere VLANs werden getaggt.

Native VLAN / PVID

VLAN, dem ungetaggte eingehende Frames zugeordnet werden. Auf einem Trunk ist es üblicherweise zugleich das ungetaggt ausgehende VLAN.

Allowed VLANs

Liste der VLANs, die über einen Trunk transportiert werden dürfen.

Merksatz
Access bedeutet: ein VLAN, ungetaggt. Trunk bedeutet: mehrere VLANs, normalerweise ein Native VLAN ungetaggt und weitere VLANs getaggt.

2. VLAN-Planung

Vor der ersten Eingabe wird eine Port- und VLAN-Tabelle erstellt. Das Beispiel ist absichtlich generisch:

VLAN-ID

Name

Beispielzweck

Gateway/DHCP

10

Management

Switches, Access Points, Verwaltungszugänge

Auf Router/Firewall konfigurieren

110

Clients

Arbeitsplätze und normale Endgeräte

Auf Router/Firewall konfigurieren

120

Voice

VoIP-Telefone

Auf Router/Firewall konfigurieren

130

Guest

Gäste oder isolierte Geräte

Auf Router/Firewall konfigurieren

Beispielhafter Portplan:

Port

Rolle

Native/Untagged

Tagged

0/5

Access-Port für Client

VLAN 110

keine

0/12

Access-Port für Telefon oder Endgerät

VLAN 120

keine

0/24

Access Point

VLAN 10

VLAN 110 und 130

0/48

Uplink zu Router oder weiterem Switch

VLAN 10

VLAN 110, 120 und 130

Der Switch ersetzt keinen Router
Das Anlegen eines VLANs auf dem Switch erzeugt weder ein IP-Subnetz noch DHCP noch Firewallregeln. Router oder Firewall müssen für jedes benötigte VLAN eine passende Schnittstelle beziehungsweise Subinterface besitzen.

3. Vorbereitung und Sicherung

3.1 Notfallzugang vorbereiten

3.2 Ist-Zustand dokumentieren

Vor Änderungen diese Befehle ausführen und die Ausgabe lokal speichern:

show version
show network
show vlan brief
show interfaces status all
show running-config

Nicht jedes Modell unterstützt jede Anzeige. Ein unbekannter show-Befehl ist kein Anlass, kreativ schreibende Befehle auszuprobieren; stattdessen mit show ? die lokale Hilfe verwenden.

4. SSH und CLI öffnen

4.1 SSH-Verbindung herstellen

ssh <benutzer>@<switch-ip>

4.2 Lokale Switch-CLI öffnen

Auf vielen UniFi-USW-Firmwares landet man zunächst in einer Linux-Shell:

cli
enable

Auf EdgeSwitch-Systemen kann SSH bereits direkt die Switch-CLI öffnen. Dann ist cli nicht erforderlich.

4.3 Syntax vorab prüfen

?
vlan database ?
configure
interface ?
exit

Abbruchkriterium
Fehlen vlan database, switchport mode access oder switchport mode trunk in der lokalen Hilfe, darf diese Befehlsfolge nicht blind auf das Gerät übertragen werden. Ubiquiti verwendet je nach Produktfamilie unterschiedliche CLIs.

5. Mehrere VLANs erstellen

5.1 VLAN-Datenbank öffnen

vlan database

5.2 VLANs einzeln anlegen und benennen

vlan 10
vlan name 10 Management

vlan 110
vlan name 110 Clients

vlan 120
vlan name 120 Voice

vlan 130
vlan name 130 Guest

exit

Einzelne Befehle sind meist kompatibler als eine zusammengefasste VLAN-Liste. Unterstützt die lokale Hilfe Listen, kann alternativ beispielsweise vlan 10,110,120,130 verwendet werden. Namen werden anschließend separat gesetzt.

5.3 VLANs kontrollieren

show vlan brief

Alle angelegten VLAN-IDs sollten als statische VLANs erscheinen.

6. Access-Port konfigurieren

Ein Access-Port ist für ein normales Endgerät gedacht. Eingehende ungetaggte Frames werden dem konfigurierten VLAN zugeordnet; ausgehende Frames verlassen den Port ungetaggt.

6.1 Einzelnen Port auf Access VLAN 110 setzen

configure
interface 0/5
switchport mode access
switchport access vlan 110
exit
exit

6.2 Optional eine Beschreibung setzen

Wenn die lokale CLI den Befehl anbietet:

configure
interface 0/5
description Client-Arbeitsplatz
exit
exit

6.3 Mehrere Access-Ports

Die sicherste universelle Methode ist, die Portkonfiguration pro Interface zu wiederholen. Manche Firmwarestände unterstützen Interface-Bereiche, deren Syntax jedoch abweicht. Vor Verwendung eines Bereichs immer interface ? prüfen.

configure

interface 0/5
switchport mode access
switchport access vlan 110
exit

interface 0/6
switchport mode access
switchport access vlan 110
exit

interface 0/7
switchport mode access
switchport access vlan 110
exit

exit

Endgerätetest
Ein nicht VLAN-fähiger Client an diesem Port sollte ohne eigene VLAN-Konfiguration eine Adresse aus dem Netz von VLAN 110 erhalten. Bekommt er keine Adresse, fehlen meist DHCP, Gateway-Konfiguration oder ein VLAN auf einem vorgelagerten Trunk.

7. Trunk-Port konfigurieren

Ein Trunk verbindet VLAN-fähige Geräte, zum Beispiel einen Router, einen weiteren Managed Switch, einen Hypervisor oder einen Access Point. Beide Seiten des Links müssen dieselbe VLAN-Logik verwenden.

7.1 Trunk mit Native VLAN und mehreren erlaubten VLANs

configure
interface 0/48
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120,130
exit
exit

In diesem Beispiel läuft VLAN 10 als Native VLAN ungetaggt. VLAN 110, 120 und 130 werden getaggt übertragen. Einige Implementierungen zeigen das Native VLAN zusätzlich in der Allowed-Liste, andere behandeln es getrennt. Entscheidend ist die Ausgabe der lokalen Prüfkommandos und eine identische Konfiguration am Gegenport.

7.2 VLAN zu einem bestehenden Trunk hinzufügen

configure
interface 0/48
switchport trunk allowed vlan add 140
exit
exit

7.3 VLAN von einem Trunk entfernen

configure
interface 0/48
switchport trunk allowed vlan remove 140
exit
exit

7.4 Allowed-Liste vollständig ersetzen

configure
interface 0/48
switchport trunk allowed vlan 10,110,120,130
exit
exit

add und vollständige Liste nicht verwechseln
switchport trunk allowed vlan add ... ergänzt die vorhandene Liste. Der Befehl ohne add kann die bisherige Liste ersetzen. Vorher show interfaces switchport trunk <port> prüfen, sonst verschwinden VLANs mit beeindruckender Effizienz.

8. Typische Anschlussszenarien

8.1 Arbeitsplatz, Drucker, Kamera oder Server

Das Endgerät versteht keine VLAN-Tags und gehört genau einem VLAN:

configure
interface 0/5
switchport mode access
switchport access vlan 110
exit
exit

8.2 Access Point mit Management- und SSID-VLANs

Das Management des Access Points läuft ungetaggt in VLAN 10. Zwei SSIDs verwenden VLAN 110 und VLAN 130 getaggt:

configure
interface 0/24
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,130
exit
exit

Access-Point-Falle
Das VLAN einer getaggten SSID sollte am direkten AP-Uplink nicht gleichzeitig als Native VLAN konfiguriert werden. Außerdem muss jedes SSID-VLAN auf allen Trunks zwischen AP und Gateway erlaubt sein.

configure
interface 0/48
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120,130
exit
exit

Auf dem Router beziehungsweise der Firewall werden dazu passende VLAN-Interfaces benötigt, beispielsweise:

VLAN

Routerfunktion

10

Management-Gateway und optional DHCP

110

Client-Gateway, DHCP und Firewallregeln

120

Voice-Gateway, DHCP-Optionen und QoS nach Bedarf

130

Gast-Gateway, DHCP und restriktive Firewallregeln

Beide Enden müssen dieselbe Native-VLAN- und Allowed-VLAN-Konfiguration besitzen:

configure
interface 0/48
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120,130
exit
exit

Native-VLAN-Mismatch
Wenn eine Seite VLAN 10 ungetaggt erwartet und die andere Seite ungetaggte Frames einem anderen VLAN zuordnet, entstehen schwer erkennbare Verbindungs- und Sicherheitsprobleme. Native VLANs müssen an beiden Enden übereinstimmen.

8.5 Hypervisor oder VLAN-fähiger Server

Ein Hypervisor kann mehrere virtuelle Netze über einen Trunk empfangen. Das Management-VLAN kann nativ oder ebenfalls getaggt sein, abhängig von der Serverkonfiguration. Die Switch- und Hostkonfiguration müssen exakt zusammenpassen.

configure
interface 0/20
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120,130
exit
exit

9. Konfiguration prüfen

9.1 VLAN-Inventar

show vlan brief

9.2 Access-Port prüfen

show interfaces switchport access 0/5
show vlan port 0/5
show running-config interface 0/5

9.3 Trunk-Port prüfen

show interfaces switchport trunk 0/48
show vlan port 0/48
show running-config interface 0/48

9.4 Linkstatus kontrollieren

show interfaces status all

9.5 Praktische Funktionstests

  1. Endgerät am Access-Port anschließen.
  2. Prüfen, ob es eine IP-Adresse aus dem vorgesehenen VLAN erhält.
  3. Gateway des VLANs anpingen.
  4. DNS und erforderliche Dienste testen.
  5. Bei Trunks jedes VLAN einzeln über ein geeignetes Testgerät oder eine VLAN-fähige Schnittstelle prüfen.
  6. Firewallregeln zwischen VLANs testen, nicht nur die reine Erreichbarkeit.

Erfolgskriterien
Der Access-Client erhält das richtige Subnetz, der Trunk transportiert nur die vorgesehenen VLANs, das Management bleibt erreichbar und unerwünschte Inter-VLAN-Kommunikation wird durch Router oder Firewall blockiert.

10. Änderungen speichern

10.1 EdgeSwitch-/UISP-CLI

Wenn die lokale Hilfe den Befehl ausweist, kann die Running-Config in den Startup-Speicher geschrieben werden:

write memory

Alternativ auf entsprechenden EdgeSwitch-Systemen:

copy system:running-config nvram:startup-config

10.2 UniFi-USW-Geräte

Keine universelle SSH-Persistenz
Bei UniFi-USW-Modellen ist die lokale FastPath-Konfiguration je nach Firmware möglicherweise nur laufzeitwirksam, wird bei einem Neustart verworfen oder durch UniFi Network überschrieben. Ein hersteller- und firmwareübergreifend sicherer SSH-Befehl zum dauerhaften Speichern existiert für diese Produktgruppe nicht.

Darum gilt:

11. Rückbau und Notfallplan

11.1 Access-Port zurück auf VLAN 1

configure
interface 0/5
switchport mode access
switchport access vlan 1
exit
exit

11.2 Tagged VLAN aus einem Trunk entfernen

configure
interface 0/48
switchport trunk allowed vlan remove 130
exit
exit

11.3 Trunk-Liste auf einen bekannten Stand setzen

configure
interface 0/48
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120
exit
exit

11.4 Management verloren

  1. Lokalen Konsolen- oder Ersatzport verwenden.
  2. Portplan und zuletzt geänderten Uplink kontrollieren.
  3. Native VLAN beider Linkseiten vergleichen.
  4. Prüfen, ob das Management-VLAN auf jedem vorgelagerten Trunk erlaubt ist.
  5. Switch-IP, Gateway und DHCP beziehungsweise statische IP-Konfiguration kontrollieren.
  6. Erst als letzte Maßnahme einen Factory Reset erwägen.

12. Häufige Fehler

Symptom

Wahrscheinliche Ursache

Prüfung

Access-Client erhält keine IP-Adresse

VLAN fehlt auf Uplink, DHCP fehlt oder Access-VLAN ist falsch

show vlan brief

, Access-Port und alle Trunks bis zum Gateway prüfen

Ein VLAN funktioniert, andere nicht

Allowed-VLAN-Liste auf einem Trunk ist unvollständig

Jeden Port entlang des Pfades prüfen

Switch nach Änderung nicht mehr erreichbar

Management-VLAN oder Native VLAN falsch, Gateway/IP nicht passend

Konsole oder unveränderten Port verwenden

AP ist erreichbar, WLAN-Clients bekommen keine Adresse

SSID-VLAN nicht getaggt erlaubt oder fälschlich als Native VLAN gesetzt

AP-Uplink und alle vorgelagerten Trunks prüfen

Änderungen verschwinden nach Neustart

Running-Config nicht gespeichert oder UniFi hat neu provisioniert

Startup-/Persistenzmethode des konkreten Modells prüfen

Unerwartete Kommunikation zwischen VLANs

Router-/Firewallregeln erlauben Inter-VLAN-Verkehr

Routing- und Firewallregeln prüfen; VLAN allein ist keine Firewall

Nur ungetaggter Verkehr funktioniert

Gegenstelle ist nicht VLAN-fähig oder Tags stimmen nicht überein

VLAN-Konfiguration auf beiden Linkseiten vergleichen

Broadcast-Sturm oder instabiles Netz

Switching-Schleife oder falscher redundanter Link

STP/RSTP aktiv lassen und Topologie kontrollieren

13. Entsprechung in UniFi Network

In aktuellen UniFi-Network-Oberflächen wird dieselbe Logik mit den Begriffen Native VLAN / Network und Tagged VLAN Management abgebildet:

SSH-/Switchbegriff

UniFi-Network-Einstellung

Access-Port, VLAN 110

Native VLAN / Network: VLAN 110; Tagged VLAN Management: Block All

Trunk mit allen VLANs

Native VLAN auswählen; Tagged VLAN Management: Allow All

Trunk mit ausgewählten VLANs

Native VLAN auswählen; Tagged VLAN Management: Custom und gewünschte VLANs freigeben

switchport trunk native vlan 10

Native VLAN / Network: VLAN 10

switchport trunk allowed vlan ...

Tagged VLAN Management: Custom

14. Kurzreferenz

VLANs anlegen

vlan database
vlan 110
vlan name 110 Clients
vlan 130
vlan name 130 Guest
exit

Access-Port

configure
interface 0/5
switchport mode access
switchport access vlan 110
exit
exit

Trunk-Port

configure
interface 0/48
switchport mode trunk
switchport trunk native vlan 10
switchport trunk allowed vlan 10,110,120,130
exit
exit

VLAN ergänzen oder entfernen

configure
interface 0/48
switchport trunk allowed vlan add 140
switchport trunk allowed vlan remove 130
exit
exit

Prüfen

show vlan brief
show interfaces switchport access 0/5
show interfaces switchport trunk 0/48
show vlan port all
show running-config

Speichern, nur wenn unterstützt

write memory

15. Quellen und weiterführende Dokumentation


Diese Anleitung beschreibt allgemeine Netzwerkkonzepte und eine CLI-Familie. Vor produktiven Änderungen immer Modell, Firmware, lokale CLI-Hilfe, Sicherungsweg und Wiederherstellungsplan prüfen.

USW-Pro Switch - SSH Observation

SSH - poe show

USW-Pro-48-PoE-US.7.4.1# swctrl poe show
Total Power Limit(mW): -1092015236

Port  OpMode      HpMode    PwrLimit   Class   PoEPwr  PwrGood  Power(W)  Voltage(V)  Current(mA)
                              (mW)                                                               
----  ------  ------------  --------  -------  ------  -------  --------  ----------  -----------
   1    Auto        Dot3at        -1  Class 0      On     Good      8.20       53.25       154.00
   2    Auto        Dot3at        -1  Class 0      On     Good      4.00       52.63        76.00
   3    Auto        Dot3at        -1  Class 0      On     Good      6.10       53.98       113.00
   4    Auto        Dot3at        -1  Class 0      On     Good      3.90       53.42        73.00
   5    Auto        Dot3at        -1  Class 4      On     Good      4.90       53.85        91.00
   6    Auto        Dot3at        -1  Class 4      On     Good      5.00       53.76        93.00
   7    Auto        Dot3at        -1  Class 0      On     Good      2.00       52.63        38.00
   8    Auto        Dot3at        -1  Class 0      On     Good      2.10       52.50        40.00
   9    Auto        Dot3at        -1  Class 0      On     Good      1.90       52.78        36.00
  10    Auto        Dot3at        -1  Class 0      On     Good      1.80       52.94        34.00
  11    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  12    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  13    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  14    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  15    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  16    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  17    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  18    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  19    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  20    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  21    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  22    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  23    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  24    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  25    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  26    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  27    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  28    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  29    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  30    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  31    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  32    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  33    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  34    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  35    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  36    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  37    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  38    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  39    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  40    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  41    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  42    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  43    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  44    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  45    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  46    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  47    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  48    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
USW-Pro-48-PoE-US.7.4.1# swctrl poe show | awk '
> {
>     print
>     if ($0 ~ /\(mW\):/) {
>         key=$0
>         sub(/:.*/, "", key)
> 
>         value=$0
>         sub(/^.*:[[:space:]]*/, "", value)
>         sub(/[[:space:]].*$/, "", value)
> 
>         if (value ~ /^-?[0-9]+$/) {
>             printf "  -> %-30s %.2f W\n", key, value / 1000
>         }
>     }
> }
> '
Total Power Limit(mW): -1097720964
  -> Total Power Limit(mW)          -1097720.96 W

Port  OpMode      HpMode    PwrLimit   Class   PoEPwr  PwrGood  Power(W)  Voltage(V)  Current(mA)
                              (mW)                                                               
----  ------  ------------  --------  -------  ------  -------  --------  ----------  -----------
   1    Auto        Dot3at        -1  Class 0      On     Good      8.20       53.25       154.00
   2    Auto        Dot3at        -1  Class 0      On     Good      4.00       52.63        76.00
   3    Auto        Dot3at        -1  Class 0      On     Good      6.10       53.98       113.00
   4    Auto        Dot3at        -1  Class 0      On     Good      3.90       53.42        73.00
   5    Auto        Dot3at        -1  Class 4      On     Good      4.90       53.85        91.00
   6    Auto        Dot3at        -1  Class 4      On     Good      5.00       53.76        93.00
   7    Auto        Dot3at        -1  Class 0      On     Good      2.00       52.63        38.00
   8    Auto        Dot3at        -1  Class 0      On     Good      2.10       52.50        40.00
   9    Auto        Dot3at        -1  Class 0      On     Good      1.90       52.78        36.00
  10    Auto        Dot3at        -1  Class 0      On     Good      1.80       52.94        34.00
  11    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  12    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  13    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  14    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  15    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  16    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  17    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  18    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  19    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  20    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  21    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  22    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  23    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  24    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  25    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  26    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  27    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  28    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  29    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  30    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  31    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  32    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  33    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  34    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  35    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  36    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  37    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  38    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  39    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  40    Auto        Dot3at        -1  Unknown     Off      Bad      0.00        0.00         0.00
  41    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  42    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  43    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  44    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  45    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  46    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  47    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
  48    Auto  Dot3bt-type3        -1  Unknown     Off      Bad      0.00        0.00         0.00
USW-Pro-48-PoE-US.7.4.1# 
USW-Pro Switch - SSH Observation

SSH - Port Counter

USW-Pro-48-PoE-US.7.4.1# swctrl port show counters id 1
Port: 1
-----------------------------------------------|----------------------------------------------
TX Total (Octets):                192034083002 |RX Total (Octets):                  8120471529
TX 64 Octets:                            57521 |RX 64 Octets:                            85385
TX 65-127 Octets:                      3071491 |RX 65-127 Octets:                      7353855
TX 128-255 Octets:                     1150313 |RX 128-255 Octets:                     1833097
TX 256-511 Octets:                      159020 |RX 256-511 Octets:                      920988
TX 512-1023 Octets:                     815981 |RX 512-1023 Octets:                     238439
TX 1024-1518 Octets:                 125794292 |RX 1024-1518 Octets:                   4389299
TX over 1518 Octets:                         0 |RX over 1518 Octets:                         0
TX Pkt Successfully:                 131048618 |RX Pkt Successfully:                  14821063
TX Ucast Pkts:                       130982906 |RX Ucast Pkts:                        14755156
TX Mcast Pkts:                           17865 |RX Mcast Pkts:                           19921
TX Bcast Pkts:                           47847 |RX Bcast Pkts:                           45986
TX Pkt Discard:                              0 |RX Pkt Discard:                              0
TX Total Error:                              0 |RX Total Error (MAC):                        0
TX FCS Error:                                0 |RX FCS Error:                                0
TX Underrun Errors:                          0 |RX Jabbers Received:                         0
TX Total Collision:                          0 |RX Fragments Received:                       0
TX Single Collision Frames:                  0 |RX Undersize Received:                       0
TX Multiple Collision Pkts:                  0 |RX Alignment Errors:                         0
TX Excessive Collision Pkts:                 0 |RX Overruns:                                 0
TX Pause Pkts:                               0 |RX Pause Pkts:                               0
TX STP BPDUs:                                0 |RX STP BPDUs:                                0
TX RSTP BPDUs:                            4804 |RX RSTP BPDUs:                               0
TX MSTP BPDUs:                               0 |RX MSTP BPDUs:                               0
USW-Pro-48-PoE-US.7.4.1# swctrl port show counters id 2
Port: 2
-----------------------------------------------|----------------------------------------------
TX Total (Octets):                   373976202 |RX Total (Octets):                    10811084
TX 64 Octets:                            53389 |RX 64 Octets:                             3688
TX 65-127 Octets:                        16653 |RX 65-127 Octets:                        14892
TX 128-255 Octets:                       14480 |RX 128-255 Octets:                        8046
TX 256-511 Octets:                       13316 |RX 256-511 Octets:                        1511
TX 512-1023 Octets:                       4162 |RX 512-1023 Octets:                       1118
TX 1024-1518 Octets:                    269310 |RX 1024-1518 Octets:                      4730
TX over 1518 Octets:                         0 |RX over 1518 Octets:                         0
TX Pkt Successfully:                    371310 |RX Pkt Successfully:                     33985
TX Ucast Pkts:                          283249 |RX Ucast Pkts:                           29699
TX Mcast Pkts:                           32530 |RX Mcast Pkts:                            2549
TX Bcast Pkts:                           55531 |RX Bcast Pkts:                            1737
TX Pkt Discard:                              0 |RX Pkt Discard:                              0
TX Total Error:                              0 |RX Total Error (MAC):                        0
TX FCS Error:                                0 |RX FCS Error:                                0
TX Underrun Errors:                          0 |RX Jabbers Received:                         0
TX Total Collision:                          0 |RX Fragments Received:                       0
TX Single Collision Frames:                  0 |RX Undersize Received:                       0
TX Multiple Collision Pkts:                  0 |RX Alignment Errors:                         0
TX Excessive Collision Pkts:                 0 |RX Overruns:                                 0
TX Pause Pkts:                               0 |RX Pause Pkts:                               0
TX STP BPDUs:                                0 |RX STP BPDUs:                                0
TX RSTP BPDUs:                            4808 |RX RSTP BPDUs:                               0
TX MSTP BPDUs:                               0 |RX MSTP BPDUs:                               0
USW-Pro-48-PoE-US.7.4.1#



Alle Interfaces:

for PORT in $(seq 1 52); do
    swctrl port show counters id "$PORT" | awk -v port="$PORT" '
    function human(bytes) {
        if (bytes >= 1000000000)
            return sprintf("%.3f GB", bytes / 1000000000)
        if (bytes >= 1000000)
            return sprintf("%.2f MB", bytes / 1000000)
        if (bytes >= 1000)
            return sprintf("%.2f KB", bytes / 1000)
        return sprintf("%.0f B", bytes)
    }

    BEGIN {
        found = 0
    }

    {
        count = split($0, entries, /\|/)

        for (i = 1; i <= count; i++) {
            entry = entries[i]

            if (entry !~ /:/)
                continue

            key = entry
            sub(/:.*/, "", key)
            gsub(/^[[:space:]]+|[[:space:]]+$/, "", key)

            value = entry
            sub(/^[^:]*:[[:space:]]*/, "", value)
            sub(/[[:space:]].*$/, "", value)

            lower_key = tolower(key)

            if (lower_key ~ /(byte|octet)/ && value ~ /^[0-9]+$/) {
                if (!found) {
                    printf "\nInterface 0/%s\n", port
                    found = 1
                }

                printf "  %-30s %s\n", key, human(value)
            }
        }
    }
    '
done


USW-Pro-48-PoE-US.7.4.1# for PORT in $(seq 1 52); do
>     swctrl port show counters id "$PORT" | awk -v port="$PORT" '
>     function human(bytes) {
>         if (bytes >= 1000000000)
>             return sprintf("%.3f GB", bytes / 1000000000)
>         if (bytes >= 1000000)
>             return sprintf("%.2f MB", bytes / 1000000)
>         if (bytes >= 1000)
>             return sprintf("%.2f KB", bytes / 1000)
>         return sprintf("%.0f B", bytes)
>     }
> 
>     BEGIN {
>         found = 0
>     }
> 
>     {
>         count = split($0, entries, /\|/)
> 
>         for (i = 1; i <= count; i++) {
>             entry = entries[i]
> 
>             if (entry !~ /:/)
>                 continue
> 
>             key = entry
>             sub(/:.*/, "", key)
>             gsub(/^[[:space:]]+|[[:space:]]+$/, "", key)
> 
>             value = entry
>             sub(/^[^:]*:[[:space:]]*/, "", value)
>             sub(/[[:space:]].*$/, "", value)
> 
>             lower_key = tolower(key)
> 
>             if (lower_key ~ /(byte|octet)/ && value ~ /^[0-9]+$/) {
>                 if (!found) {
>                     printf "\nInterface 0/%s\n", port
>                     found = 1
>                 }
> 
>                 printf "  %-30s %s\n", key, human(value)
>             }
>         }
>     }
>     '
> done

Interface 0/1
  TX Total (Octets)              193.627 GB
  RX Total (Octets)              8.132 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.003 GB
  RX 65-127 Octets               0.007 GB
  TX 128-255 Octets              0.001 GB
  RX 128-255 Octets              0.002 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.001 GB
  TX 512-1023 Octets             0.001 GB
  RX 512-1023 Octets             0.000 GB
  TX 1024-1518 Octets            0.127 GB
  RX 1024-1518 Octets            0.004 GB
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/2
  TX Total (Octets)              0.374 GB
  RX Total (Octets)              0.011 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0.000 GB
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0.000 GB
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/3
  TX Total (Octets)              0.011 GB
  RX Total (Octets)              0.004 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0.000 GB
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0.000 GB
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/4
  TX Total (Octets)              0.057 GB
  RX Total (Octets)              0.006 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0.000 GB
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0.000 GB
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/5
  TX Total (Octets)              0.010 GB
  RX Total (Octets)              0.000 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              1 B
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/6
  TX Total (Octets)              0.011 GB
  RX Total (Octets)              0.002 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0.000 GB
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0.000 GB
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/7
  TX Total (Octets)              0.010 GB
  RX Total (Octets)              0.001 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/8
  TX Total (Octets)              0.010 GB
  RX Total (Octets)              0.001 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/9
  TX Total (Octets)              0.010 GB
  RX Total (Octets)              0.001 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/10
  TX Total (Octets)              0.010 GB
  RX Total (Octets)              0.001 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.000 GB
  RX 65-127 Octets               0.000 GB
  TX 128-255 Octets              0.000 GB
  RX 128-255 Octets              0.000 GB
  TX 256-511 Octets              0.000 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0.000 GB
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/11
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/12
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/13
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/14
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/15
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/16
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/17
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/18
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/19
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/20
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/21
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/22
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/23
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B
c
Interface 0/24
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/25
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/26
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/27
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/28
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/29
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/30
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/31
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/32
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/33
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/34
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/35
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/36
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/37
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/38
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/39
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/40
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/41
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/42
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/43
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/44
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/45
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/46
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/47
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/48
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/49
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/50
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/51
  TX Total (Octets)              0 B
  RX Total (Octets)              0 B
  TX 64 Octets                   0 B
  RX 64 Octets                   0 B
  TX 65-127 Octets               0 B
  RX 65-127 Octets               0 B
  TX 128-255 Octets              0 B
  RX 128-255 Octets              0 B
  TX 256-511 Octets              0 B
  RX 256-511 Octets              0 B
  TX 512-1023 Octets             0 B
  RX 512-1023 Octets             0 B
  TX 1024-1518 Octets            0 B
  RX 1024-1518 Octets            0 B
  TX over 1518 Octets            0 B
  RX over 1518 Octets            0 B

Interface 0/52
  TX Total (Octets)              8.151 GB
  RX Total (Octets)              194.560 GB
  TX 64 Octets                   0.000 GB
  RX 64 Octets                   0.000 GB
  TX 65-127 Octets               0.007 GB
  RX 65-127 Octets               0.003 GB
  TX 128-255 Octets              0.002 GB
  RX 128-255 Octets              0.001 GB
  TX 256-511 Octets              0.001 GB
  RX 256-511 Octets              0.000 GB
  TX 512-1023 Octets             0.000 GB
  RX 512-1023 Octets             0.001 GB
  TX 1024-1518 Octets            0.004 GB
  RX 1024-1518 Octets            0.127 GB
  TX over 1518 Octets            0.004 GB
  RX over 1518 Octets            0 B
USW-Pro-48-PoE-US.7.4.1#


UDM - Firewall

UDM - Firewall

Ubiquity UDM - Geräte sperren

Client-Quarantäne auf dem UniFi Gateway

Die Client-Quarantäne dient dazu, einen verdächtigen oder kompromittierten Netzwerk-Client im Ernstfall innerhalb weniger Sekunden über SSH zu sperren. Der Client wird anhand seiner MAC-Adresse identifiziert, sodass ein Wechsel der IPv4-Adresse die Sperre nicht umgeht.

Der Hauptgrund für diese Lösung ist, dass unsere Client-Netzwerke teilweise Zugriff auf viele andere Netzwerkzonen besitzen. Im Sicherheitsvorfall wäre es zu langsam und fehleranfällig, für jede einzelne Zone manuell eine Firewallregel anzulegen. Stattdessen wird die Quarantäne direkt vor den regulären UniFi-Firewallregeln eingehängt.

Dabei werden IPv4, IPv6 und über das Gateway laufender Netzwerkverkehr des betroffenen Clients blockiert. Bestehende Verbindungen werden zusätzlich aus Conntrack entfernt.

Wichtig: Verkehr zwischen zwei Geräten innerhalb desselben VLANs kann unter Umständen direkt über einen Switch oder Access Point laufen und das Gateway gar nicht erreichen. Bei einem besonders kritischen Sicherheitsvorfall sollte daher zusätzlich der Switch-Port deaktiviert oder der WLAN-Client isoliert werden.

Hinweis: Die hier verwendeten Regeln werden direkt per SSH verwaltet und liegen außerhalb der normalen UniFi-Konfiguration. Nach Firmware-Updates, Neustarts oder einer Neu-Provisionierung sollte der Status der Quarantäne geprüft und gegebenenfalls mit quarantine-client apply erneut angewendet werden.

Installation

Installation

Die Installation erfolgt als root direkt per SSH auf dem UniFi Gateway. Das Skript und seine Konfiguration werden unter /persistent/client-quarantine gespeichert.

Der folgende Block installiert das komplette Quarantäne-Werkzeug:

install -d -m 700 -o root -g root /persistent/client-quarantine

cat > /persistent/client-quarantine/quarantine-client <<'QUARANTINE_SCRIPT'
#!/bin/bash
set -Eeuo pipefail

PATH='/usr/sbin:/usr/bin:/sbin:/bin'
umask 077

readonly BASE_DIR='/persistent/client-quarantine'
readonly STATE_FILE="${BASE_DIR}/blocked-macs"
readonly LOCK_FILE="${BASE_DIR}/lock"

readonly IPT4_CHAIN='QRTN_MAC_V4'
readonly IPT6_CHAIN='QRTN_MAC_V6'

readonly EBT_BR_CHAIN='QRTN_MAC_BR'
readonly EBT_IN_CHAIN='QRTN_MAC_IN'
readonly EBT_FWD_CHAIN='QRTN_MAC_FWD'
readonly EBT_OUT_CHAIN='QRTN_MAC_OUT'

die() {
    printf 'Fehler: %s\n' "$*" >&2
    exit 1
}

log_message() {
    logger -t client-quarantine -- "$*" 2>/dev/null || true
    printf '%s\n' "$*"
}

require_root() {
    [ "${EUID}" -eq 0 ] ||
        die 'Dieses Werkzeug muss als root ausgeführt werden.'
}

require_commands() {
    local command_name

    for command_name in \
        awk sort mktemp install ip \
        iptables ip6tables ebtables \
        conntrack logger flock
    do
        command -v "${command_name}" >/dev/null 2>&1 ||
            die "Benötigter Befehl fehlt: ${command_name}"
    done
}

prepare_storage() {
    install -d -m 700 -o root -g root "${BASE_DIR}"

    touch "${STATE_FILE}" "${LOCK_FILE}"
    chown root:root "${STATE_FILE}" "${LOCK_FILE}"
    chmod 600 "${STATE_FILE}" "${LOCK_FILE}"
}

normalize_mac() {
    local mac="${1,,}"

    [[ "${mac}" =~ ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ ]] ||
        die 'Ungültige MAC-Adresse. Erwartet wird aa:bb:cc:dd:ee:ff.'

    [ "${mac}" != '00:00:00:00:00:00' ] ||
        die 'Die Null-MAC ist nicht zulässig.'

    [ "${mac}" != 'ff:ff:ff:ff:ff:ff' ] ||
        die 'Die Broadcast-MAC ist nicht zulässig.'

    local first_octet="${mac%%:*}"

    (( (16#${first_octet} & 1) == 0 )) ||
        die 'Multicast-MAC-Adressen sind nicht zulässig.'

    printf '%s\n' "${mac}"
}

reject_gateway_mac() {
    local target="$1"
    local address_file
    local local_mac

    for address_file in /sys/class/net/*/address; do
        [ -r "${address_file}" ] || continue

        IFS= read -r local_mac < "${address_file}" || true
        local_mac="${local_mac,,}"

        [ "${target}" != "${local_mac}" ] ||
            die "Abbruch: ${target} gehört zu einer Gateway-Schnittstelle."
    done
}

get_ssh_peer_mac() {
    [ -n "${SSH_CONNECTION:-}" ] || return 0

    local peer_ip="${SSH_CONNECTION%% *}"

    ip neigh show to "${peer_ip}" 2>/dev/null |
        awk '
            {
                for (i = 1; i <= NF; i++) {
                    if ($i == "lladdr") {
                        print tolower($(i + 1))
                        exit
                    }
                }
            }
        '
}

reject_current_ssh_peer() {
    local target="$1"
    local peer_mac

    peer_mac="$(get_ssh_peer_mac || true)"

    if [ -n "${peer_mac}" ] && [ "${target}" = "${peer_mac}" ]; then
        die 'Diese MAC gehört zum aktuellen SSH-Gegenüber. Verwende add --force nur bei bewusstem Verbindungsabbruch.'
    fi
}

read_macs() {
    awk '
        /^[[:space:]]*$/ {
            next
        }

        {
            print tolower($1)
        }
    ' "${STATE_FILE}" |
        sort -u
}

add_to_state() {
    local mac="$1"
    local temporary_file

    temporary_file="$(mktemp "${BASE_DIR}/blocked-macs.XXXXXX")"

    {
        read_macs
        printf '%s\n' "${mac}"
    } |
        sort -u > "${temporary_file}"

    chown root:root "${temporary_file}"
    chmod 600 "${temporary_file}"
    mv -f "${temporary_file}" "${STATE_FILE}"
}

remove_from_state() {
    local mac="$1"
    local temporary_file

    temporary_file="$(mktemp "${BASE_DIR}/blocked-macs.XXXXXX")"

    awk -v remove_mac="${mac}" '
        NF && tolower($1) != remove_mac {
            print tolower($1)
        }
    ' "${STATE_FILE}" |
        sort -u > "${temporary_file}"

    chown root:root "${temporary_file}"
    chmod 600 "${temporary_file}"
    mv -f "${temporary_file}" "${STATE_FILE}"
}

prepare_iptables_chain() {
    local binary="$1"
    local custom_chain="$2"

    "${binary}" -w 5 -t mangle -N "${custom_chain}" 2>/dev/null ||
        true

    "${binary}" -w 5 -t mangle -F "${custom_chain}"

    while "${binary}" \
        -w 5 \
        -t mangle \
        -C PREROUTING \
        -j "${custom_chain}" \
        2>/dev/null
    do
        "${binary}" \
            -w 5 \
            -t mangle \
            -D PREROUTING \
            -j "${custom_chain}"
    done

    "${binary}" \
        -w 5 \
        -t mangle \
        -I PREROUTING 1 \
        -j "${custom_chain}"
}

prepare_ebtables_chain() {
    local table="$1"
    local builtin_chain="$2"
    local custom_chain="$3"

    ebtables \
        -t "${table}" \
        -N "${custom_chain}" \
        2>/dev/null ||
        true

    ebtables \
        -t "${table}" \
        -F "${custom_chain}"

    while ebtables \
        -t "${table}" \
        -D "${builtin_chain}" \
        -j "${custom_chain}" \
        2>/dev/null
    do
        :
    done

    ebtables \
        -t "${table}" \
        -I "${builtin_chain}" 1 \
        -j "${custom_chain}"
}

apply_rules() {
    local mac

    prepare_iptables_chain iptables "${IPT4_CHAIN}"
    prepare_iptables_chain ip6tables "${IPT6_CHAIN}"

    prepare_ebtables_chain \
        broute \
        BROUTING \
        "${EBT_BR_CHAIN}"

    prepare_ebtables_chain \
        filter \
        INPUT \
        "${EBT_IN_CHAIN}"

    prepare_ebtables_chain \
        filter \
        FORWARD \
        "${EBT_FWD_CHAIN}"

    prepare_ebtables_chain \
        filter \
        OUTPUT \
        "${EBT_OUT_CHAIN}"

    while IFS= read -r mac; do
        [ -n "${mac}" ] || continue

        iptables \
            -w 5 \
            -t mangle \
            -A "${IPT4_CHAIN}" \
            -m mac \
            --mac-source "${mac}" \
            -j DROP

        ip6tables \
            -w 5 \
            -t mangle \
            -A "${IPT6_CHAIN}" \
            -m mac \
            --mac-source "${mac}" \
            -j DROP

        ebtables \
            -t broute \
            -A "${EBT_BR_CHAIN}" \
            -s "${mac}" \
            -j RETURN

        ebtables \
            -t filter \
            -A "${EBT_IN_CHAIN}" \
            -s "${mac}" \
            -j DROP

        ebtables \
            -t filter \
            -A "${EBT_FWD_CHAIN}" \
            -s "${mac}" \
            -j DROP

        ebtables \
            -t filter \
            -A "${EBT_FWD_CHAIN}" \
            -d "${mac}" \
            -j DROP

        ebtables \
            -t filter \
            -A "${EBT_OUT_CHAIN}" \
            -d "${mac}" \
            -j DROP
    done < <(read_macs)
}

known_addresses_for_mac() {
    local family="$1"
    local mac="$2"

    ip "-${family}" -o neigh show 2>/dev/null |
        awk -v mac="${mac}" '
            {
                for (i = 1; i <= NF; i++) {
                    if ($i == "lladdr" && tolower($(i + 1)) == mac) {
                        print $1
                        break
                    }
                }
            }
        ' |
        sort -u
}

clear_conntrack_for_mac() {
    local mac="$1"
    local address

    while IFS= read -r address; do
        [ -n "${address}" ] || continue

        conntrack \
            -D \
            -f ipv4 \
            -s "${address}" \
            >/dev/null 2>&1 ||
            true

        conntrack \
            -D \
            -f ipv4 \
            -d "${address}" \
            >/dev/null 2>&1 ||
            true
    done < <(known_addresses_for_mac 4 "${mac}")

    while IFS= read -r address; do
        [ -n "${address}" ] || continue

        conntrack \
            -D \
            -f ipv6 \
            -s "${address}" \
            >/dev/null 2>&1 ||
            true

        conntrack \
            -D \
            -f ipv6 \
            -d "${address}" \
            >/dev/null 2>&1 ||
            true
    done < <(known_addresses_for_mac 6 "${mac}")
}

command_add() {
    local force=0
    local mac

    if [ "${1:-}" = '--force' ]; then
        force=1
        shift
    fi

    [ "$#" -eq 1 ] ||
        die 'Verwendung: quarantine-client add [--force] MAC'

    mac="$(normalize_mac "$1")"

    reject_gateway_mac "${mac}"

    if [ "${force}" -eq 0 ]; then
        reject_current_ssh_peer "${mac}"
    fi

    add_to_state "${mac}"
    apply_rules
    clear_conntrack_for_mac "${mac}"

    log_message "Client ${mac} wurde quarantänisiert."
}

command_remove() {
    local mac

    [ "$#" -eq 1 ] ||
        die 'Verwendung: quarantine-client remove MAC'

    mac="$(normalize_mac "$1")"

    remove_from_state "${mac}"
    apply_rules

    log_message "Quarantäne für ${mac} wurde aufgehoben."
}

command_apply() {
    [ "$#" -eq 0 ] ||
        die 'Verwendung: quarantine-client apply'

    apply_rules

    log_message 'Gespeicherte Quarantäne-Regeln wurden angewendet.'
}

command_list() {
    [ "$#" -eq 0 ] ||
        die 'Verwendung: quarantine-client list'

    if [ ! -s "${STATE_FILE}" ]; then
        printf 'Keine Clients in Quarantäne.\n'
        return
    fi

    read_macs
}

command_status() {
    [ "$#" -eq 0 ] ||
        die 'Verwendung: quarantine-client status'

    printf 'Gespeicherte MAC-Adressen:\n'
    command_list

    printf '\nIPv4-Hook:\n'
    iptables -w 5 -t mangle -S PREROUTING |
        awk -v chain="${IPT4_CHAIN}" '$0 ~ chain'

    printf '\nIPv6-Hook:\n'
    ip6tables -w 5 -t mangle -S PREROUTING |
        awk -v chain="${IPT6_CHAIN}" '$0 ~ chain'

    printf '\nBridge-Hooks:\n'

    ebtables -t broute -L BROUTING 2>/dev/null |
        awk -v chain="${EBT_BR_CHAIN}" '$0 ~ chain'

    ebtables -t filter -L INPUT 2>/dev/null |
        awk -v chain="${EBT_IN_CHAIN}" '$0 ~ chain'

    ebtables -t filter -L FORWARD 2>/dev/null |
        awk -v chain="${EBT_FWD_CHAIN}" '$0 ~ chain'

    ebtables -t filter -L OUTPUT 2>/dev/null |
        awk -v chain="${EBT_OUT_CHAIN}" '$0 ~ chain'
}

command_self_test() {
    [ "$#" -eq 0 ] ||
        die 'Verwendung: quarantine-client self-test'

    normalize_mac '02:00:00:00:00:01' >/dev/null

    printf 'Selbsttest erfolgreich. Es wurde kein Client gesperrt.\n'
}

show_usage() {
    cat <<'USAGE'
Verwendung:
  quarantine-client add [--force] MAC
  quarantine-client remove MAC
  quarantine-client list
  quarantine-client apply
  quarantine-client status
  quarantine-client self-test
USAGE
}

main() {
    require_root
    require_commands
    prepare_storage

    exec 9>"${LOCK_FILE}"
    flock -x 9

    local action="${1:-}"

    if [ "$#" -gt 0 ]; then
        shift
    fi

    case "${action}" in
        add)
            command_add "$@"
            ;;
        remove)
            command_remove "$@"
            ;;
        apply)
            command_apply "$@"
            ;;
        list)
            command_list "$@"
            ;;
        status)
            command_status "$@"
            ;;
        self-test)
            command_self_test "$@"
            ;;
        help|-h|--help|'')
            show_usage
            ;;
        *)
            die "Unbekannte Aktion: ${action}"
            ;;
    esac
}

main "$@"
QUARANTINE_SCRIPT

chown root:root /persistent/client-quarantine/quarantine-client
chmod 700 /persistent/client-quarantine/quarantine-client

ln -sfn \
    /persistent/client-quarantine/quarantine-client \
    /usr/local/sbin/quarantine-client

Syntax prüfen

bash -n /persistent/client-quarantine/quarantine-client && echo "Syntax OK"

Erwartete Ausgabe:

Syntax OK

Selbsttest durchführen

quarantine-client self-test
quarantine-client list

Erwartete Ausgabe:

Selbsttest erfolgreich. Es wurde kein Client gesperrt.
Keine Clients in Quarantäne.

Damit ist die Installation abgeschlossen. Der Selbsttest selbst legt keine Firewall-Sperre für einen Client an.

Nutzung

Nutzung

MAC-Adresse anhand einer IP-Adresse ermitteln

Wenn die aktuelle IP-Adresse des verdächtigen Clients bekannt ist, kann die dazugehörige MAC-Adresse über die Neighbor-Tabelle ermittelt werden:

ip neigh show to 10.15.37.80

Beispielausgabe:

10.15.37.80 dev br40 lladdr bc:24:11:34:bb:e1 REACHABLE

In diesem Beispiel lautet die MAC-Adresse des Clients:

bc:24:11:34:bb:e1

Client sofort quarantänisieren

quarantine-client add bc:24:11:34:bb:e1

Erwartete Ausgabe:

Client bc:24:11:34:bb:e1 wurde quarantänisiert.

Die MAC-Adresse wird dabei dauerhaft in der Quarantäne-Liste gespeichert. Die Firewallregeln werden unmittelbar neu aufgebaut und bekannte bestehende IPv4- und IPv6-Verbindungen des Clients werden aus Conntrack gelöscht.

Schutz vor versehentlichem Aussperren

Das Skript versucht zu erkennen, ob die angegebene MAC-Adresse zum Rechner gehört, über den die aktuelle SSH-Verbindung aufgebaut wurde. In diesem Fall wird die Sperre standardmäßig abgebrochen.

Beispiel:

Fehler: Diese MAC gehört zum aktuellen SSH-Gegenüber. Verwende add --force nur bei bewusstem Verbindungsabbruch.

Soll der aktuell verwendete SSH-Client tatsächlich absichtlich gesperrt werden, kann die Schutzfunktion mit --force übergangen werden:

quarantine-client add --force bc:24:11:34:bb:e1

Achtung: Ist dies tatsächlich der aktuelle Administrationsrechner, kann dadurch die SSH-Verbindung sofort abbrechen.

Quarantänisierte Clients anzeigen

quarantine-client list

Beispielausgabe:

bc:24:11:34:bb:e1

Wenn kein Client quarantänisiert ist:

Keine Clients in Quarantäne.

Status der Firewall-Hooks anzeigen

quarantine-client status

Der Befehl zeigt die gespeicherten MAC-Adressen sowie die aktuell installierten IPv4-, IPv6- und Bridge-Hooks an.

Gespeicherte Quarantäne erneut anwenden

Wenn UniFi die Firewall neu aufgebaut hat oder das Gateway neu gestartet wurde, können alle gespeicherten Quarantäne-Einträge erneut in die laufende Firewall übernommen werden:

quarantine-client apply

Erwartete Ausgabe:

Gespeicherte Quarantäne-Regeln wurden angewendet.

Quarantäne eines Clients aufheben

quarantine-client remove bc:24:11:34:bb:e1

Erwartete Ausgabe:

Quarantäne für bc:24:11:34:bb:e1 wurde aufgehoben.

Danach kontrollieren

quarantine-client list

Wenn die MAC-Adresse nicht mehr in der Ausgabe vorhanden ist, wurde die Quarantäne aufgehoben.

Kurzreferenz für den Ernstfall

MAC zu einer bekannten IP ermitteln:

ip neigh show to IP-ADRESSE

Client sperren:

quarantine-client add MAC-ADRESSE

Gesperrte Clients anzeigen:

quarantine-client list

Client wieder freigeben:

quarantine-client remove MAC-ADRESSE
Quarantäne-System vollständig entfernen

Vollständige Deinstallation

Bei der Deinstallation sollten zuerst alle gespeicherten Clients aus der Quarantäne entfernt werden.

Aktuelle Quarantäne-Liste anzeigen

quarantine-client list

Jede dort aufgeführte MAC-Adresse mit folgendem Befehl entfernen:

quarantine-client remove bc:24:11:34:bb:e1

Danach sollte die Liste leer sein:

Keine Clients in Quarantäne.

Firewall-Hooks und Quarantäne-Ketten entfernen

Mit folgendem Block werden die von diesem Werkzeug angelegten IPv4-, IPv6- und Bridge-Firewallketten vollständig aus der laufenden Firewall entfernt:

for spec in \
    "iptables QRTN_MAC_V4" \
    "ip6tables QRTN_MAC_V6"
do
    set -- $spec
    binary="$1"
    chain="$2"

    while "$binary" \
        -w 5 \
        -t mangle \
        -C PREROUTING \
        -j "$chain" \
        2>/dev/null
    do
        "$binary" \
            -w 5 \
            -t mangle \
            -D PREROUTING \
            -j "$chain"
    done

    "$binary" \
        -w 5 \
        -t mangle \
        -F "$chain" \
        2>/dev/null || true

    "$binary" \
        -w 5 \
        -t mangle \
        -X "$chain" \
        2>/dev/null || true
done

for spec in \
    "broute BROUTING QRTN_MAC_BR" \
    "filter INPUT QRTN_MAC_IN" \
    "filter FORWARD QRTN_MAC_FWD" \
    "filter OUTPUT QRTN_MAC_OUT"
do
    set -- $spec
    table="$1"
    builtin_chain="$2"
    custom_chain="$3"

    while ebtables \
        -t "$table" \
        -D "$builtin_chain" \
        -j "$custom_chain" \
        2>/dev/null
    do
        :
    done

    ebtables \
        -t "$table" \
        -F "$custom_chain" \
        2>/dev/null || true

    ebtables \
        -t "$table" \
        -X "$custom_chain" \
        2>/dev/null || true
done

Programmdateien entfernen

rm -f /usr/local/sbin/quarantine-client
rm -rf /persistent/client-quarantine

Kontrolle

Der folgende Befehl sollte anschließend keine Quarantäne-Ketten mehr anzeigen:

{
    iptables -t mangle -S 2>/dev/null
    ip6tables -t mangle -S 2>/dev/null
    ebtables -t broute -L 2>/dev/null
    ebtables -t filter -L 2>/dev/null
} | awk '/QRTN_MAC_/ { print }'

Wenn keine Ausgabe erscheint, sind die Quarantäne-Firewallregeln vollständig entfernt.

Zusätzlich sollte der Befehl nicht mehr vorhanden sein:

command -v quarantine-client || echo "quarantine-client wurde entfernt."

Erwartete Ausgabe:

quarantine-client wurde entfernt.

Wichtige Grenzen der Quarantäne

Die Quarantäne greift auf dem UniFi Gateway und kann damit insbesondere Verkehr zur Firewall selbst, zwischen gerouteten Netzwerken und zum Internet unterbinden.

Befinden sich zwei Geräte jedoch im selben VLAN und wird deren Verkehr direkt über einen externen Switch oder Access Point vermittelt, muss dieser Datenverkehr das Gateway möglicherweise überhaupt nicht passieren. Eine Gateway-Firewall kann solchen Verkehr folglich nicht zuverlässig stoppen.

Bei einem bestätigten Angriff oder einer akuten Kompromittierung sollte deshalb zusätzlich eine physische beziehungsweise Layer-2-Isolation erfolgen, beispielsweise durch das Deaktivieren des betreffenden Switch-Ports oder das Trennen des WLAN-Clients.

Notfall-Zusammenfassung

1. MAC-Adresse feststellen:

ip neigh show to IP-ADRESSE

2. Client sofort sperren:

quarantine-client add MAC-ADRESSE

3. Sperre kontrollieren:

quarantine-client list
quarantine-client status

4. Client wieder freigeben:

quarantine-client remove MAC-ADRESSE