Posts Tagged ‘Ubiquiti’

Donnerstag, 31. Mai 2018

Init7 TV7: Installation mit einem Ubiquiti Edgerouter X SFP

(Folgeartikel zum Artikel Init7 TV7: Installation mit einem Turris Omnia-Router)

An einem Zweitstandort betreibe ich einen Ubiquiti Edgerouter X SFP (Firmware v1.10.0) mit einem offiziellen FlexOptix-Transceiver von Fiber7. Damit dieser Router IPTV-Multicast ins LAN weiterleitet, waren folgende Anpassungen an der Konfiguration nötig (hat mich 90 Minuten meines Lebens gekostet):

Firewall

Auf rudimentärem Deutsch: Lasse IGMP sowie Multicast UDP durch die Firewall gegen das Internet

...
firewall {
    ...
    name WAN_IN {
        ...
        rule 4 {
            action accept
            description "Allow IGMP (max)"
            log disable
            protocol igmp
        }
        rule 5 {
            action accept
            description "Allow Multicast"
            destination {
                address 224.0.0.0/4
            }
            log disable
        }
    }
    name WAN_LOCAL {
        ...
        rule 4 {
            action accept
            description "Allow IGMP"
            log disable
            protocol igmp
        }
        ...
    }
    ...
}
...

IGMP Proxy

Auf rudimentärem Deutsch: Empfange IGMP-Traffic aus dem Internet und leite ihn in das LAN weiter.

...
protocols {
    igmp-proxy {
        interface switch0 {
            alt-subnet 0.0.0.0/0
            role downstream
            threshold 1
        }
        interface eth5 {
            alt-subnet 0.0.0.0/0
            role upstream
            threshold 1
        }
    }
    ...
}

Multicast-Status abfragen

Um zu überprüfen, ob Multicast grundsätzlich funktioniert, loggt man sich per SSH auf den Router ein und gibt im CLI folgende Befehle ein:

$ show ip multicast interfaces 
Intf             BytesIn        PktsIn      BytesOut       PktsOut            Local
switch0            0.00b             0       31.17MB         24316        Y.Y.Y.1
eth5             31.17MB         24316         0.00b             0   X.X.X.X
$ show ip multicast mfc
Group           Origin           In          Out                Pkts         Bytes  Wrong
239.254.127.63  Y.Y.Y.5        eth5        switch0               1       116.00b      1
239.255.255.250 Y.Y.Y.50       eth5        switch0              56       17.61KB     56
239.77.3.21     77.109.129.16    eth5        switch0           37379       47.91MB      0

Die letzte Zeile war das Resultat, dass ich probehalber Dracula Untold auf Film 4 geschaut habe …

Nachtrag 1: Stream friert ein

Nach der Installation der TV7-App auf dem Apple TV (eigener Blog-Artikel zur App) musste ich entdecken, dass das Bild eines TV-Senders jeweils nach etwas mehr als 3 Minuten einfror (ich tippte nach mehreren Messungen auf ein Timeout von 200 Sekunden — und somit ein strukturelles Problem).

Recht schnell realisierte ich nach etwas Googlen, dass die Firewall-Regel 4 unter WLAN_LOCAL zwingend auch aktiviert werden muss. Diese hatte ich ursprünglich als überflüssig erachtet. Mein Fehler.

Meine Vermutung als IPTV-Laie: Diese (zusätzliche) Regel erlaubt ausgehende IGMP-Pakete. Wenn diese nicht an TV7 gesendet werden können (Heartbeat?), stellt TV7 den Multicast wieder ein. Sobald die Firewall-Rule aktiviert wurde, entfror sich das Bild und die Sendung lief weiter.

Nachtrag 2: Multicast flutet das Netzwerk

Obwohl die Streams nun auf dem Apple TV mit der offiziellen App problemlos laufen, habe ich einen schwerwiegenden Nachteil entdeckt, welcher bei meinem Turris Omnia nicht auftritt: Schaut man mit dem Apple TV einen TV7-Stream, wird das ganze LAN mit Multicast-Paketen geflutet. Dies beeinflusst meinen UniFi Access Point besonders, konnte ich doch einen spürbaren Lag zwischen Tastendruck und Anzeige des Buchstabens auf dem Bildschirm feststellen, wenn ich von meinem MacBook per WLAN per SSH auf einem Laptop im LAN verbunden war.

In meiner derzeitigen Konfiguration sendet der Edgerouter den eingehenden Multicast-Traffic an alle LAN-Interfaces weiter, die am switch0 hängen. Leider habe ich bis jetzt noch keine Lösung gefunden, wie man das auf einzelne Ports einschränken kann (ich brauche eigentlich nur den Apple TV- sowie den Laptop-Port, auf welchem udpxy läuft) respektive wie man IGMP-Snooping aktivieren kann, damit der Edgerouter selber realisiert, welches Gerät/welche Geräte im Netzwerk aktuell gerade Multicast-Streams abspielen möchte.

Links

Tags: , , , , , , , , , , ,
Labels: IT, Linux, Medien, Schweiz

4 Kommentare | neuen Kommentar verfassen

Samstag, 14. April 2018

Ein Backup oder eine alte Version einer Ubiquiti Edgerouter-Konfiguration einspielen

Ich habe bei Bekannten derzeit je ein Ubiquiti Edgerouter X in Betrieb, welche als Router an einem Kabelmodem angeschlossen sind.

Die Router habe ich so konfiguriert, dass sie bei jeder Aktualisierung der Konfiguration über das Web-GUI resp. das CLI ein Backup der vorherigen Konfiguration per TFTP auf einen Linux-Laptop im lokalen Netz ablegen. Dies mit der folgenden Konfiguration:

...
system {
    config-management {
        commit-archive {
            location tftp://10.1.2.3/
        }
        commit-revisions 10
    }
...
}
...

Gestern trat der Notfall ein, dass ich einen der Router komplett zurücksetzen musste und danach eine ältere Version der Konfiguration einspielen wollte.

Dies ist recht trivial: Auf dem Linux-Laptop, auf welchem die Konfiguration versioniert ist, kopiert man das Backup folgendermassen auf den auf Fabrikzustand zurückgesetzten Router:

$ scp config.boot-ROUTER.20180413_133604 ubnt@10.1.2.1:/config

Das Kennwort lautet ubnt und sollte in der so übermittelten Konfiguration zwingend angepasst werden.

Anschliessend verbindet man sich per SSH mit dem Router und führt folgende Befehle aus (compare ist nicht nötig, zeigt aber schön auf, welche Anpassungen zur derzeit aktiven Konfiguration vorgenommen werden):

$ configure
$ load /config/config.boot-ROUTER.20180413_133604
$ commit
[$ compare]
$ save

Quelle: Re: Swap X-SFP to Pro8 – can we upload config.boot from X-SFP?

Siehe auch: EdgeRouter – Archiving and Managing the Configuration Files — Saving and Loading Backup Configurations

Tags: , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 22. März 2018

Ubiquiti Edgerouter und DynDNS hinter einem doppelten NAT

Kürzlich musste ich einen Ubiquiti Edgerouter ER-X temporär hinter einem doppelten NAT betreiben (dass das nicht optimal sein kann, weiss ja wohl jeder).

Obwohl DynDNS auf dem Edgerouter konfiguriert war, um den statischen Hostnamen mit der jeweils aktuellen dynamischen IP anzupassen, funktionierte dies in einer solchen Konfiguration nicht mehr: Der Router meldete seine private IP-Adresse (192.168.0.X) am WAN-Port an DynDNS, was natürlich nicht funktionieren kann.

Damit der Edgerouter in solchen Situationen zuverlässig die öffentliche IP-Adresse des Anschlusses verwendet, muss über das GUI unter Config Tree > service > dns > dynamic > interface > eth0 des Routers das Attribut web mit dem Wert dyndns ergänzt werden:

Damit ist sichergestellt, dass der Router nicht die IP seines eth0-Interfaces zurückmeldet, sondern über den Web-Service von DynDNS seine öffentliche IP anfragt.

Wer das CLI bevorzugt:

$ configure
# set service dns dynamic interface eth0 web dyndns
# commit
# save

Quelle: Dynamic DNS behind double NAT?

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Freitag, 20. Oktober 2017

Ubiquiti hat seine Produkte gegen KRACK bereits gepatcht

More to the point, measure your current vendors by how long it takes them to patch. Throw away gear by those vendors that took a long time to patch and replace it with vendors that took a short time.

Quelle: Some notes on the KRACK attack

Im Januar 2016 habe ich meinen ersten Ubiquiti UniFi-Access Point gekauft und bin seither hell begeistert von den Produkten — bei mir kommt nur noch UniFi ins Haus, wenn es um die Versorgung eines Gebäudes mit WLAN geht. Mittlerweile habe ich solche Access Points an drei Standorten ausgerollt.

Als die Kunde von KRACK an die Öffentlichkeit gelangte, hatte ich die Hoffnung, dass Ubiquiti äusserst rasch reagieren würde.

Und das taten sie auch: Innert 24 Stunden standen aktualisierte Firmware-Dateien für die gesamte Produktepalette zum Download und zur manuellen Installation bereit.

Als ich mich heute auf den Controllern an den drei Standorten einloggte dann die frohe Botschaft im GUI des Controllers: Für alle meine Access Points stand Firmware 3.9.3.7537 zur automatisierten Installation bereit.

Das Bauchgefühl hat sich somit als richtig erwiesen: Der Hersteller baut nicht nur tolle Produkte, die man nie mehr hergeben möchte, sondern nimmt auch die Sicherheit seiner Software ernst und aktualisiert diese schnurstracks. Nach knapp zwei Minuten war das Upgrade vorüber und die Access Point frisch gegen KRACK gesichert.

Ubiquiti erhält das Sicherheits-Gütesiegel von mir. Wer es noch nicht getan hat: Kaufen!

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 7. Mai 2017

Ein Gästenetzwerk auf dem Ubiquiti EdgeRouter-X vom restlichen Netzwerk isolieren

Heute habe ich meinen ersten EdgeRouter-X in Betrieb genommen. Die Konfiguration war etwas gewöhnungsbedürftig, aber im Zusammenspiel mit Web-GUI und CLI hat es tatsächlich geklappt. Am meisten schätze ich, dass die Konfiguration des Routers eine simple Text-Datei ist, die man mit Subversion (oder: Git) versionieren kann und bei Bedarf mit ein paar Handgriffen für neue Umgebungen oder zusätzliche Installationen anpassen kann.

Da solche Ubiquiti-Geräte semi-professionelle Router und Switches sind, habe ich heute auch einen lang ersehnten Spezialfall umgesetzt: Am Installationsort teilen sich Vermieter und Mieter einen Internetanschluss. Der Vermieter möchte dabei aber dem Mieter aber eigentlich nur den Internetzugang ermöglichen und ihn aus dem heimischen LAN heraushalten.

Dies ist nicht sonderlich kompliziert, da der Mieter ein Ethernet-Kabel vom Router auf seinen Switch gezogen hat — es muss also einfach ein Faden geschützt werden.

Mit WLAN stellt man dies mit einer zweiten SSID sicher, die im UniFi-Controller als Gästenetzwerk konfiguriert wird. Auf Ethernet-Ebene ist es etwas komplizierter. Doch freundlicherweise hat sich ein geschätzter Zeitgenosse die Zeit genommen, genau diesen Use Case zu dokumentieren:

Setting up a guest network with the EdgeRouter Lite

Zwei kleine Anpassungen habe ich gemacht:

  1. Im DHCP-Server gebe ich als DNS die Server von Cablecom mit, weshalb sich aus meiner Sicht eine Firewall-Regel für internes DNS erübrigt.
  2. Als Privates Netz habe ich 192.168.1.0/24 gewählt und nicht 172.16.x.x.

Die Trennung mittels VLANs und Firewalls ist nun eingerichtet, aktiv und versioniert — leider konnte ich den Mieter aber noch nicht fragen, ob seine Geräte damit auch weiterhin funktionieren.

Tags: , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 6. Mai 2017

Einen UniFi Access Point forcieren, die Konfiguration neu einzulesen

Heute habe ich einen weiteren UniFi Access Point (dieses Mal wieder einen AC AP PRO) in Betrieb genommen.

Leider konnte ich den Access Point nach einigen Stunden Betrieb nicht dazu bewegen, die gemäss meiner Anleitung aktualisierten SSH-Keys neu einzulesen. Im Fachjargon nennt man das „forced re-provisioning“.

Ein Neustart des Access Points über das Web-Interface des UniFi-Controllers bewirkte nichts.

Schlussendlich entdeckte ich mehrere Threads in den Foren des Herstellers (Ubiquiti) und musste realisieren, dass der Hersteller offenbar keine direkte Möglichkeit implementiert hat, um einen Access Point mitzuteilen, seine Konfiguration vom Server neu einzulesen.

Everytime you change something at a config.properties, the APs need to be reprovisioned to apply that configurations. A reboot on the controller or the APs will not trigger a reprovision. So you have two options:
1) If you want to reprovision a single or a few APs, you can manually change one of their settings, like channel or TX power, then revert the config. Only that APs will be reprovisioned and will then apply whatever you have at config.properties for that site.
2) To reprovision all APs on a site you can enable and then disable the guest portal. This will trigger a reprovision on all APs, and apply all the settings on config.properties for that site.

Quelle:

Folgende Massnahme hat dann aber zum gewünschten Erfolg geführt:

  1. UniFi Controller
  2. Devices
  3. Klick auf den Namen des gewünschten Access Points
  4. In der rechten Spalte erscheinen die Eigenschaften des Access Points
  5. Configuration
  6. Radios
  7. Channel Width: Einen anderen Wert auswählen, als derzeit aktiviert (bei mir von HT40 zu HT20)
  8. Queue Changes

Nach einigen Sekunden sollte die Konfiguration endlich neu eingelesen worden sein. Nun die Änderungen rückgängig machen — und fertig.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 20. März 2017

UniFi Controller erkennen automatisch unerlaubte WiFi Access Points

Als ich gestern mit meinem TP-LINK TL-MR3020 am herumspielen war, tauchte plötzlich folgende E-Mail-Nachricht in meiner INBOX auf:

Ein Feature, von dem ich nicht wusste, dass es existiert. Nett. Umkehrschluss: Da der UniFi Controller das erste Mal ausgeschlagen hat, hatte ich noch nie einen „Rogue Access Point“ im Netz.

PS: Und ja, bevor jemand fragt: Die Konfigurationsoption für den Domain-Namen des Systems habe ich mittlerweile auch entdeckt und der Realität angepasst …

Tags: , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 18. Januar 2017

Wenn Laien Entwicklunsgzeiten schätzen …

Wenn der Vollprofi sagt, dass die Entwicklung eines Features mit einer externen Schnittstelle 10 Personentage in Anspruch nimmt, muss es ja wohl stimmen …

SMS password for Guest Portal
Is a great idea , fast release this!
I think new guest authentication perfect , and give up sales unifi in the air!
Its a week job and week test … realy need unifi wifi.

by worksart
on ‎09-15-2015 12:38 AM

Quelle: SMS password for Guest Portal

Tags: , , , ,
Labels: Funny, IT

Keine Kommentare | neuen Kommentar verfassen

Freitag, 5. Februar 2016

Einen UniFi Controller von einem Server auf einen anderen migrieren

Mit Blick auf den Mitte Januar 2016 bestellten Glasfaser-Anschluss von Fiber7 habe ich mich entschieden, das heimische WLAN aufzurüsten (nicht zuletzt, weil ich den Router wegen des Glasfaseranschlusses in der Stube nicht am selben Ort betreiben möchte wie den Wireless Access Point). Hierzu habe ich die WLAN-Funktionalität meines Asus RT-AC66U deaktiviert und mir danach einen Ubiquiti UniFi AP-Pro n450 angeschafft, mitsamt eines PoE-Switches von TP-Link.

Eine Besonderheit des UniFi-Access Points ist es, dass er selber keine Web-Oberfläche zur Konfiguration anbietet, wie es Consumer-Geräte sonst tun (auch eine Router-Funktionalität sucht man vergebens). Stattdessen benötigt man den sog. UniFi Controller, eine auf Java und MongoDB basierende Software, die auf einem Rechner im heimischen LAN installiert werden muss. Die Software muss übrigens nicht ständig laufen — wenn man die Konfiguration des APs abgeschlossen hat, benötigt der AP keine ständige Verbindung mehr zum Controller. Ich entschied mich gegen diese Lösung, da ich den Controller jederzeit zugriffsbereit und funktionstüchtig haben möchte — man weiss ja nie. Ausserdem zeichnet die Software in dem Modus Vitalparameter des APs und der WLAN-Netzwerke auf.

Zuerst hatte ich den UniFi Controller auf meiner „Workstation“, einem Mac mini, installiert, welcher ständig läuft. Da mir dabei nie wirklich wohl war, entschied ich mich, den alten Raspberry Pi 1 auszugraben und den Controller darauf zu installieren. Das ist insofern etwas weniger trivial als bei einem x86-Server, weil die ARM-CPU andere Softwarepakete benötigt (insbesondere MongoDB). Ich habe es dank Anleitungen im Internet trotzdem hingekriegt (das Material wird dereinst zu einem eigenständigen Blog-Artikel verwurstet). Da ich anschliessend auch Smokeping auf dem Raspberry Pi installierte und mir die Performance zur Generierung der RRDtool-Graphen überhaupt nicht mehr reichte, entschied ich mich diese Woche, auf einen (gebrauchten) Intel Next Unit of Computing NUC DC3217IYE zu migrieren. Mitkommen sollte auch der UniFi Controller.

Da ich das Spielchen bereits einmal gemacht hatte, hier die im Grunde recht triviale Anleitung (Kurzfassung):

  1. In den alten UniFi-Controller einloggen und unter Settings > Maintenance > Backup > Download Backup ein aktuelles Backup herunterladen
  2. Den neuen UniFi-Controller auf dem neuen Server installieren (Anleitungen für Raspberry Pi und Debian folgen dereinst)
  3. Mit dem Browser auf den neuen UniFi-Controller verbinden
  4. Auf dem Homescreen des neuen UniFi-Controllers im Abschnitt „Alternatively you can restore from a previous backup“ die soeben generierte Backup-Datei auf „Choose File“ ablegen und warten (auf dem Raspberry Pi dauerte das Einlesen des Backups mehrere Minuten, unter dem NUC wenige Sekunden)
  5. Login auf den neuen UniFi-Controller — WLAN sollte Rot leuchten
  6. Login auf den Server des alten UniFi-Controllers und diesen Controller stoppen (service stop unifi)

UniFi Controller Import Backup

Soweit so gut. Als nächstes muss man sich per SSH auf den Access Point verbinden — bei mir völlig ohne Interaktion, da ich den Access Point mit meinem SSH Public Key ausgestattet habe:

$ ssh unifi

Anschliessend startet man das CLI des lokalen Management Utility:

# mca-cli

Dort gibt man folgenden Befehl ein:

$ set-inform http://10.0.1.12:8080/inform

Wechselt man nun in den Browser zur Web-Oberfläche des neuen UniFi-Controllers, leuchtet WLAN grün — der Access Point wurde in der Zwischenzeit erkannt.

Voila, that’s it!

PS Eins: In Anleitungen im Netz liest man gelegentlich, dass man den AP im Web-GUI noch „adoptieren“ und danach noch einmal den set-inform-Befehl ausführen müsse — bei mir klappte dies auch ohne.

PS Zwei: Der alte UniFi-Controller lief unter 4.7.6, der neue läuft unter 4.8.12. Beim Import der Backup-Konfiguration gab es keine Probleme.

Tags: , , , , , , , ,
Labels: IT

5 Kommentare | neuen Kommentar verfassen