# 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)

<table id="bkmrk-protokoll-portnummer" style="border-collapse:collapse;width:100%;height:298px;"><colgroup><col style="width:10.0089%;"></col><col style="width:8.96909%;"></col><col style="width:81.0205%;"></col></colgroup><tbody><tr style="height:29.8px;"><td style="height:29.8px;">Protokoll</td><td style="height:29.8px;">Portnummer</td><td style="height:29.8px;">Verwendung</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP/UDP</td><td style="height:29.8px;">53</td><td style="height:29.8px;">Wird für DNS verwendet. Erforderlich für die Umleitung des Gästeportals, das Herunterladen von Updates und den Fernzugriff.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">UDP</td><td style="height:29.8px;">3478</td><td style="height:29.8px;">Wird für STUN verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">UDP</td><td style="height:29.8px;">5514  
</td><td style="height:29.8px;">Wird für die Erfassung von Remote-Syslogs verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8080  
</td><td style="height:29.8px;">Wird für die Kommunikation von Geräten und Anwendungen verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">443  
</td><td style="height:29.8px;">Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einer UniFi-Konsole laufen.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8443  
</td><td style="height:29.8px;">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.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8880  
</td><td style="height:29.8px;">Wird für die HTTP-Umleitung des Portals verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8843  
</td><td style="height:29.8px;">Wird für die HTTPS-Umleitung des Portals verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">6789  
</td><td style="height:29.8px;">Wird für den UniFi-Mobile-Speedtest verwendet.</td></tr><tr><td>TCP</td><td>27117  
</td><td>Wird für die lokale Datenbankkommunikation verwendet.</td></tr><tr><td>UDP</td><td>5656-5699  
</td><td>Wird für das Broadcasting von AP-EDU verwendet.</td></tr><tr><td>UDP</td><td>10001  
</td><td>Wird für die Geräteerkennung verwendet.</td></tr><tr><td>UDP</td><td>1900  
</td><td>Wird für die Option "Anwendung im L2-Netzwerk auffindbar machen" in den UniFi Network-Einstellungen verwendet.</td></tr><tr><td>UDP</td><td>123  
</td><td>Wird für NTP (Datum und Uhrzeit) verwendet. Erforderlich für die sichere Kommunikation mit Remote-Zugriffsservern.</td></tr></tbody></table>

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.

<table id="bkmrk-protokoll-portnummer-1" style="border-collapse:collapse;width:100%;height:298px;"><colgroup><col style="width:10.0089%;"></col><col style="width:8.96909%;"></col><col style="width:81.0205%;"></col></colgroup><tbody><tr style="height:29.8px;"><td style="height:29.8px;">Protokoll</td><td style="height:29.8px;">Portnummer</td><td style="height:29.8px;">Verwendung</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">UDP</td><td style="height:29.8px;">3478</td><td style="height:29.8px;">Wird für STUN verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8080</td><td style="height:29.8px;">Wird für die Kommunikation von Geräten und Anwendungen verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">443</td><td style="height:29.8px;">Wird für die GUI/API der Anwendung verwendet, wie sie in einem Webbrowser sichtbar ist. Anwendungen, die auf einer UniFi-Konsole laufen.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8443</td><td style="height:29.8px;">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.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">6789</td><td style="height:29.8px;">Wird für den UniFi-Mobile-Speedtest verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8880</td><td style="height:29.8px;">Wird für die HTTP-Umleitung des Portals verwendet (nur erforderlich bei der Nutzung eines Gäste-Hotspots).</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8843</td><td style="height:29.8px;">Wird für die HTTPS-Umleitung des Portals verwendet (nur erforderlich bei der Nutzung eines Gäste-Hotspots).</td></tr></tbody></table>


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

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

<table id="bkmrk-protokoll-portnummer-2" style="border-collapse:collapse;width:100%;height:298px;"><colgroup><col style="width:10.0089%;"></col><col style="width:8.96909%;"></col><col style="width:81.0205%;"></col></colgroup><tbody><tr style="height:29.8px;"><td style="height:29.8px;">Protokoll</td><td style="height:29.8px;">Portnummer</td><td style="height:29.8px;">Verwendung</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP/UDP</td><td style="height:29.8px;">53</td><td style="height:29.8px;">Wird für DNS verwendet. Erforderlich für die Umleitung des Gästeportals, das Herunterladen von Updates und den Fernzugriff.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">UDP</td><td style="height:29.8px;">3478</td><td style="height:29.8px;">Wird für STUN verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP/UDP</td><td style="height:29.8px;">443</td><td style="height:29.8px;">Wird für den Remote-Zugriff verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">TCP</td><td style="height:29.8px;">8883</td><td style="height:29.8px;">Wird für den Remote-Zugriff verwendet.</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">UDP</td><td style="height:29.8px;">123</td><td style="height:29.8px;">Wird für NTP (Datum und Uhrzeit) verwendet. Erforderlich für die sichere Kommunikation mit Remote-Zugriffsservern.</td></tr></tbody></table>


#### Ä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](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  


<span style="color:rgb(224,62,45);">Das ganze funktioniert **nur**, wenn das Gerät noch neu ist oder zurückgesetzt wurde.</span>

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](https://help.ui.com/hc/en-us/articles/360043360253-UniFi-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:  
<span style="color:rgb(45,194,107);">User: ubnt</span>  
<span style="color:rgb(45,194,107);">Passwd: ubnt </span>  
also in einer CMD, Powershell oder Terminal einfach:   
<span style="color:rgb(53,152,219);">ssh ubnt@IP\_Adresse\_des\_AP’s  
</span>eingeben.

[![1_.png](https://mach7.space/uploads/images/gallery/2025-02/scaled-1680-/DCov3bb3gUZfPL2K-1.png)](https://mach7.space/uploads/images/gallery/2025-02/DCov3bb3gUZfPL2K-1.png)

Nach dem du den SSH Befehl eingegeben hast, fragt er, ob er dem fingerprint vertrauen willst.  
Da musst du “<span style="color:rgb(53,152,219);">yes</span>” 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.

```bash
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](https://mach7.space/uploads/images/gallery/2025-02/scaled-1680-/V3PlbDPVEwK7qC9m-2.png)](https://mach7.space/uploads/images/gallery/2025-02/V3PlbDPVEwK7qC9m-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](https://mach7.space/uploads/images/gallery/2025-02/scaled-1680-/de2PXM20SHFI5qw3-3.png)](https://mach7.space/uploads/images/gallery/2025-02/de2PXM20SHFI5qw3-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](https://mach7.space/uploads/images/gallery/2025-02/scaled-1680-/JfUqMdVeQWHVTXLy-4.png)](https://mach7.space/uploads/images/gallery/2025-02/JfUqMdVeQWHVTXLy-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`.

<div class="note" id="bkmrk-voraussetzungen-debi">**Voraussetzungen**  
- Debian-/Ubuntu-System mit zwei NICs (`eth0` = uplink/NAT-Seite, `eth1` = Switch-Port).
- UniFi Controller ist aus dem Uplink-Netz unter `10.0.0.1` erreichbar.
- Root-Zugriff auf den Debian-Host (oder du wechselst per `su -` auf root).

</div>## 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

```

- **eth1** bekommt ein separates /24 (hier `172.0.0.0/24`), damit der Switch sofort erkennt, dass `10.0.0.1` außerhalb seines Netzes liegt und das Gateway nutzt.
- **NAT / Masquerade** auf dem Debian-Host erlaubt dem Switch, den Controller über `eth0` zu erreichen.

## 2 · Interface- und System-Basis

```bash
# /etc/network/interfaces – Ausschnitt
auto eth1
iface eth1 inet static
    address 172.0.0.1
    netmask 255.255.255.0

```

```bash
# 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

```

```bash
# 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:**

```bash
iptables -L FORWARD -n -v
```

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

```bash
# 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 &amp; konfigurieren

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

```

### 3.1 Server-Interface festlegen

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

```

### 3.2 `/etc/dhcp/dhcpd.conf`

```dhcp
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;
}

```

<div class="note" id="bkmrk-ip%C2%A0%E2%86%92%C2%A0hex%E2%80%91konvertieru">**IP → Hex-Konvertierung**  
</div>Jedes Oktett der Controller-IP in Hex schreiben:

<div class="note" id="bkmrk-10-0-0-1-hex">- 10 = `0a`
- 0 = `00`
- 0 = `00`
- 1 = `01`

`01:04:0a:00:00:01`</div>```bash
systemctl enable --now isc-dhcp-server
systemctl status isc-dhcp-server

```

## 4 · Firewall / Ports

<table id="bkmrk-port-protokoll-zweck"><thead><tr><th>Port</th><th>Protokoll</th><th>Zweck</th></tr></thead><tbody><tr><td>8080</td><td>TCP</td><td>Inform &amp; Adoption</td></tr><tr><td>3478</td><td>UDP</td><td>STUN</td></tr><tr><td>10001</td><td>UDP</td><td>Discovery (alt)</td></tr><tr><td>8443</td><td>TCP</td><td>Controller-GUI/API</td></tr></tbody></table>

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 &amp; adoptieren

1. Switch auf Werkseinstellungen zurücksetzen (Reset-Taster &gt; 5 s).
2. An `eth1` des Debian-Hosts stecken.
3. Mit `tcpdump` überprüfen, dass Option 43 im `DHCPACK` auftaucht:  
    ```bash
    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

```bash
# 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

```

<div class="warn" id="bkmrk-ger%C3%A4t-taucht-nicht-a">**Gerät taucht nicht auf?**  
- Option 43 fehlt ➜ DHCP checken.
- NAT/Firewall blockt Port 8080 ➜ iptables-Regeln prüfen (Forwarding + NAT!).
- Falsche Subnetzmaske ➜ Switch glaubt, Controller sei lokal.

</div>## 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

<table id="bkmrk-dezimal-rechenweg-he"><thead><tr><th>Dezimal</th><th>Rechenweg</th><th>Hexadezimal</th></tr></thead><tbody><tr><td>10</td><td>10 / 16 = 0 Rest 10 → 0 = `0`, 10 = `a`</td><td>`0a`</td></tr><tr><td>0</td><td>0 = 0 → `00`</td><td>`00`</td></tr><tr><td>0</td><td>0 = 0 → `00`</td><td>`00`</td></tr><tr><td>1</td><td>1 / 16 = 0 Rest 1 → `01`</td><td>`01`</td></tr></tbody></table>

**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>`

- `01` = Sub-Option 1 (Controller-IP)
- `04` = Länge (4 Byte)
- `0a:00:00:01` = die vier Hex-Bytes von oben

```
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:

```bash
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

<table id="bkmrk-dez-hex-dez-hex-dez-"><thead><tr><th>Dez</th><th>Hex</th><th>Dez</th><th>Hex</th><th>Dez</th><th>Hex</th><th>Dez</th><th>Hex</th></tr></thead><tbody><tr><td>0</td><td>00</td><td>16</td><td>10</td><td>128</td><td>80</td><td>240</td><td>f0</td></tr><tr><td>1</td><td>01</td><td>32</td><td>20</td><td>144</td><td>90</td><td>241</td><td>f1</td></tr><tr><td>2</td><td>02</td><td>64</td><td>40</td><td>160</td><td>a0</td><td>250</td><td>fa</td></tr><tr><td>3</td><td>03</td><td>100</td><td>64</td><td>176</td><td>b0</td><td>255</td><td>ff</td></tr></tbody></table>

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.

<div class="callout warning" id="bkmrk-achtung%3A-ein-user-mi">**Achtung:** Ein User mit UID 0 ist root-equivalent. Nur auf eigenen Geräten nutzen und SSH nicht offen ins Internet hängen.</div>### 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

- `/tmp/system.cfg` ist die Arbeitskopie der Geräte-Konfiguration.
- `cfgmtd -f /tmp/system.cfg -r` liest die Config aus dem Flash.
- `cfgmtd -f /tmp/system.cfg -w` schreibt die geänderte Config zurück in den Flash.
- `save` reicht hierfür nicht zuverlässig aus.
- Wenn der AP später wieder von einem UniFi Controller provisioniert wird, kann der Controller diese lokalen Änderungen überschreiben.
- Für mehrere User weitere Slots wie `users.3`, `users.4` usw. verwenden.

# USW-Pro Switch - SSH Observation

# Commands

## `<span class="editor-theme-code">cli</span>`

`<span class="editor-theme-code">cli</span>`<span style="white-space: pre-wrap;"> öffnet die </span>****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:

- VLANs
- Ports
- Trunks
- Layer-2/teilweise Layer-3
- laufende Switch-Konfiguration

<span style="white-space: pre-wrap;">Das Problem: Diese CLI verwaltet hauptsächlich den </span>****laufenden FastPath-Zustand****<span style="white-space: pre-wrap;">. </span>`<span class="editor-theme-code">write memory</span>`<span style="white-space: pre-wrap;"> meldet zwar Erfolg, aber die UniFi-Firmware baut FastPath beim Start wieder aus </span>`<span class="editor-theme-code">/tmp/system.cfg</span>`<span style="white-space: pre-wrap;"> beziehungsweise der von </span>`<span class="editor-theme-code">ubntconf</span>`<span style="white-space: pre-wrap;"> erzeugten Startup-Konfiguration auf. Deshalb verschwinden die Änderungen nach einem Reboot.</span>

---

## `<span class="editor-theme-code">mca-cli-op</span>`

`<span class="editor-theme-code">mca-cli-op</span>`<span style="white-space: pre-wrap;"> gehört zur </span>****UniFi-Management-Ebene****.

Auf deinem Switch ist es nur ein Symlink:

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

<span style="white-space: pre-wrap;">Es startet also das Programm </span>`<span class="editor-theme-code">mcad</span>`<span style="white-space: pre-wrap;"> in einem speziellen Betriebsmodus.</span>

`<span class="editor-theme-code">mcad</span>`<span style="white-space: pre-wrap;"> kümmert sich um Dinge wie:</span>

- Adoption
- Controller-Kommunikation
- Inform-Nachrichten
- Provisionierung
- Managementstatus
- Werksreset
- Speichern und Laden von UniFi-Konfiguration
- `<span class="editor-theme-code">mgmt.is_default</span>`
- `<span class="editor-theme-code">mgmt.is_setup_completed</span>`

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
```

<span style="white-space: pre-wrap;">Der Firmware-Wrapper ruft solche Befehle selbst auf. </span>`<span class="editor-theme-code">set-inform</span>`<span style="white-space: pre-wrap;"> wird beispielsweise direkt an </span>`<span class="editor-theme-code">mca-cli-op</span>`<span style="white-space: pre-wrap;"> weitergereicht, während </span>`<span class="editor-theme-code">set-default</span>`<span style="white-space: pre-wrap;"> einen Werksreset einleitet.</span>

Ohne Argument:

```
mca-cli-op
```

öffnet es die interaktive Management-CLI:

```
UniFi#
```

<span style="white-space: pre-wrap;">Das ist </span>****keine Linux-Shell****<span style="white-space: pre-wrap;"> und auch nicht dieselbe CLI wie </span>`<span class="editor-theme-code">cli</span>`<span style="white-space: pre-wrap;">. Deshalb kennt sie kein </span>`<span class="editor-theme-code">echo</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">awk</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">find</span>`<span style="white-space: pre-wrap;"> oder Shell-Pipes.</span>

## 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
```

```

```

---

## `<span class="editor-theme-code">swctrl</span>`

`<span class="editor-theme-code">swctrl</span>`<span style="white-space: pre-wrap;"> ist eine interne </span>****UniFi-Switch-Control-Utility****<span style="white-space: pre-wrap;">. Auf dem getesteten </span>`<span class="editor-theme-code">USW-Pro-48-US.7.5.6</span>`<span style="white-space: pre-wrap;"> meldet sie sich als Version </span>`<span class="editor-theme-code">0.9</span>`. Sie liest hardwarenahe Switch-Zustände aus und enthält außerdem einige direkt verändernde Funktionen.

<span style="white-space: pre-wrap;">Sie ist weder die Cisco-ähnliche </span>`<span class="editor-theme-code">cli</span>`<span style="white-space: pre-wrap;"> noch die UniFi-Management-CLI </span>`<span class="editor-theme-code">mca-cli-op</span>`<span style="white-space: pre-wrap;">. </span>`<span class="editor-theme-code">swctrl</span>`<span style="white-space: pre-wrap;"> arbeitet näher an der laufenden Switch- und Hardware-Ebene. Änderungen sind deshalb nicht automatisch eine dauerhaft vom Controller verwaltete Konfiguration.</span>

### Aufruf und Optionen

```
swctrl FUNCTION
swctrl [OPTIONS]
```

Auf diesem Firmware-Build werden folgende globale Optionen angezeigt:

- `<span class="editor-theme-code">-h</span>`<span style="white-space: pre-wrap;"> zeigt die allgemeine Hilfe.</span>
- `<span class="editor-theme-code">-v</span>`<span style="white-space: pre-wrap;"> aktiviert eine ausführlichere Ausgabe, sofern die aufgerufene Funktion zusätzliche Details bereitstellt.</span>

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

<span style="white-space: pre-wrap;">Die Hilfe von Firmware </span>`<span class="editor-theme-code">7.5.6</span>`<span style="white-space: pre-wrap;"> nennt diese Funktionsgruppen:</span>

- `<span class="editor-theme-code">port</span>`<span style="white-space: pre-wrap;"> – Portstatus, Linkzustand, Geschwindigkeit, Zähler und modellabhängige Portoperationen.</span>
- `<span class="editor-theme-code">poe</span>`<span style="white-space: pre-wrap;"> – PoE-Status und modellabhängige PoE-Steuerung. Die Funktionsgruppe kann auch auf Geräten ohne PoE im gemeinsamen Firmware-Binary vorhanden sein.</span>
- `<span class="editor-theme-code">env</span>`<span style="white-space: pre-wrap;"> – Umgebungs- und Hardwarewerte, beispielsweise Temperatursensoren und vorhandene Lüfterinformationen.</span>
- `<span class="editor-theme-code">mac</span>`<span style="white-space: pre-wrap;"> – gelernte MAC-/Client-Einträge sowie Block- und eine in der Hilfe genannte </span>`<span class="editor-theme-code">white</span>`-Funktionsgruppe.
- `<span class="editor-theme-code">sfp</span>`<span style="white-space: pre-wrap;"> – Status und Diagnosedaten vorhandener SFP-/SFP+-Module.</span>
- `<span class="editor-theme-code">led</span>`<span style="white-space: pre-wrap;"> – modellabhängige LED-Funktionen.</span>
- `<span class="editor-theme-code">vlan</span>`<span style="white-space: pre-wrap;"> – interne VLAN-bezogene Abfragen oder Operationen; die genaue Syntax muss mit </span>`<span class="editor-theme-code">swctrl vlan</span>`<span style="white-space: pre-wrap;"> auf dem jeweiligen Build geprüft werden.</span>
- `<span class="editor-theme-code">lldp</span>`<span style="white-space: pre-wrap;"> – LLDP-bezogene Status- und Nachbarinformationen.</span>
- `<span class="editor-theme-code">relay</span>`<span style="white-space: pre-wrap;"> – eine auf diesem Build vorhandene, aber durch die allgemeine Hilfe nicht näher erklärte Funktionsgruppe. Bedeutung und Unterbefehle müssen mit </span>`<span class="editor-theme-code">swctrl relay</span>`<span style="white-space: pre-wrap;"> geprüft werden.</span>

****Wichtig:****<span style="white-space: pre-wrap;"> Eine aufgelistete Funktionsgruppe bedeutet nicht automatisch, dass die Hardware sie unterstützt oder dass jeder Unterbefehl auf jedem Switch identisch ist. </span>`<span class="editor-theme-code">swctrl</span>`<span style="white-space: pre-wrap;"> ist stark firmware- und modellabhängig.</span>

### Typische lesende Diagnosebefehle

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

`<span class="editor-theme-code">port show</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">port show counters</span>`<span style="white-space: pre-wrap;"> und </span>`<span class="editor-theme-code">mac show</span>`<span style="white-space: pre-wrap;"> eignen sich besonders für Live-Diagnose, weil sie den aktuellen Zustand anzeigen und selbst keine Konfiguration ändern.</span>

### <span style="white-space: pre-wrap;">Hinweis zu </span>`<span class="editor-theme-code">poe</span>`

<span style="white-space: pre-wrap;">Der getestete </span>`<span class="editor-theme-code">USW-Pro-48</span>`<span style="white-space: pre-wrap;"> ist die Variante ohne PoE. Trotzdem kann </span>`<span class="editor-theme-code">swctrl poe show</span>`<span style="white-space: pre-wrap;"> vorhanden sein, weil dieselbe Utility auf mehreren Switch-Modellen verwendet wird.</span>

<span style="white-space: pre-wrap;">Eine leere Tabelle oder ein offensichtlich unsinniger Wert wie </span>`<span class="editor-theme-code">Total Power Limit(mW): -1091736708</span>`<span style="white-space: pre-wrap;"> ist </span>****kein gültiger Leistungswert****<span style="white-space: pre-wrap;"> und kein verlässlicher Modelltest. Solche Ausgaben müssen als nicht unterstützte, fehlerhafte oder nicht initialisierte PoE-Abfrage behandelt werden.</span>

### `<span class="editor-theme-code">mac</span>`

`<span class="editor-theme-code">swctrl mac</span>`<span style="white-space: pre-wrap;"> bündelt die MAC-/Client-Funktionen der laufenden Switch-Ebene. Auf Firmware </span>`<span class="editor-theme-code">7.5.6</span>`<span style="white-space: pre-wrap;"> zeigt die Hilfe folgende Bereiche:</span>

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

`<span class="editor-theme-code">PORT_ID</span>`<span style="white-space: pre-wrap;"> darf einzelne Ports, Bereiche und kombinierte Listen enthalten:</span>

```
3
5-7
1,4,9-12
```

#### `<span class="editor-theme-code">mac show</span>`

`<span class="editor-theme-code">swctrl mac show</span>`<span style="white-space: pre-wrap;"> zeigt die vom Switch erfassten MAC-/Client-Einträge über alle Ports. Mit </span>`<span class="editor-theme-code">id</span>`<span style="white-space: pre-wrap;"> lässt sich die Ausgabe auf bestimmte Ports begrenzen:</span>

```
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:

- `<span class="editor-theme-code">port</span>`<span style="white-space: pre-wrap;"> – Port, an dem die MAC-Adresse gelernt beziehungsweise dem Client-Eintrag zugeordnet wurde.</span>
- `<span class="editor-theme-code">vlan</span>`<span style="white-space: pre-wrap;"> – VLAN-ID des Eintrags.</span>
- `<span class="editor-theme-code">mac-address</span>`<span style="white-space: pre-wrap;"> – erkannte MAC-Adresse.</span>
- `<span class="editor-theme-code">ip-address</span>`<span style="white-space: pre-wrap;"> – zugeordnete IP-Adresse, sofern sie der Management-Software bekannt ist.</span>
- `<span class="editor-theme-code">hostname</span>`<span style="white-space: pre-wrap;"> – erkannter Hostname, sofern vorhanden.</span>
- `<span class="editor-theme-code">uptime</span>`<span style="white-space: pre-wrap;"> – interner Laufzeitwert des Eintrags. Die Hilfe definiert seine genaue Bedeutung nicht; er sollte nicht ungeprüft als Geräte-Uptime bezeichnet werden.</span>
- `<span class="editor-theme-code">age</span>`<span style="white-space: pre-wrap;"> – interner Alterswert, wahrscheinlich seit der letzten Aktualisierung oder Aktivität. Auch diese Einheit und Semantik wird von der Hilfe nicht erklärt.</span>
- `<span class="editor-theme-code">wireless-type</span>`<span style="white-space: pre-wrap;"> – optionale WLAN-/Client-Klassifizierung; bei rein kabelgebunden erkannten Einträgen bleibt das Feld häufig leer.</span>

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.

<span style="white-space: pre-wrap;">Mehrere MAC-Adressen auf demselben Port sind bei einem Uplink, einem nachgeschalteten Switch, einem Access Point, einer Bridge oder einem virtualisierten Host normal. Beim </span>`<span class="editor-theme-code">USW-Pro-48</span>`<span style="white-space: pre-wrap;"> sind neben 48 RJ45-Ports vier SFP+-Ports vorhanden. Ein Eintrag auf Port </span>`<span class="editor-theme-code">52</span>`<span style="white-space: pre-wrap;"> passt daher zum letzten SFP+-Port; die konkrete Portzuordnung sollte trotzdem mit </span>`<span class="editor-theme-code">swctrl port show</span>`<span style="white-space: pre-wrap;"> geprüft werden.</span>

#### `<span class="editor-theme-code">mac block</span>`

`<span class="editor-theme-code">mac block</span>`<span style="white-space: pre-wrap;"> verwaltet auf diesem Firmware-Build eine interne Blockliste. Die knappe Unterhilfe zeigt nur </span>`<span class="editor-theme-code">show</span>`<span style="white-space: pre-wrap;"> an, tatsächlich wurden aber auch </span>`<span class="editor-theme-code">add</span>`<span style="white-space: pre-wrap;"> und </span>`<span class="editor-theme-code">remove</span>`<span style="white-space: pre-wrap;"> erfolgreich vom Parser akzeptiert.</span>

```
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
```

- `<span class="editor-theme-code">show</span>`<span style="white-space: pre-wrap;"> zeigt die aktuell eingetragenen MAC-Adressen und den zuletzt zugeordneten Port.</span>
- `<span class="editor-theme-code">add MAC</span>`<span style="white-space: pre-wrap;"> fügt die angegebene MAC-Adresse zur internen Blockliste hinzu.</span>
- `<span class="editor-theme-code">remove MAC</span>`<span style="white-space: pre-wrap;"> entfernt die MAC-Adresse wieder aus der Blockliste.</span>
- `<span class="editor-theme-code">lastUpdated</span>`<span style="white-space: pre-wrap;"> ist ein interner Zähler beziehungsweise Zeitwert. Die Ausgabe belegt nicht, dass es sich um einen Unix-Zeitstempel oder eine bestimmte Zeiteinheit handelt.</span>

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
```

<span style="white-space: pre-wrap;">Ein Aufruf wie </span>`<span class="editor-theme-code">swctrl mac block add</span>`<span style="white-space: pre-wrap;"> 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 </span>`<span class="editor-theme-code">swctrl mac block show</span>`<span style="white-space: pre-wrap;"> geprüft werden.</span>

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.

#### `<span class="editor-theme-code">mac white</span>`

`<span class="editor-theme-code">swctrl mac white</span>`<span style="white-space: pre-wrap;"> 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.</span>

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.

<span style="white-space: pre-wrap;">Direkte Änderungen über </span>`<span class="editor-theme-code">swctrl</span>`<span style="white-space: pre-wrap;"> sollten grundsätzlich als firmwareabhängige Laufzeitoperationen behandelt werden. Sie können nach Reboot, Firmware-Update oder erneuter Provisionierung verschwinden oder überschrieben werden.</span>

### 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
```

<span style="white-space: pre-wrap;">Damit ist </span>`<span class="editor-theme-code">swctrl</span>`<span style="white-space: pre-wrap;"> 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.</span>

# 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 `<span class="editor-theme-code">vlan database</span>`, `<span class="editor-theme-code">configure</span>`, `<span class="editor-theme-code">switchport mode access</span>` und `<span class="editor-theme-code">switchport mode trunk</span>` 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](#bkmrk-1.-grundlagen)
- [2. VLAN-Planung](#bkmrk-2.-vlan-planung)
- [3. Vorbereitung und Sicherung](#bkmrk-3.-vorbereitung-und-)
- [4. SSH und CLI öffnen](#bkmrk-4.-ssh-und-cli-%C3%B6ffne)
- [5. Mehrere VLANs erstellen](#bkmrk-5.-mehrere-vlans-ers)
- [6. Access-Port konfigurieren](#bkmrk-6.-access-port-konfi)
- [7. Trunk-Port konfigurieren](#bkmrk-7.-trunk-port-konfig)
- [8. Typische Anschlussszenarien](#bkmrk-8.-typische-anschlus)
- [9. Konfiguration prüfen](#bkmrk-9.-konfiguration-pr%C3%BC)
- [10. Änderungen speichern](#bkmrk-10.-%C3%84nderungen-speic)
- [11. Rückbau und Notfallplan](#bkmrk-11.-r%C3%BCckbau-und-notf)
- [12. Häufige Fehler](#bkmrk-12.-h%C3%A4ufige-fehler)
- [13. Entsprechung in UniFi Network](#bkmrk-13.-entsprechung-in-)
- [14. Kurzreferenz](#bkmrk-14.-kurzreferenz)
- [15. Quellen](#bkmrk-15.-quellen-und-weit)

## 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.

<table id="bkmrk-begriffbedeutungvlan"><colgroup><col></col><col></col></colgroup><tbody><tr><th>Begriff

</th><th>Bedeutung

</th></tr><tr><td>**VLAN-ID / VID**

</td><td>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.

</td></tr><tr><td>**Untagged / unmarkiert**

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

</td></tr><tr><td>**Tagged / markiert**

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

</td></tr><tr><td>**Access-Port**

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

</td></tr><tr><td>**Trunk-Port**

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

</td></tr><tr><td>**Native VLAN / PVID**

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

</td></tr><tr><td>**Allowed VLANs**

</td><td>Liste der VLANs, die über einen Trunk transportiert werden dürfen.

</td></tr></tbody></table>

**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:

<table id="bkmrk-vlan-idnamebeispielz"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><th>VLAN-ID

</th><th>Name

</th><th>Beispielzweck

</th><th>Gateway/DHCP

</th></tr><tr><td>10

</td><td>Management

</td><td>Switches, Access Points, Verwaltungszugänge

</td><td>Auf Router/Firewall konfigurieren

</td></tr><tr><td>110

</td><td>Clients

</td><td>Arbeitsplätze und normale Endgeräte

</td><td>Auf Router/Firewall konfigurieren

</td></tr><tr><td>120

</td><td>Voice

</td><td>VoIP-Telefone

</td><td>Auf Router/Firewall konfigurieren

</td></tr><tr><td>130

</td><td>Guest

</td><td>Gäste oder isolierte Geräte

</td><td>Auf Router/Firewall konfigurieren

</td></tr></tbody></table>

Beispielhafter Portplan:

<table id="bkmrk-portrollenative%2Funta"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><th>Port

</th><th>Rolle

</th><th>Native/Untagged

</th><th>Tagged

</th></tr><tr><td>0/5

</td><td>Access-Port für Client

</td><td>VLAN 110

</td><td>keine

</td></tr><tr><td>0/12

</td><td>Access-Port für Telefon oder Endgerät

</td><td>VLAN 120

</td><td>keine

</td></tr><tr><td>0/24

</td><td>Access Point

</td><td>VLAN 10

</td><td>VLAN 110 und 130

</td></tr><tr><td>0/48

</td><td>Uplink zu Router oder weiterem Switch

</td><td>VLAN 10

</td><td>VLAN 110, 120 und 130

</td></tr></tbody></table>

**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

- Nicht zuerst den Port ändern, über den die aktuelle SSH-Sitzung läuft.
- Wenn möglich einen zweiten Verwaltungsweg, Konsolenzugang oder einen unveränderten Management-Port bereithalten.
- Uplink und Management-VLAN erst ändern, nachdem Access- und Trunk-Konzept auf beiden Seiten feststehen.
- Bei entfernten Standorten eine Rückfallmöglichkeit vor Ort einplanen. Ein falsches Native VLAN ist ein sehr effizienter Weg, sich selbst auszusperren.

### 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 `<span class="editor-theme-code">show</span>`-Befehl ist kein Anlass, kreativ schreibende Befehle auszuprobieren; stattdessen mit `<span class="editor-theme-code">show ?</span>` 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 `<span class="editor-theme-code">cli</span>` nicht erforderlich.

### 4.3 Syntax vorab prüfen

```
?
vlan database ?
configure
interface ?
exit
```

**Abbruchkriterium**  
Fehlen `<span class="editor-theme-code">vlan database</span>`, `<span class="editor-theme-code">switchport mode access</span>` oder `<span class="editor-theme-code">switchport mode trunk</span>` 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 `<span class="editor-theme-code">vlan 10,110,120,130</span>` 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 `<span class="editor-theme-code">interface ?</span>` 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
```

**`<strong class="editor-theme-bold editor-theme-code">add</strong>` und vollständige Liste nicht verwechseln**  
`<span class="editor-theme-code">switchport trunk allowed vlan add ...</span>` ergänzt die vorhandene Liste. Der Befehl ohne `<span class="editor-theme-code">add</span>` kann die bisherige Liste ersetzen. Vorher `<span class="editor-theme-code">show interfaces switchport trunk <port></span>` 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.

### 8.3 Uplink zu einem Router oder einer Firewall

```
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:

<table id="bkmrk-vlanrouterfunktion10"><colgroup><col></col><col></col></colgroup><tbody><tr><th>VLAN

</th><th>Routerfunktion

</th></tr><tr><td>10

</td><td>Management-Gateway und optional DHCP

</td></tr><tr><td>110

</td><td>Client-Gateway, DHCP und Firewallregeln

</td></tr><tr><td>120

</td><td>Voice-Gateway, DHCP-Optionen und QoS nach Bedarf

</td></tr><tr><td>130

</td><td>Gast-Gateway, DHCP und restriktive Firewallregeln

</td></tr></tbody></table>

### 8.4 Uplink zwischen zwei Switches

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:

- `<span class="editor-theme-code">write memory ?</span>` beziehungsweise `<span class="editor-theme-code">copy ?</span>` zuerst prüfen.
- Keine undokumentierten Flash-, `<span class="editor-theme-code">cfgmtd</span>`- oder Dateisystembefehle aus fremden Anleitungen übernehmen.
- Nach einem geplanten Neustart alle VLANs und Ports erneut kontrollieren.
- Bei controllerverwalteten UniFi-Switches die dauerhafte Konfiguration in UniFi Network nachbauen.

## 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

<table id="bkmrk-symptomwahrscheinlic"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th>Symptom

</th><th>Wahrscheinliche Ursache

</th><th>Prüfung

</th></tr><tr><td>Access-Client erhält keine IP-Adresse

</td><td>VLAN fehlt auf Uplink, DHCP fehlt oder Access-VLAN ist falsch

</td><td>`<span class="editor-theme-code">show vlan brief</span>`

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

</td></tr><tr><td>Ein VLAN funktioniert, andere nicht

</td><td>Allowed-VLAN-Liste auf einem Trunk ist unvollständig

</td><td>Jeden Port entlang des Pfades prüfen

</td></tr><tr><td>Switch nach Änderung nicht mehr erreichbar

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

</td><td>Konsole oder unveränderten Port verwenden

</td></tr><tr><td>AP ist erreichbar, WLAN-Clients bekommen keine Adresse

</td><td>SSID-VLAN nicht getaggt erlaubt oder fälschlich als Native VLAN gesetzt

</td><td>AP-Uplink und alle vorgelagerten Trunks prüfen

</td></tr><tr><td>Änderungen verschwinden nach Neustart

</td><td>Running-Config nicht gespeichert oder UniFi hat neu provisioniert

</td><td>Startup-/Persistenzmethode des konkreten Modells prüfen

</td></tr><tr><td>Unerwartete Kommunikation zwischen VLANs

</td><td>Router-/Firewallregeln erlauben Inter-VLAN-Verkehr

</td><td>Routing- und Firewallregeln prüfen; VLAN allein ist keine Firewall

</td></tr><tr><td>Nur ungetaggter Verkehr funktioniert

</td><td>Gegenstelle ist nicht VLAN-fähig oder Tags stimmen nicht überein

</td><td>VLAN-Konfiguration auf beiden Linkseiten vergleichen

</td></tr><tr><td>Broadcast-Sturm oder instabiles Netz

</td><td>Switching-Schleife oder falscher redundanter Link

</td><td>STP/RSTP aktiv lassen und Topologie kontrollieren

</td></tr></tbody></table>

## 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:

<table id="bkmrk-ssh-%2Fswitchbegriffun"><colgroup><col></col><col></col></colgroup><tbody><tr><th>SSH-/Switchbegriff

</th><th>UniFi-Network-Einstellung

</th></tr><tr><td>Access-Port, VLAN 110

</td><td>Native VLAN / Network: VLAN 110; Tagged VLAN Management: Block All

</td></tr><tr><td>Trunk mit allen VLANs

</td><td>Native VLAN auswählen; Tagged VLAN Management: Allow All

</td></tr><tr><td>Trunk mit ausgewählten VLANs

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

</td></tr><tr><td>`<span class="editor-theme-code">switchport trunk native vlan 10</span>`

</td><td>Native VLAN / Network: VLAN 10

</td></tr><tr><td>`<span class="editor-theme-code">switchport trunk allowed vlan ...</span>`

</td><td>Tagged VLAN Management: Custom

</td></tr></tbody></table>

## 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

- [Ubiquiti Help Center: Switch Port VLAN Assignment (Trunk &amp; Access Ports)](https://help.ui.com/hc/en-us/articles/26136855808919-Switch-Port-VLAN-Assignment-Trunk-Access-Ports)
- [Ubiquiti Help Center: Creating Virtual Networks (VLANs)](https://help.ui.com/hc/en-us/articles/9761080275607-Creating-Virtual-Networks-VLANs)
- [Ubiquiti Help Center: Virtual Network (VLAN) Troubleshooting](https://help.ui.com/hc/en-us/articles/9592924981911-Virtual-Network-VLAN-Troubleshooting)
- [Ubiquiti Help Center: UniFi Switch Settings](https://help.ui.com/hc/en-us/articles/33402927617047-UniFi-Switch-Settings)
- [UISP Help Center: EdgeSwitch CLI Reference Guide](https://help.uisp.com/hc/en-us/articles/22591720570135-EdgeSwitch-CLI-Reference-Guide)

---

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

# SSH - poe show

```bash
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# 

```

# SSH - Port Counter

```bash
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:

```bash
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
```

```bash
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

# 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 `<span class="editor-theme-code">quarantine-client apply</span>` erneut angewendet werden.

<details id="bkmrk-installationinstalla"><summary>Installation</summary>

## Installation

Die Installation erfolgt als `<span class="editor-theme-code">root</span>` direkt per SSH auf dem UniFi Gateway. Das Skript und seine Konfiguration werden unter `<span class="editor-theme-code">/persistent/client-quarantine</span>` 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.

</details><details id="bkmrk-nutzungnutzungmac-ad"><summary>Nutzung</summary>

## 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 `<span class="editor-theme-code">--force</span>` ü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
```

</details><details id="bkmrk-quarant%C3%A4ne-system-vo"><summary>Quarantäne-System vollständig entfernen</summary>

## 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.
```

</details>## 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
```