Datenroaming from Hell

Ich bin demnächst ein paar Tage in Polen und möchte gerne auf Internet auf dem Smartphone nicht verzichten. Ich habe also bei T-Mobile (meinem Mobilfunkprovider) geschaut, wie ich im Ausland ins Internet komme, ohne meine Organe verkaufen zu müssen.

Roaming_-_günstig_im_Ausland_telefonieren_und_surfen___Telekom

Der Standardtarif („In allen Tarifen voreingestellt“) ist indiskutabel. Wer das verbrochen hat, verdient einen besonderen Platz in der Hölle.

Da ich nicht ganz eine Woche in Polen bin, fiel mein Blick zuerst auf den „Travel&Surf“-Tarif für 7 Tage. Aber 150 MB für 7 Tage für 15€ ist einfach nur lachhaft. Die 150 MB würden vielleicht für einen Tag reichen. Und der Preis ist ist völlig inakzeptabel. (0,10€/MB)

Ich habe zum Schluß die Flat für 20€ genommen. Da wird mein monatliches Inklusiv-Volumen verwendet. In Deutschland bin ich meist in irgendwelchen WLANs eingebucht, und verbrauche mein Inklusiv-Volumen kaum, es bleibt also ausreichend Volumen über. Die 20€ sind immer noch horrend, aber alle Alternativen sind noch schlimmer.

Sollte ich demnächst wieder öfters Polen sein, werde ich mich nach Prepaid-Optionen direkt in Polen umschauen müssen.

Minimalistische Firewall-Regeln auf 1&1 Cloud Server

Beim Wechsel von meinem „alten“ 1&1 Dynamic Cloud Server auf einen neuen 1&1 Cloud Server (man beachte die Abwesenheit des Wortes „Dynamic“) habe ich mich gewundert, wieso Email-Versand und -Empfang nicht funktionieren wollte. Nach langer und vergeblicher Suche in Plesk fand ich die Ursache im 1&1 Cloud Panel.

Im Panel finden sich unter Netzwerk -> Firewall-Richtlinien zwei Default-Richtlinien. Die Richtlinie für Linux läßt gerade mal SSH (Port 22), HTTP(S) (Port 80 und 443) und Plesk (8443 und 8447) zu. Erst als ich hier noch SMTP (Port 25), Submission (Port 587) und IMAPS (Port 993) in die Richtlinie aufgenommen habe, funktionierten Emails wie gewohnt.

 

SSH via Back to My Mac

„Back to My Mac“ ist eine nette Sache, um mal schnell auf den Mac Zuhause zu kommen. Doch die Bildschirmfreigabe kann recht bandbreitenhungrig sein oder die Bedienung wird recht schnell zum Geduldsspiel. Eher unbekannt ist die Möglichkeit, Back to My Mac mit SSH zu verwenden.

Normalerweise funktioniert Back to My Mac, indem es im Hintergrund automagisch ein VPN zwischen den Rechnern aufbaut und dann einfach die Bildschirmfreigabe darüber tunnelt. Da es sich bei dem VPN wirklich um ein normales IPSec-VPN handelt, ist man nicht auf die Bildschirmfreigabe beschränkt. Man kann genausogut auch FTP oder HTTP durch dieses VPN schieben. Oder wie im Folgenden beschrieben: SSH.

Hierzu braucht man seine Back-to-My-Mac-Domain. Diese kann man sich mit mDNS -E ausgeben lassen. Die Domain sollte so aussehen: 12345678.members.btmm.icloud.com. (Die Nummer wird selbverständlich anders sein) Damit kann man sich nun mit Macs verbinden, die zu diesem iCloud-Konto gehören, man muß nur deren Hostnamen kennen. Möchte ich mich nun mit meinem iMac („Jupiter“) verbinden, muß ich einfach nur ssh jupiter.12345678.members.btmm.icloud.com. eingeben. Und weil ich nicht jedesmal diesen langen Hostnamen eintippen will, habe ich in der ssh_config(5) einen Alias angelegt.

Falls die Verbindung nicht funktioniert, sollte man zuerst sicherstellen, daß Back to My Mac auch wirklich funktioniert. Hierzu sollte man einmal eine Verbindung via Bildschirmfreigabe versuchen. Auch sollte man SSH („Entfernte Anmeldung“) auf dem Ziel-Mac aktiviert haben. (duh!)

Edit: Titel korrigiert

Edit 2: Auf Mountain Lion gibt es mDNS nicht mehr. Stattdessen kann man dns-sd -E verwenden.

Must-have Webdienst


Ohne Dropbox könnte ich nicht mehr leben. Ich kann damit nicht nur einen Ordner zwischen verschiedenen meiner Rechner synchronisieren

sondern auch Ordner mit anderen Dropbox-Usern teilen. Und das ganze funktioniert sogar zwischen Windows, Mac und Linux.

Und dank des Public-Ordners kann ich auch mal eben eine Datei per http zugänglich machen, ohne diese mit (s)ftp/scp/… irgendwo heraufladen zu müssen. Auch von nicht-Nerds zu bewerkstelligen.

Wen ich jetzt von Dropbox überzeugen konnte, der möge sich über meinen Referral-Link anmelden. Für jeden User, der sich darüber anmeldet, bekomme ich zusätzlichen Speicherplatz.

Ein echtes ZFS-only FreeBSD-System

Als ich meinen neuen FreeBSD-Server installieren sollte, wollte ich ihn nun komplett mit ZFS einrichten. Im Internet existieren genügend Anleitungen, die beschreiben, wie man dies bewerkstelligt. Doch sie gingen alle nicht den allerletzten Schritt, um auch das Swap ins ZFS zu legen. Hier also die Anleitung, wie man ein echtes ZFS-only System einrichtet.

Zunächst einmal ein paar Daten. Ich habe 5 SATA-Festplatten im Rechner, die nach dem Booten von FreeBSD 8.1-RELEASE als ad4, ad6, ad8, ad10 und ad12 erkannt wurden. Die Installation ist nichts für schwache Nerven. Es gibt keine Menüs, alles wird von der Kommandozeile erledigt und Tippfehler werden mit einem kaputten System bestraft.

Ich habe den Rechner mit der Installations-DVD gestartet. Anstatt die übliche Installation zu starten, bin ich jedoch gleich in die Rettungskonsole (Fixit) gegangen. Hier habe ich nochmal mit dmesg nachgeprüft, daß auch wirklich alle Platten korrekt erkannt wurden und mir die Gerätenamen notiert.

Als erstes habe ich die Festplatten mit GPT partitioniert.

gpart create -s gpt ad4
gpart create -s gpt ad6
gpart create -s gpt ad8
gpart create -s gpt ad10
gpart create -s gpt ad12

So vorbereitet habe ich dann die Partitionen auf den Festplatten angelegt. Zuerst die Bootpartition.

gpart add -b 34 -s 128 -t freebsd-boot ad4
gpart add -b 34 -s 128 -t freebsd-boot ad6
gpart add -b 34 -s 128 -t freebsd-boot ad8
gpart add -b 34 -s 128 -t freebsd-boot ad10
gpart add -b 34 -s 128 -t freebsd-boot ad12

Anders als in den oben erwähnten Anleitungen, habe ich keine separate Swap-Partition angelegt. Den verbliebenen Platz auf den Platten habe ich vollständig für das ZFS verwendet.

gpart add -t freebsd-zfs -l disk0 ad4
gpart add -t freebsd-zfs -l disk1 ad6
gpart add -t freebsd-zfs -l disk2 ad8
gpart add -t freebsd-zfs -l disk3 ad10
gpart add -t freebsd-zfs -l disk4 ad12

Natürlich gehört der Boot-Code auf alle Festplatten. Man weiß ja nie, welche Festplatte ausfällt, in dem Fall möchte ich natürlich auch von den verbliebenen Platten booten können.

gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad6
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad8
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad10
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad12

Um das ZFS anzulegen, habe ich die ZFS-Kernelmodule geladen.

kldload /mnt2/boot/kernel/opensolaris.ko
kldload /mnt2/boot/kernel/zfs.ko

Das Dateisystem habe ich dann mit diesen Befehlen angelegt. (Die ersten beiden Zeilen gehören zusammen und sind hier nur wegen der Breite umgebrochen)

zpool create zroot raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 \
/dev/gpt/disk3 /dev/gpt/disk4
zpool set bootfs=zroot zroot

An dieser Stelle mußte ich dann nochmal von den Anleitungen abweichen, um Swap einzurichten. Die Idee dazu stammt von hier.

zfs create -V 2G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap

Hier kehrte ich dann zu den vorhandenen Anleitungen zurück. Es ist nicht zwingend notwendig, all diese Dateisysteme anzulegen, aber wenn man schon ein Dateisystem wie ZFS hat, sollte man seine Stärken richtig ausspielen.

zfs set checksum=fletcher4 zroot
zfs create -o compression=on -o exec=on -o setuid=on zroot/tmp
chmod 1777 /zroot/tmp
zfs create zroot/usr
zfs create zroot/usr/home
cd /zroot ; ln -s /usr/home home
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create zroot/var
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
chmod 1777 /zroot/var/tmp

Damit habe ich alle Dateisysteme angelegt und kann mit der eigentlichen Installation beginnen. Auch das muß von der Kommandozeile geschehen.

cd /dist/8.1-RELEASE
export DESTDIR=/zroot
for dir in base manpages ports ; do (cd $dir ; ./install.sh) ; done
cd src ; ./install.sh all
cd ../kernels ; ./install.sh generic
cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/

Nachdem alle Dateien installiert sind, kann /var/empty read-only geschaltet werden.

zfs set readonly=on zroot/var/empty

Nun konnte ich in das frisch installierte System chrooten, um noch wichtige Einstellungen am System vorzunehmen.

chroot /zroot

Damit alle ZFS-Dateisysteme beim booten gemountet werden.

echo 'zfs_enable="YES"' > /etc/rc.conf

Der Bootloader soll natürlich auch wissen, wovon er booten soll.

echo 'vfs.root.mountfrom="zfs:zroot"' > /boot/loader.conf
echo 'zfs_load="YES"' >> /boot/loader.conf

Folgende Zeile ist nur bei Systemen mit 1GB RAM oder weniger nötig.

echo 'vfs.zfs.prefetch_disable="1"' >> /boot/loader.conf

Sollte ich je auf die Idee kommen, mit make buildworld mein System upzudaten, will ich auch wieder einen Bootloader mit ZFS-Support haben. Dies ist nicht notwendig, um das System zum laufen zubekommen. Es verhindert nur, daß ich mir zukünftig ins Knie schieße.

echo 'LOADER_ZFS_SUPPORT=YES' > /etc/src.conf

Damit das System nach dem Booten auch lauffähig und benutzbar ist, fehlen noch einige Einstellungen wie root-Passwort, Zeitzone und Mail-Aliase für Sendmail.

passwd root
tzsetup
cd /etc/mail ; make aliases

Das System wird am Ende komplett aus dem ZFS laufen und benötigt eigentlich keine /etc/fstab mehr. Allerdings geht FreeBSD beim Booten davon aus, daß diese Datei existiert. Es fährt zwar auch ohne hoch, spuckt jedoch beim Hochfahren unschöne Fehlermeldungen aus. Um dem vorzubeugen, habe ich eine leere /etc/fstab angelegt.

touch /etc/fstab

Dies war nur das allernötigste. Die restlichen Einstellungen wie Netzwerk, Dienste, Tastaturlayout kann ich nach dem ersten Booten mit sysinstall vornehmen. Ich war an dieser Stelle fertig und konnte die chroot-Umgebung verlassen.

exit

Damit das System beim Booten die Dateisysteme wiederfindet, braucht es den zpool.cache. Dieser wird erst beim Exportieren des ZFS erzeugt. Ich habe also kurz das Dateisystem exportiert und gleich wieder importiert, um die Cache-Datei zu erzeugen und dann ins System zu kopieren.

mkdir /boot/zfs
cd /boot/zfs
zpool export zroot && zpool import zroot
cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache

Und zuletzt habe ich die Mountpunkte den einzelnen Dateisystemen zugewiesen.

export LD_LIBRARY_PATH=/mnt2/lib
zfs unmount -a
zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

Damit war die Installation abgeschlossen. Ich habe die Rettungskonsole verlassen. Der FreeBSD-Installer erschien wieder und ich wählte unten den Punkt zum Beenden des Installers. Der Rechner startete neu und startete danach das frisch installierte System vom ZFS.

Wie vorhin erwähnt mußte ich nach dem ersten Login noch das Netzwerk, SSH und Tastatur einrichten. Danach war das System voll betriebsbereit.

Axel E. Fischer fordert…

Wenn Politiker ihre Ahnungslosigkeit über das Internet demonstrieren, dürfen sie sich nicht wundern, wenn sie zum Spott im Internet werden. Axel E. Fischer, CDU, forderte ein Vermummungsverbot im Internet und erschuf ein neues Meme. Twitter ist voll von Axel E. Fischer fordert-Parodien. Hier sind meine Favoriten:

  • Axel E. Fischer fordert Zahnersatz für Bluetooth-Geräte.
  • Axel E. Fischer fordert Buchpreisbindung für Facebooks.
  • Axel E. Fischer fordert Homoehe in heterogenen Netzwerken.
  • Axel E. Fischer fordert Verdummungsverbot für CDU-Politiker.
  • Axel E. Fischer fordert Strafgebühr für nicht zurückgespulte Youtube-Videos.
  • Axel E. Fischer fordert Tierheime für LOLcats.
  • Axel E. Fischer fordert Fangquoten für Fail-Whales.
  • Axel E. Fischer fordert Pflaster für Schnittstellen.
  • Axel E. Fischer fordert Hafensteuer für Ports.
  • Axel E. Fischer fordert Überrollbügel für Rickrolls.

Hier noch mehr Forderungen.

Plesk 10.0.1

Hmm, Update auf Plesk 10.0.1 von 9.5.3 ist durchgelaufen. Geriet ein wenig ins Stocken beim Spamassassin/spamd. Aber nachdem ich spamd manuell abgeschossen habe, lief der Rest durch. Die 25 sw-engine-cgi-Instanzen beunruhigen mich ein wenig, aber es scheint alles zu funktionieren. Falls nicht, ist Plesk schuld :)

Update auf WordPress 3.0

Ich habe jetzt lange gezögert, aber nun wurde es dann doch Zeit, mein Blog auf WordPress 3.0 upzudaten. Bei der Gelegenheit habe ich auch die deutschen Locales für WordPress eingespielt. Damit sollte hoffentlich das meiste auch auf Deutsch erscheinen.