Mittwoch, 18. Juli 2018

Auf chinesischen iPhones gibt es die Taiwan-Flagge nicht als Emoji

Patrick Wardle hat einer Bekannten geholfen, reproduzierbare Abstürze ihres iPhones zu debuggen.

Die Abstürze rührten von einem Bug in einer Routine her, welche nur Personen betraf, welche ihr iPhone in der chinesischen Lokalisation betrieben: Die Routine kümmert sich darum, dass iPhones mit dieser Landeseinstellung das Wort „Taiwan“ in Texten sowie die Taiwan-Flagge (Emoji) nicht anzeigen, sondern stattdessen mit einem rechteckigen, ein Kreuz enthaltendes Kästchen ersetzen (Bild):

A Remote iOS Bug. apple wrote code to appease the chinese government …it was buggy

Apple hat den Bug in der Routine in der Zwischenzeit behoben. Die Taiwan-Flagge kriegen solche Benutzer aber aus nachvollziehbaren Gründen immer noch nicht zu sehen: Apple möchte es sich mit seinem grössten Markt nicht verderben und zensiert seine Produkte freiwillig.

Wem die vertrackten geschichtlichen Hintergründe dieser Angelegenheit nicht klar sind, lese sich auf Wikipedia ein: Taiwan-Konflikt sowie als konkretes Symptom des Konflikts die Resolution 2758 der UN-Generalversammlung.

Nachtrag

Und jetzt flattert auch noch gerade diese Meldung bei mir rein:

China does not recognise any nation that has diplomatic relations with Taiwan – officially known as the Republic of China (ROC). Under the One China Policy, it does not consider the island nation be an independent country. The island has been self-ruled since its split from the mainland after the 1949 civil war.

Palau officially established diplomatic ties with Taiwan in December 1999.

Quelle: Airline says it shut down after China labelled Palau an ‘illegal destination’ over its Taiwan recognition

Tags: , , , , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 8. Juli 2018

Endlich ist es da: Die M2M- resp. OOB-SIM für Normalsterbliche

Seit Jahr und Tag bin ich auf der Suche nach einer Daten-SIM-Karte, welche ich als Out-of-Band-Lösung in meinen drei Netzwerk-Standorten installieren kann.

Die SIM möchte ich in ein UMTS-Modem einbauen, welches ich entweder extern per USB oder intern per Einbau an den ThinkPad-„Server“ der jeweiligen Location anhänge.

Fällt das Internet aus, oder verliere ich aus irgendeinem Grund den Remote-Zugriff ins LAN, aktiviert sich die SIM-Karte von alleine, meldet seine IP bei einem Dienst wie DynDNS, öffnet einen VPN-Tunnel und bietet mir so die Möglichkeit, Probleme aus der Ferne zu diagnostizieren.

Mit SimplyMobile von Swisscom scheint das nun Realität zu werden:

  • Prepaid-SIM, d.h. keine monatlich wiederkehrenden Kosten
  • Datenpaket von 750 MB für 9.90 CHF
  • Datenguthaben verfällt nicht

Quelle: SIMPLYMOBILE PREPAID

Fazit: Das Basteln kann beginnen!

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

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 8. Juli 2018

OpenVPN meldet „INSECURE cipher with block size less than 128 bit (64 bit).“

Zwar erscheint die folgende Fehlermeldung seit längerem in den Logs meiner Site-to-Site-VPNs, doch heute erst hatte ich die Zeit, mich dem Problem anzunehmen:

Sun Jul  8 09:24:37 2018 Outgoing Static Key Encryption: Cipher 'BF-CBC' initialized with 128 bit key
Sun Jul  8 09:24:37 2018 WARNING: INSECURE cipher with block size less than 128 bit (64 bit).  This allows attacks like SWEET32.  Mitigate by using a --cipher with a larger block size (e.g. AES-256-CBC).

Zuerst dachte ich, dass ich die statischen Schlüssel der VPN-Verbindungen neu erstellen muss, weshalb ich zuerst einmal das Script optimierte. Falsch gedacht! Obwohl ich die Schlüssel ersetzt hatte, erschien beim erneuten Verbindungsaufbau erneut dieselbe Fehlermeldung.

Nach etwas Googlen dann die effektive Lösung: Ich muss die Konfigurationsdateien der jeweiligen Verbindungen anpassen! Folgende Zeile habe ich nun in die OpenVPN-Konfigurationsdateien auf beiden Seiten eingefügt:

...
cipher      AES-256-CBC
...

Et voilà! Auf der Seite des Servers sehe ich nun in der Log-Datei:

Sun Jul  8 10:47:17 2018 OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 18 2017
Sun Jul  8 10:47:17 2018 library versions: OpenSSL 1.0.2l  25 May 2017, LZO 2.08
Sun Jul  8 10:47:17 2018 Outgoing Static Key Encryption: Cipher 'AES-256-CBC' initialized with 256 bit key
Sun Jul  8 10:47:17 2018 Outgoing Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Jul  8 10:47:17 2018 Incoming Static Key Encryption: Cipher 'AES-256-CBC' initialized with 256 bit key
Sun Jul  8 10:47:17 2018 Incoming Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
...

Tags: , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 8. Juli 2018

UniFi Produktenamen in syslog-Nachrichten

Auf meiner ELK-Installation finden sich unter anderem auch die Logs meiner UniFi-Controller und der damit kontrollierten Access Points. In den syslog-Nachrichten werden die Typen von UniFi-Netzwerkgeräten mit folgenden Kürzeln identifiziert:

  • U7PG2 — UniFi AP-AC-Pro Gen2
  • U7MSH — UniFi AP-AC-Mesh
  • U7LR — UniFi AP-AC-LR
  • U7P — UniFi AP-Pro

Die offizielle Liste von UniFi findet sich im JSON-Format hier: bundles.json.txt

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 7. Juli 2018

AhrefsBot und SEMrush Spider mit .htaccess blocken

Diese zwei Spider, deren Zweck (und Hintermänner) ich trotz folgender zwei erläuternden Seiten immer noch nicht verstehe, gehören geblockt:

Hauptgrund ist, dass sie (immer wieder) uralte URLs aufrufen, die nicht mehr existeren, obwohl dies von meinem CMS auch korrekt mit dem HTTP-Code 410 Gone zurückgemeldet wird:

The HyperText Transfer Protocol (HTTP) 410 Gone client error response code indicates that access to the target resource is no longer available at the origin server and that this condition is likely to be permanent.

If you don’t know whether this lack is temporary or permanent, a 404 status code should be used instead.

Quelle: 410 Gone

Nun gut, dann bleibt halt nur noch das drastischste Mitte mittels .htaccess:

...
RewriteCond %{HTTP_USER_AGENT} SemrushBot [OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsBot
RewriteRule .* - [R=429]
...

Noch kurz getestet:

$ wget "https://www.domain.tld/" --user-agent "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)"
--2018-07-07 13:34:33--  https://www.domain.tld/
Auflösen des Hostnamens www.domain.tld (www.domain.tld)… 1.2.3.4
Verbindungsaufbau zu www.domain.tld (www.domain.tld)|1.2.3.4|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 429 Too Many Requests
2018-07-07 13:34:33 FEHLER 429: Too Many Requests.
$ wget "https://www.domain.tld/" --user-agent "Mozilla/5.0 (compatible; SemrushBot/2~bl; +http://www.semrush.com/bot.html)"
--2018-07-07 13:34:52--  https://www.domain.tld/
Auflösen des Hostnamens www.domain.tld (www.domain.tld)… 1.2.3.4
Verbindungsaufbau zu www.domain.tld (www.domain.tld)|1.2.3.4|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 429 Too Many Requests
2018-07-07 13:34:52 FEHLER 429: Too Many Requests.

Passt. Und jetzt herrscht hier Ruhe (und meine Log-Files bleiben leer).

Ah, und vielleicht sollte man sich noch vergewissern, dass alle anderen Browser durchkommen — Kollateralschäden wollen wir ja wennmöglich vermeiden:

$ wget "https://www.domain.tld/"
--2018-07-07 13:47:31--  https://www.domain.tld/
Auflösen des Hostnamens www.domain.tld (www.domain.tld)… 1.2.3.4
Verbindungsaufbau zu www.domain.tld (www.domain.tld)|1.2.3.4|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: nicht spezifiziert [text/html]
Wird in »index.html« gespeichert.

index.html.1                                                       [ <=>]  21,90K  --.-KB/s    in 0,005s  

2018-07-07 13:47:31 (4,07 MB/s) - »index.html« gespeichert [22421]

Tags: , , , , , , , , , , ,
Labels: Web

1 Kommentar | neuen Kommentar verfassen

Sonntag, 24. Juni 2018

Cacti spine 1.1.38 meldet beim Kompilieren ./configure: No such file or directory

Kürzlich wollte ich das auf meinem Cacti-Server installierte spine mit der neuesten stabilen Version aktualisieren.

Nachdem ich den Quellcode aus dem Internet in ein lokales Verzeichnis heruntergeladen hatte, wollte ich das Paket wie üblich kompilieren:

$ ./configure
./configure: No such file or directory

Was Cheibs? Nach einigem Googlen dann die Lösung, ebenfalls auf GitHub, aber zu einem völlig unverwandten Projekt:

Note for users building from source

If you have retreived a snapshot of rdesktop source, you will first need to run ./bootstrap in order to generate the build infrastructure. This is not necessary for release versions of rdesktop.

Quelle: bash: ./configure: No such file or directory

Und siehe da:

$ ./bootstrap
FATAL: Unable to locate dos2unix utility
./bootstrap: 38: exit: Illegal number: -1

Schon besser! Jetzt fehlte also noch das Debian-Paket dos2unix, und es konnte losgehen:

# apt-get install dos2unix

Anschliessend konnte ich ./configure ausführen (wie gewohnt musste ich dabei noch manuell die vorkonfigurierten MySQL-Libraries mit den MariaDB-Libraries ersetzen).

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 24. Juni 2018

IKEA TRÅDFRI Fernbedienung und Dimmer mit einer Philips Hue Glühbirne koppeln

Gestern war ich seit langem wieder einmal im nächstgelegenen IKEA und habe mir – unter anderem – die IKEA TRÅDFRI Fernbedienung (15 CHF) und den IKEA TRÅDFRI Dimmer (10 CHF) gekauft.

Meine Idee war es, die kabellosen Schalter mit meiner Nachttischlampe, einer Philips LivingColors Bloom Friends of Hue zu koppeln. Die Lampe steuere ich zwar bereits mit einem Philips Hue Dimmer Switch (28.90 CHF), doch ich wollte meiner Frau die Möglichkeit geben, die Nachttischlampe auch von ihrer Bettseite her auszuschalten. Und das möglichst zur Hälfte des Preises des offiziellen Schalters.

Ich folgte dabei folgender Anleitung, welche ich vorher im Netz aufgestöbert hatte:

  1. Reset the remote or dimmer by pressing the pair button 4 times quickly.
  2. Wait 10 seconds.
  3. Hold the remote directly next to the Hue hub (as close as possible).
  4. Hold the pair button.
  5. Immediately initiate a TouchLink search.

Quelle: Using IKEA Tradfri remote or dimmer with Hue

Um auf der Philips Hue-Basisstation den TouchLink-Scan zu starten, verwendete ich auf meinem iPad die kostenlose iOS-App Hue Lights (die App bietet In-App-Käufe an; diese waren aber nicht nötig). Dabei ist zu beachten, dass man die App einzig dafür braucht, den Scan-Vorgang zu starten. Die App selber gibt keinen Hinweis darauf, ob das koppeln der Fernbedienungen mit dem ZigBee-Netzwerk geklappt hat oder nicht — hierzu sind einzig die LEDs auf den Fernbedienungen zu beachten. Hue Lights zählt beim Scan 90 Sekunden runter — auch das kann man ruhig ignorieren; sobald die LEDs der TRÅDFRI wie im Video gezeigt leuchten respektive aufgehört haben zu leuchten, ist man für die Koppelung mit der eigentlichen Glühbirne bereit.

Übrigens: Auch in der offiziellen Hue App tauchen die Fernbedienungen nicht auf.

Der Koppelungsprozess ist nicht völlig trivial, aber auch nicht übermässig kompliziert. Der Prozess lässt sich ohne Aufwand solange wiederholen, bis es geklappt hat. Wie sonst nicht üblich musste ich meine Aktionen und die Reaktionen der IKEA-Schalter mit folgendem Video verifizieren:

Dabei habe ich insbesondere auf die Reaktionen der roten LEDs geachtet.

Schlechte Nachricht: Leider habe ich es nicht geschafft, die Fernbedienung mit der Philips Bloom zu koppeln. Gute Nachricht: Über unserem Küchentisch leuchtet eine Philips Hue E27 LED White & Color. Mit dieser konnte ich die beiden Fernbedienungen koppeln — wichtig hier: Genug lange warten, bis die Lampe wirklich „ausgeblinkt“ hat (es reicht nicht, wenn diese erst zwei- oder dreimal geblinkt hat).

Den Dimmer finde ich etwas hakelig; diesen muss man zwingend richtig auf einer Oberfläche befestigen. Die Fernbedienung wiederum kann man problemlos einfach auf den Küchentisch legen.

PS: Man muss kein Schwedisch-sprechender sein, um zu verstehen, was „TRÅDFRI“ bedeutet: Drahtfrei, also kabellos.

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

5 Kommentare | neuen Kommentar verfassen

Sonntag, 10. Juni 2018

Init7 TV7: Turris Omnia, UniFi Switch, Multicast und IGMP Snooping

Seit der Ankündigung von Init7 verwende ich gelegentlich deren TV7-Angebot, welches ein ganz „normales“ Multicast IPTV ist.

Bei der Konfiguration des Services bei einer Bekannten, welche ich mit einem Ubiquiti EdgeRouter ER-X ausgestattet habe, musste ich feststellen, dass das Netzwerk wie vom ISP angedroht mit Multicast geflutet wird, wenn man einen TV-Sender schaut.

Das spürt man sehr gut, wenn man über den am ER-X angeschlossenen Ubiquiti UniFi AP-AC-LR surfen will oder bspw. eine SSH-Verbindung aufgebaut hat. Zwischen dem Druck einer Taste und dem erscheinen des Buchstabens in der Shell gibt es eine spürbare Verzögerung.

Damals war ich der Meinung, dass mein Turris Omnia hier zu Hause mit IPTV Multicast zu schlage kommt, weil ich solche Probleme initial nicht wahrnahm. Doch auch mein Netzwerk wird in Mitleidenschaft gezogen, und auch hier spüre ich es primär mittels Verbindungsproblemen mit dem UniFi Access Point. Da ich direkt nach dem Turris Omnia einen UniFi Switch US-8-60W angeschlossen habe und die Interface-Statistiken mit Cacti aufzeichne, kann ich das Problem einfach visualisieren — an Hand des Matches der Schweizer Nationalmannschaft gegen Japan am Freitag, 8. Juni 2018 ab 19 Uhr (wir schalteten uns ein paar Minuten später zu):

Man sieht auf den Graphen sehr gut, dass Multicast auf allen Interfaces des Switches einschlägt, egal, ob das Netzwerkgerät dahinter den Stream schaut oder nicht.

Was ich jetzt zudem auch noch realisiere: Meine Sonos PLAYBASAE, der SUB und die beiden Sonos PLAY:1 hatten Probleme mit der Audio-Wiedergabe von IPTV-Streams. Ich dachte, dass dies entweder an den Streams selber oder aber den Apps liegt, welche ich verwendet habe. Mir schwant nun aber, dass die PLAYBASE das Audio auf Grund des Multicast-Floodings eifach nicht schnell genug über den UniFi Access Point (d.h. per WLAN) zum SUB und den zwei PLAY:1 senden konnte.

Der Match lief bei uns über die App iPlayTV auf dem Apple TV 4 (mit Ethernet am UniFi-Switch angeschlossen) via HDMI auf unserem Panasonic Plasma in der Stube. Hierzu verwende ich udpxy, welches auf einem Linux-Server Intel NUC läuft, welcher ebenfalls am UniFi-Switch angeschlossen (dies nicht aus Spass; iPlayTV kommt mit der M3U8 respektive dem Multicast-Stream direkt von TV7 irgendwie nicht klar). D.h. udpxy empfängt Multicast, wandelt es in einen Unicast-Stream um und sendet diesen an den Apple TV.

Mitten im Spiel entschied ich mich, den Apple TV direkt an einen der vier freien Switch-Ports des Turris Omnia zu hängen (jetzt, als ich diese Zeilen schreibe, realisiere ich gerade, dass ich eigentlich den NUC dort hätte anhängen sollen, da er ja der Multicast-Empfänger war — und nicht den Apple TV). Das änderte an der Multicast-Flut nichts (wie auch, der Multicast-Empfänger war immer noch am Switch angehängt — ich Depp!).

Der Turris Omnia aber hat gemäss Kommandozeile IGMP-Snooping aktiviert:

$ cat /sys/devices/virtual/net/br-lan/bridge/multicast_snooping
1

Quellen: How can I enable IGMP Snooping in OpenWRT? sowie IPTV / UDP multicast

Schlussendlich nach viel Googlen dann die Erkenntnis: Ich musste IGMP Snooping noch auf meiner Ubiquiti-Netzwerkinfrastruktur aktivieren! Das macht man über den UniFi-Controller:

  1. Login auf die Web-Oberfläche des UniFi-Controllers
  2. Settings
  3. Networks
  4. Edit
  5. [x] Enable IGMP Snooping

Et voilà! Auf den Cacti-Graphen sind man in der Detail-Ansicht sehr schön, dass ich um spätestens 20:45 Uhr IGMP Snooping auf dem Switch aktiviert hatte:

Der Multicast-Stream mit locker 15 Mbit/s kommt immer noch über den Router auf dem Switch rein (Port 1, mit „TURRIS OMNIA“ bezeichnet), doch er wird nur noch an Switch-Port 3 weitergereicht, an welchem der NUC hängt, auf welchem udpxy läuft und den Multicast-Stream in Unicast umwandelt. Die anderen Ports werden mit Multicast sinnvollerweise nicht mehr bedient, und deshalb bricht die blaue Linie (Outbound-Traffic, d.h. in Richtung des angeschlossenen Netzwerkgerätes) fast gegen Null ein.

Was ich jetzt noch mache: Ich hänge den NUC auch noch direkt an einen freien Ethernet-Port des Turris Omnia. Dann gibt es eigentlich keinen Grund mehr, wieso Multicast-Traffic überhaupt bis zum UniFi-Switch gelangen sollte (ausser ich streame diesen bspw. auf meinem per Ethernet angebundenen iMac im Büro).

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

1 Kommentar | neuen Kommentar verfassen

Sonntag, 10. Juni 2018

Turris Omnia: Probleme mit pkgupdate debuggen

Mein Turris Omnia verwendet seit einiger Zeit das Kommandozeilentool pkgupdate, um sich zu aktualisieren (früher hatte diese Aufgabe offenbar ein Script namens updater.sh).

Gegen Ende dieser Woche wurde ich auf Grund eines nicht (mehr) existierenden Paketes regelmässig mit E-Mails eingedeckt, dass beim Update etwas fehlgeschlagen sein.

Beim Debuggen des Problems, welches ich in einem anderen Blog-Post beschreiben möchte, biss ich mir für einige Minute die Zähne an pkgupdater aus.

Gemäss Hilfe kann man mit dem Parameter -e die Verbosität des Tools einstellen:

$ pkgupdate --help
Usage: pkgupdate [OPTION]...
--help, -h			Prints this text.
--version, -V			Prints version of updater.
-R 			Use given path as a root directory. Consider also using --out-of-root option.
--batch				Run without user confirmation.
--state-log			Dump state to files in /etc/updater-state directory.
--ask-approval=	Require user's approval to proceed (abort if --approve with appropriate ID is not present, plan of action is put into the report-file if approval is needed)
--approve=			Approve actions with given ID (multiple allowed, from a corresponding report-file).
-s 		What level of messages to send to syslog.
-e 		What level of messages to send to stderr.
-S 		Under which name messages are send to syslog.
--task-log=		Append list of executed tasks into a log file.
--usign=			Path to usign tool used to verify packages signature. In default /usr/bin/usign.
--no-replan			Don't replan. Install everyting at once. Use this if updater you are running isn't from packages it installs.
--no-immediate-reboot		Don't reboot immediatelly. Just ignore immediate reboots. This is usable if you are not running on target machine.
--out-of-root			We are running updater out of root filesystem. This implies --no-replan and --no-immediate-reboot and is suggested to be used with -R option.

Doch was sind stderr Levels? Über eine Google-Suche stiess ich auch folgenden Kommentar zu einem völlig anderen Software-Produkt — sounds about right:

...
levels: {
  error: 3,
  warning: 4,
  notice: 5,
  info: 6,
  debug: 7,
},
...

Quelle: ‚debug‘ level is getting directed to stderr instead of stdout

debug war der Verbositäts-Level, welchen ich gesucht hatte. Versuchen wir es:

$ pkgupdate -e 7
DIE:Unknown log level 7
Aborted

Hmmm. Dann halt ausgeschrieben:

$ pkgupdate -e debug
DIE:Unknown log level debug
Aborted

Och Menno. Vielleicht dann alles in Grossbuchstaben?

$ pkgupdate -e DEBUG
DIE:Unknown log level DEBUG
Aborted

Himmelarsch! Zurück zu Google. Bei einem Gitlab-Checkin der Entwickler des Turris Omnia fand ich im Diff für das vorherige Script folgenden Hilfetext:

...
echo "-e (ERROR|WARNING|INFO|DBG|TRACE)	Message level printed on stderr. In default set to INFO."
...

Quelle: Store only single approved state

Somit lautet die korrekte Schreibweise:

# pkgupdate -e DBG

Und tatsächlich, damit klappte es.

Tags: , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. Juni 2018

Init7 TV7: Offizielle TV7-App für Apple TV

Da ich heute Fiber7s TV7 auf einem Apple TV installieren durfte, auf welchem eine schweizerische Apple ID konfiguriert ist, weiss ich nun endlich, wie die App wirklich heisst:

Wieso ich das hier poste? Auf unserem Apple TV hier zu Hause habe ich die App nicht gefunden, weil unser Apple TV mit einer — man verzeihe es uns — us-amerikanischen Apple ID konfiguriert ist und wir somit nur den us-amerikanischen App Store durchsuchen können.

Auf Init7/Fiber7s Homepage wird die App zwar mehrere Male erwähnt, hingegen aber nicht, wie sie offiziell heisst. Auch wird nirgends erwähnt, dass sie nur aus dem schweizerischen App Store heruntergeladen werden kann. Letzteren Entscheid würde ich überdenken, da der Anteil an eingewanderten, hochqualifizierten Fiber7-Nutzern sehr hoch sein sollte — und die mögen es in der Regel nicht, eine zweite Apple ID für ihr Leben in der Schweiz zu lösen.

Schick wäre übrigens auch, wenn TV7 analog zu Salt beim erstmaligen Einrichten eines Apple TV 4 oder 4K einen eigenen Bildschirm zur Konfiguration erhielte.

Tags: , , , , , , , ,
Labels: Apple, IT, Leben, Medien, Schweiz

9 Kommentare | neuen Kommentar verfassen