Category Archives: Bits & Bytes

Summarizes all computer related stuff

Rocking iptables like a DJ

turn|table, turn·ta·ble (tûrn t b l), /ˈtəːnteɪb(ə)l

Definition of turntable in English:

noun

    • The circular horizontal rotating platform of a phonograph on which the record is placed.
    • A phonograph exclusive of amplifying circuitry and speakers.
    • (turntables) A set of two or more record decks connected to sound mixing equipment, used by a DJ: the two DJs who preside over the turntables play all kinds of cool electronica.
  1. A circular horizontal rotating platform equipped with a railway track, used for turning locomotives, as in a roundhouse.
  2. A rotating platform or disk, such as a lazy Susan.
  3. (ipturntables.sh) A bash script with a set of easy, common iptables rules forming a firewall to protect a computer host from malicous data packets sent from the internet, used by an Admin.

1 ipturntables.sh gitlab repository
2 The netfilter framework (iptables)

Subtyping für Werte: Mehr Ausdrucksstärke, mehr Sicherheit

Exzellenter Artikel von Beate Ritterbach (https://heise.de/-3273406) über die Ambivalenz objekt-orientierter Hochsprachen insbesondere wenn es um das Thema Vererbung geht. Hier werden Problemmuster erwähnt auf die ich schon in ähnlicher Weise gestossen bin. Bei OOP kommt es häufig zu zwei Extremen, entweder Vererbung wird ganz ignoriert oder sie wird mißbräuchlich verwendet, einfach aus Unkenntnis der doch recht diffusen und schwer greifbaren Regeln die dahinter stehen.
Hier sehr schön als Injektivität und Verhaltenskomformität beschrieben, übrigens die Verwendung mathematischer Begriffe als Analogie finde ich sehr gelungen. Bei Verhaltenskonformität z.B. spreche ich oft von kommutativen Operationen.
Auch das Kapitel über Gleichheit ist hochinteressant denn häufig wird es falsch implementiert weil der Unterschied zwischen identischen Instanzen und Instanzen mit identischem Inhalt nicht deutlich ist. Das Gleiche ist eben nicht dasselbe 🙂

Cyc

Das erste Mal habe ich etwas von Doug Lenat im 4. Teil der BBC Dokumentation Eine Maschine verändert die Welt (https://youtu.be/cG7v9eCq2u4) gehört. Bereits dort wird das Cyc Projekt von ihm selbst vorgestellt und insbesonders auf horrende Probleme in der KI hingewiesen. Marvin Minsky nannte es das Hintergrundwissen, Dinge die niemals erwähnt werden aber von denen trotzdem jeder implizit ausgeht, in der Doku finden sich dazu interessante, teilweise witzige Beispiele z.B. KI’s mit der Aufgabe einen Turm aus Klötzen zu bauen und dabei möchten sie mit dem obersten Klotz anfangen.
Deep Learning alleine ist es nicht, zwar mag es sich leicht von Neuronalen Netzen unterscheiden aber die Problematiken die entstehen ähneln sich in gewisser Weise, damit lassen sich zwar klevere Experten-Systeme bauen deren Welt sich auf ein Schachbrett oder TicTacToe beschränken, den Turing Test können solche Maschinen allerdings nicht bestehen ohne dass einige grundlegende Regeln bestehen und genau das macht Cyc.
Nach über 30 Jahren ist es nun also soweit und ich bin mal gespannt was dort für Produkte aus dem Projekt hervorgehen. Wer mit diesem Geist rumspielen möchte kann das auch selbst ausprobieren, es gibt einen OpenSource-Ableger genannt OpenCyc (http://www.cyc.com)

Cyc: KI mit Weltwissen erlangt Marktreife

Das Kodi Media Center im Eigenbau

Als kleines Hobbyprojekt hatte ich mir schon lange vorgenommen mir ein eigenes Entertainment Hub mit Kodi (vgl. XBMC) zu bauen, dabei soll dieses System im Alltagsgebrauch meinen alten TechniSat Receiver ersetzen. Es soll u.a. dazu dienen Fernsehen zu schauen, Musik zu hören z.B. lokale Streams, von CD oder auch online per Internet Radio außerdem möchte ich sowohl Videos abspielen (DVD, Bluray) als diese auch per Stream abrufen können z.B. über einen lokalen DLNA Server. Zudem soll die Möglichkeit bestehen diverse Videodienste direkt aus dem Internet zu nutzen z.B. YouTube, Twitch, aber auch kommerzielle Anbieter wie  Amazon Prime oder Netflix. Die meisten dieser Funktionen bringt Kodi von Haus mit, einige andere Dinge wie z.B. gewöhnliches Fernsehen muß über eine TV-Karte realisiert werden.

Nächste Seite

Audio Streaming per Bluetooth (A2DP)

Möchte man auf einfache Weise Musik vom Smartphone abspielen und z.B. per Bluetooth an den Rechner senden um dessen Boxen zur Ausgabe zu nutzen kann man unter Debian Jessie folgendermaßen vorgehen. Im Regelfall sollten die Standartpakete (firmware-linux-free & firmware-linux-nonfree) einen großen Teil der Hardware bereits von Haus unterstützen und die nötige Firmware bereitstellen. Um aber sicher zu gehen sollte man zunächst einmal untersuchen ob vielleicht eine spezielle Firmware für das am PC angeschlossene Bluetooth Modul benötigt wird:

Me@myHost:~# lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 004: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 005: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Me@myHost:~# ### Das Atheros Bluetooth Modul benötigt eine spezielle Firmware
Me@myHost:~# sudo apt-get install firmware-atheros
Me@myHost:~# ### Folgende Pakete benötigt man für den Bluetooth<=>PulseAudio Stack
Me@myHost:~# sudo apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol \
 bluez bluez-firmware bluez-tools

IPv6, pppd & Router Advertisements via ICMPv6

Baut man über den pppd eine DSL Verbindung auf, so erhält man normalerweise die Adresse des Peers und die öffentliche IP-Adresse.

14: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp
    inet 0.1.2.3 peer 4.5.6.7/32 scope global ppp0

Bei IPv4 ist das nichts ungewöhnliches allerdings ist es erstaunlich dass wenn man dasselbe über IPv6 versucht man u.U. nur eine Link-Local-Adresse erhält:

inet6 fe80::10:20:30:40/10 scope link
  valid_lft forever preferred_lft forever

Bei IPv6 werden neue Router bzw. Netze durch das sogenannte Neighbor Discovery Protocol (vgl. Router Advertisement) dem lokalen Netz mitgeteilt. Klappt das nicht könnten paranoide Admins schuld sein die wider besseren Wissen sämtlichen ICMP Verkehr mit der Firewall blockieren. Obwohl Router Advertisement durchaus für böse Dinge eingesetzt werden können allerdings nur dann wenn man sie über Netzgrenzen hinweg gestattet. Das Router Advertisement gänzlich zu filtern ist jedenfalls eine denkbar unflexible Lösung da sie dann im internen, lokalen Netz genauso wirkt wie aus dem WAN heraus. Im lokalen Netz jedenfalls ist sowas oft unerwünscht zumindest wenn man sich die IPv6 Stateless Autoconfiguration zu nutze machen möchte und in unserem Fall setzt PPPoE sie für IPv6 sogar voraus. Deswegen sollte man bei der Diagnose erstmal ausschließen das die eigene Firewall dazwischen friemelt.

.net == Open Source?

Super, zwar kommt das ungefähr zehn Jahre zu spät aber immerhin, besser spät als nie. Vielleicht wird +Microsoft auf seine alten Tage vernünftig, warten wir es mal ab oder hängt das eher mit dem neuen Führungsstil von +Satya Nadella zusammen?
Diese Entscheidung war lange überfällig und wird +Xamarin ‘s Mono Framwork (womöglich auch unter Linux?) einen Schub geben insbesondere wenn man nicht mehr Angst haben muß verklagt zu werden denn das war bisher der größte Hemmschuh für potentielle Entwickler mit dem Ziel sich die Platformunabhängigkeit von .net tatsächlich nutzbar zu machen. Nichtsdestotrotz eine gute Entscheidung und ein richtiger Schritt

https://heise.de/-2452033

Telekom VDSL Anschluß nach Annex J

Seit einiger Zeit bietet die Telekom sogenannte IP-basierte DSL Anschlüsse nach G.992.(3|5) Annex J ITU Standard an, das bedeutet dass auch das untere Frequenzband bis 25 kHz zur Datenübertragung im Upstream genutzt werden kann wo sich früher das gute, alte, analoge Telefon- (POTS) und ISDN Signal befand.
Früher auch bekannt als Call & Surf Comfort (Speed, …) nennt sich der Tarif heute MagentaZuhause (S|M|L) und verbannt die Telefonie mit VoIP endgültig in das digitale Reich der Bits & Bytes, daher ist ein Splitter nicht mehr erforderlich. Die Telefondose selbst redet nur noch in digital, damit man allerdings die volle Bandbreite genießen kann benötigt man ein Annex J-fähiges DSL Modem welches einen Upstream mit bis zu 5 Mbit/s und einen Downstream bis zu 100 Mbit/s ermöglicht. In der Regel sind solche Modems in der Lage viel mehr Bandbreite als die besagten 5 Mbit/s zu liefern allerdings gibt oft das Frequenzband des alten Klingeldrahts nicht mehr her.

Frequenzbänder der unterschiedlichen Annex Standards.

Die meisten älteren Modems beherrschen lediglich schmalere Frequenzbänder nach älteren Annex Standards daher möchte ich hier einige Erfahrungen mit Geräten betrachten, die ein Modem nach Annex J Standard enthalten.

Linux als Mitglied einer Windows Domäne

Heute möchte ich die Anbindung eines Linux Host als vollwertiges Domänenmitglied in eine Windows Server 200x Active Directory Domäne behandeln. Dabei kommt einem vermutlich Samba in den Sinn jedoch dient dies eher der Dateifreigabe in einem Netzwerk, bei einfachen Windows-Arbeitsgruppen Netzwerken ist dies auch recht schnell bewerkstelligt allerdings mit einigen Einschränkungen. Die Benutzer und Gruppen, die Identifiktaion der einzelnen Hosts eines Netzwerks, verschiedenen Berechtigungsysteme etc. alles muß von Hand verwaltet werden.
Eine Windows Active Directory-Domäne bietet hier verschiedene Vorteile. Alle Entitäten werden in einer LDAP Datenbank auf dem Windows Server innerhalb eines sogenannten Realms (vgl. Domäne) verwaltet, dabei erhalten alle Maschinen ihre verschiedenen Berechtigungen vom Windows Server. Für Windows Maschinen ist das nichts besonderes aber man kann sowas auch mit einer Linux Maschine machen dabei sollen folgende Kriterien erfüllt sein:

  • Nutzung der Kerberos Authentifizierung. Der Linux Host soll ein Domänen Mitglied mit eigener Machine Credential sein um sich so auch passwortlos am Domänennetzwerk anmelden zu können. So wie das Windows Maschinen auch machen.
  • Benutzer und Gruppen des Realms (vgl. Domäne) sollen dem Linux Host bekannt sein und auch als Besitzer für Dateien und Ordner des Linux Hosts gesetzt werden können.
  • Linux spezifische Accountdaten wie UID, GID, Homepath, Shell, etc, sollen im Active Directory verwaltet werden.
  • Der Linux Host soll Dienste anbieten die den Single sign-on Mechanismus der Domäne verwenden können und bei dem sich auch Benutzer der Domäne auf Diensten des Linux Hosts anmelden können z.B. Samba oder NFS Freigaben nutzen oder per SSH anmelden, etc.

Quellen:
The Official Samba 3.5.x HOWTO and Reference Guide
http://web.mit.edu/kerberos

Festplatte auswerfen (Hot-Swap|eSata)

Um USB Sticks auszuwerfen gibt es das eject-Kommando. Möchte man aber eine Festplatte z.B. per Hot-Swap oder am eSata Quick-Port auswerfen kann man folgendes machen:

# echo "1" >/sys/block/sda/device/delete

Wobei die Angabe sda die Platte angibt die ausgeworfen werden soll. Ein kleine Bash-Funktion mit entsprechenden Sicherheitsabfragen läßt sich z.B. leicht in der .bash_aliases unterbringen:

function ejectHD()
{
    [ -z $1 ] && echo "Usage: ejectHD BLOCK_DEV_NODE (eg: sda, sdb, ...)" && return 1
    [ ! -e "/sys/block/$1" ] && echo "Device node not ejectable." && return 2
    read -s -n1 -p ">> Attention! Ejecting '$1'! Sure? (y|N) "
    [[ $REPLY =~ (y|Y) ]] && echo "1" >/sys/block/$1/device/delete && echo "... done" && return 0         
    echo "... aborted."
}

Zuvor sollte man allerdings sicherstellen das man alle Dateisysteme per unmount abgerissen hat sonst kann es schnell zu Datenunfällen kommen.