floek goes OpenSolaris: Updates

Aktuell experimentiere ich mit OpenSolaris herum. Heute: Updates. Updates für z.B. Solaris 10 sind ja ziemlich übel. Man muss sich erst mal ein Programm aus dem Internet ziehen und damit kann man dann Updates machen. Dieses Manko wurde bei OpenSolaris behoben. Es gibt keine Patches, sondern nur neue Paketversionen, wie es z.B. auch Debian macht. Das Tool der Wahl ist pkg. Allerdings arbeitet OpenSolaris dann ZFS hier ziemlich intelligent. Aktualisiert man sein Betriebssystem mit pkg image-update -v werden die aktuellen Paketversionen installiert. Nach Abschluss erhält man folgende Meldung:

Ein Klon von opensolaris existiert und ist aktualisiert und aktiviert worden.
Beim nächsten Start wird die Startumgebung opensolaris-1 auf '/' geladen.
Starten Sie neu, wenn Sie zum Wechsel auf diese aktualisierte SU bereit sind.

Möglicherweise funktioniert ein reboot nun erst mal nicht. Hintergrund: OpenSolaris klont die aktuelle Boot Umgebung per Snapshot und installiert die Patches nur in diesem Klon. Dadurch kann man bei Problemen immer wieder in den alten Zustand vor der Aktualisierung zurückkehren. Der Klon verbraucht auch nur Speicherplatz für die Änderungen gegenüber der alten Version. Im Grub gibt es einen neuen Eintrag, welcher standardmäßig ausgewählt wird. Falls sich dieser nicht booten läßt sollte man den Eintrag händisch auswählen, der vor dem patchen gebootet wurde. Dann hilft es sich mit beadm list alle Boot Umgebungen anzuzeigen und die neu erstelle mit beadm mount /mnt in das System einzubinden. Anschließend braucht es noch /mnt/boot/solaris/bin/update_grub -R /mnt um grub auf der neuen Umgebung zu installieren. Funktioniert die neue Boot Umgebung problemlos, kann man die alte(n) mit beadm destroy wieder löschen.

Blog roundup 2009

So lange nicht mehr geblogt. Da ich aber kürzlich mal wieder auf die Idee gekommen bin mein WordPress zu aktualisieren, habe ich gleich mal etwas aufgeräumt und der Seite ein neues Bild verpasst. Ich bin natürlich letztes Jahr nicht untätig gewesen. Es gab allerdings zu Hause und @work viel zu tun. Leider hat es sich nicht bewährt das Alix Board gleich noch als Fileserver (über USB Platten) mit zu nutzen. Nach längerer erfolgloser Suche nach einem geeigneten NAS (am besten mit Geode Chip und der Möglichkeit openvpn zu nutzen), habe ich mich aus Kostengründen dazu entschieden wieder einen Homeserver aufzubauen. Um den Stromverbrauch in Grenzen zu halten und trotzdem ordentliche Performance bei OpenVPN zu haben, habe ich mit ein Board mit Atom 330 CPU gekauft. Für die Nutzung als Server im Keller hat ein einfaches Intel Board mit 2 GB RAM dicke ausgereicht. Das Ganze dann in ein altes Standard-ATX Gehäuse gepackt, Ubuntu 8.04 LTS Server auf einen 4 GB USB Stick installiert und schon war der Homeserver fertig. Ich habe mich noch entschieden 2x1TB Festplatten in das Gehäuse einzubauen und per Software RAID 1 als Dateiablage zu nutzen. Ohne Festplatten braucht das Setup ca. 30 W, was auch nicht viel mehr ist, als ein NAS + Alix. Mit laufenden Festplatten sinds ca. 45-50 W, aber da ich die selten brauche, lasse ich sie nach 20 Minuten einschlafen. Dann noch Monitoring per Nagios auf den RAID Status, sowie den Stromsparmodus der Festplatten gebaut und fertig. Die Kiste steht jetzt im Keller, ist per Gigabit angebunden und spielt Default Gateway, DHCP Server und DNS Relay. Hintendran hängt dann meine Fritzbox für die Telefonie und den Zugang zum Netz per Kabel. Ich bin mit der Zusammenstellung recht zufrieden. Telefon ist von Basteleien am Server nicht betroffen und der Rechner hat genug Performance für alle Aufgaben. Ich bekomme locker 16-20 MBit über das OpenVPN drüber, was sogar für FullHD ausreichend ist.

Voice Alarming mit Nagios und Asterisk

Bei besonders kritischen Services reicht es nicht aus eine Mail als Alarm zu erhalten. Ein Telefonanruf ist hier deutlich besser geeignet. Sein Handy hat man immer dabei und via Tonwahl lassen sich ggf. gleich Aktionen im Nagios ausführen (ACKNOWLEDGE, disable notficications). Eine kurze Internetrecherche hat mich zu einer Lösung von Netways zu diesem Problem geführt. Die dort beschriebene Lösung habe ich dann noch etwas angepasst, so dass die Anrufe von Asterisk über SIP an eine beliebige Telefonnumer geschickt werden. Hierzu rufe ich das Perlscipt call.pl wie folgt auf:

/usr/bin/printf "%b" "$MESSAGE" | /usr/lib/nagios/contrib/nagios2asterisk/call.pl -n $CONTACTPAGER -c 110 -C "SIP/$CONTACTPAGER@sipgate-out"

Im Asterisk ist unter sipgate-out die Verbindung zu meinem VoIP Provider (in diesem Falle sipgate) definiert. In $CONTACTPAGER steht die anzurufende Telefonnummer und in $MESSAGE die vorzulesende Nachricht. Damit die Alarme vom Nagios etwas besser verständlich werden, habe ich um das ganze noch ein wrapper script drum rum gebaut. Dieses schickt dann in Abhängigkeit vom Nagios Alarmtyp unterschiedliche Nachrichten ans Telefon. Zu den verwendeten Text2Voice Tools (MBROLA, TXT2PHO) gibt es auch einige Anmerkungen: Damit die MBROLA Binaries auf meinem Ubuntu x64 System laufen, musste ich erst noch (auch bei der x64 Version von MBROLA) das Paket libc6-i386 installieren. Ein . (Punkt) im vorzulesenden Text erzeugt eine Pause. Dieses Element sollte man durchaus nutzen um die Nachrichten verständlicher zu gestalten. Ich nutze zum Vorlesen die Stimme de5, da ich diese für am verständlichsten halte.

Keine AC/DC Karten :-(

Hmpf. da steht man schon um 10:45 in der Schlange am Karstadt Ticketschalter und was passiert? Von den vielleicht 30 Leuten in der Schlange bekommen gerade mal 4-5 Karten für eines der AC/DC Konzerte 2009 in Deutschland. Nach 45 Minuten anstehen steht fest: Alle Konzerte ausverkauft. Da kann man nur hoffen das es noch Zusatztermine oder OpenAir Konzerte geben wird um die Altrocker nochmal live zu sehen.

Don’t use OpenVPN with UDP? Bad performance?

Ich stellte schlechte OpenVPN Performance über ein 100MBit Netzwerk fest. Von meinem Macbook aus erreichte ich via Tunnelblick nur ca. 10 MBit auf einen Linux Server. Nach längeren Tests stellte es sich heraus, dass ein Schwenk auf TCP anstatt von UDP das Problem beseitigt und ich annähernd 100 MBit über den Tunnel übertragen kann. Keine Ahnung, ob das nur in meiner Konfiguration der Fall, ein generelles Problem oder nur bei den Messungen via iperf der Fall ist.

openvpn with cryptodev support

Da ich seit einigen Tagen Besitzer eines Alix 6B2 mit Geode CPU bin, musste natürlich auch die Hardware AES Beschleunigung dieser Plattform ausgenutzt werden. Um das ganze unter Linux zum laufen zu bekommen, ist etwas patching nötig. Unter diversen *BSD Varianten funktioniert das wohl „out of the box“. Es braucht einen Linux Kernel mit geode-aes support und den Cryptodev Patches. Ich habe die OCF Impelementierung und einen Standard 2.6.26.2 Kernel genutzt. Im Archiv ocf-linux-20080704.tar.gz gibt es ein Unterverzeichniss ocf welches nach linux-2.6.26.2/crypto/ocf kopiert werden möchte. Anschließend habe ich den Kernel patch angewendet: linux-2.6.26.2 $ patch -p0 < ../ocf-linux-26-20080704.patch. Laut einem Mailinglisten Eintrag auf der OCF Liste brauchts noch einen Patch für 2.6.26er kernel. Diesen habe ebenfalls eingespielt: linux-2.6.26.2 $ patch -p0 < ../ocf-2.6.26.patch. Nun kann man normal via make menuconfig seinen Kernel konfigurieren. Für crypdodev support auf Geode sind folgende Einstellungen nötig:

CONFIG_OCF_OCF=m
CONFIG_OCF_CRYPTODEV=m
CONFIG_OCF_CRYPTOSOFT=m
CONFIG_CRYPTO_DEV_GEODE=m

Sobald der Kernel gebootet ist, sollte man die Module geode-aes, ocf, cryptodev und cryptosoft laden können und über die cryptotools erste Tests (z.B. cryptotest 100 4096) machen können. Damit nun auch Anwendungen wie z.B. OpenVPN von der Hardwareunterstützung profitieren können, muss openssl gepatcht werden. Ich habe hierzu das Source Paket von openssl aus dem kommenden Debian lenny verwendet, gepatcht und installiert:

# apt-get --default-release=lenny source openssl
# cd openssl-0.9.8g/
openssl-0.9.8g # patch -p0 < ../ocf-linux-20080704/openssl-0.9.8g.patch
openssl-0.9.8g # vi debian/rules
[...]
CONFARGS = --with-cryptodev --prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib enable-tlsext
[...]
"debian/rules" 173L, 6720C geschrieben
openssl-0.9.8g # dpkg-buildpackage -rfakeroot -uc -b

Sobald die gepatchte openssl Version installiert ist kann man via openssl engine prüfen ob crpytodev Support gegeben ist. Falls ja trägt man noch

cipher AES-128-CBC
engine cryptodev
in seine OpenVPN Config ein und kann von der Hardware Beschleunigung profitieren.

Folgendes Howto hat sehr weitergeholfen:
http://www.docunext.com/wiki/My_Notes_on_Patching_2.6.22_with_OCF