Stabile VPN-Verbindung zwischen zwei Fritz!Boxen

Vor einigen Tagen habe ich zwei Fritz!Boxen 3370 per VPN miteinander verbunden. Das klappt erstaunlich gut, wenn man der Anleitung von AVM folgt. Bis ich dann begonnen habe, die Idee eines Backups von einem Server in Netzwerk 1 auf eine QNAP TS121 in Netzwerk 2 per rsync umzusetzen: Regelmäßig alle paar Minuten brach die VPN-Verbindung zwischen den Netzwerken ab. Die Logs der Fritz!Boxen weisen häufig Zeilen mit „IKE-Error 0x1c“ oder „Ursache 4: Decapsulation Error“ auf. Nun muss man dazusagen, dass die Fritz!Box des Quellnetzwerks mit 16 MBit DSL (1 MBit up) angebunden ist, die Fritz!Box des Zielnetzwerks mit 6 MBit DSL (672 kbit up). Nach ein wenig Google-Consulting kristallisierte sich heraus, dass die Fritz!Boxen aufgrund der Last auf der Leitung nicht mehr in der Lage waren, die VPN-Informationen auszutauschen. Womit auch die Lösung des Problems klar wurde: Die von rsync zu verwendende Bandbreite muss reduziert werden. Hierzu boten sich im vorliegenden Setup zwei Möglichkeiten an:

  1. Begrenzung in der QNAP
  2. Begrenzung beim Aufruf von rsync

Da die Limitierung durch die Upload-Rate der sendenden Seite bestimmt wird, muss ausgehend von 1 MBit ein passender Wert bestimmt werden. 1 MBit entspricht gut 120 kB/s. Dieser Wert ist also das Maximum, das der Sender liefern kann. Dieser Wert muss entsprechend abgesenkt werden, um die VPN-Verbindung stabil zu halten. Ich habe zunächst eine Begrenzung auf 90 kB/s ausgewählt.

Variante 1: Begrenzung der Bandbreite in der QNAP

Bei der Einrichtung des Sicherungsmanagers kann man im Menü „Rsync-Server“ eine maximale Download-Rate aktivieren. Hierzu einfach das entsprechende Häkchen setzen und die Zahl 90 in das zugehörige Feld eintragen. Dann zusätzlich die Häkchen bei „Einem Remote-Server erlauben diesen Server als Replikationsziel zu benutzen“ und „Standard Rsync benutzen“ setzen und einen Benutzernamen und ein Passwort auswählen.

Variante 2: Begrenzung der Bandbreite beim Aufruf von rsync

Alternativ kann man die Bandbreite auch beim Aufruf von rsync auf der sendenden Seite begrenzen. Dies hat den Vorteil, dass man recht einfach mit unterschiedlichen Werten experimentieren kann. rsync bietet hierfür den Schalter --limitbw an. Das gewünschte Limit wird per Default in kB angegeben, also im vorliegenden Fall --limitbw=90. Man kann jedoch auch entsprechende Suffixe wie „k“ oder „m“ verwenden (siehe rsync man page).

Egal, welche Variante gewählt wird, ist zu beachten, dass man die Bandbreite ggf. weiter hinuntersetzen muss, wenn nebenbei andere Dienste im sendenden Netzwerk Datenvolumen nach außen verursachen. So war bspw. ein parallel laufendes Skype-Telefonat praktisch unmöglich.

Rosa Upgrade-Vorschlag

Heute mal ein wenig Telekom-Bashing…

Da erreichte mich gestern ein Brief vom rosa Riesen, in dem ein neues Produkt namens „Call & Surf Comfort via Funk“ angeworben wird. Ich solle doch direkt umsteigen um für nur 40 Euro pro Monat mit DSL-Geschwindigkeit (bis zu 7,2 MBit) surfen zu können.

Na klar, und schon führe ich ein „Upgrade“ von derzeit 16 MBit auf 7,2 MBit durch und werfe der Telekom dafür monatlich auch noch mehr Geld als bisher in den Rachen…

m(

Ein Hoch auf das Backup II

Nachdem ich neulich schon einmal zwei komplette Partitionen zerlegt hatte, folgte am Wochenende dann noch einmal mein Heimatverzeichnis. Was war diesmal passiert?
Nach der Aktion letztens habe ich ein wenig Ordnung geschaffen und unter anderem ein paar Mountpoints umgehangen. Damit einhergehend mußten einige Shell-Skripte angepaßt werden, da sie auf den betroffenen Mounts arbeiteten. Also habe ich mir alle Skripte vorgenommen.

Wirklich alle? Nein! Ein unbeugsames Skript versteckte sich bis zu diesem Wochenende. Und schlug zu. Gnadenlos.

Da ein Zielverzeichnis nicht auffindbar war, entschloß es sich, einfach direkt in meinem Heimatverzeichnis zu arbeiten. Und das Skript ist für die Spiegelung eines FTP-Verzeichnisses verantwortlich…

Da ich noch von der letzten Restore-Erfahrung warmgelaufen war, wußte ich, was zu tun war…

Ein Hoch auf das Backup

Neulich habe ich als bekennender Hobby-Admin mit gefährlichem Halbwissen wieder etwas gelernt: Wie wichtig es ist, Sicherungen seiner persönlichen Daten zu haben. Was war passiert?
Nun, auf meinem Server wollte ich wegen Platzmangels zwei Partitionen zu einer zusammenlegen. Das ging natürlich gründlich daneben, obwohl das System sich zunächst unauffällig verhielt. Ich habe via sysinstall die betreffenden Partitionen auf der Systemplatte gelöscht und versucht, eine neue anzulegen. Einzig der Hinweis, ich möge das sysctl-Flag kern.geom.debugflags verändern, hätte Aufmerksamkeit erzeugen sollen. Auch, daß sysinstall sich danach trotzdem weigerte, eine neue Partition anzulegen. Erst gpart konnte das „erfolgreich“ erledigen. Nach dem Zurückkopieren der Daten habe ich dann einen Neustart durchgeführt und wurde direkt begrüßt:

Invalid partition table.

*Panik*

Per Google-Consulting wurde ich auf die Anwendung Testdisk aufmerksam. Ich habe denn also ein Knoppix gezogen und damit den Rechner neugestartet. Ganz erfolgreich war TestDisk allerdings nicht, er hat zwar alle Partitionen erkannt, konnte jedoch nur die erste wiederherstellen. Aber das genügte schon, da sich auf dieser das System selbst befindet. Nach einem weiteren Neustart konnte ich dann auf der nun praktisch leeren Platte eine neue Partition erstellen und die Daten aus den Backups wiederherstellen.

Die ganze Aktion hat mich gut vier Stunden Arbeit gekostet, aber Daten sind dabei zum Glück nicht verlorengegangen.

Fazit:

  • Backups sind überlebensnotwendig!
  • Spiele niemals an der Partitionen der Systemplatte herum, es sei denn Du hast Langeweile und stehst auf Schmerzen!
  • Halte immer eine Live CD vor.

TabPanel mit Tapestry5 und Bootstrap

Heute gibt es mal wieder einen Artikel aus der Entwicklerkiste.

Für eine derzeit von mir entwickelte Webanwendung möchte ich gern Daten thematisch sortiert in einem TabPanel anzeigen. Die von mir für das Layout verwendete Bibliothek Twitter Bootstrap liefert bereits das Stylesheet und die Javascript-Funktionen mit. Nun gilt es nur noch, diese mit dem ebenfalls verwendeten Tapestry-Framework zu verheiraten. Dies muß im wesentlichen geschehen, um die Informationen des clientseitig ausgewählten Tabs nicht zu verlieren. Nichts liegt also näher, eine eigene Tapestry-Komponente mit anhängendem Template zu entwickeln. Ich habe zwar zunächst Google-Consulting betrieben und bin auch in der Tat auf fertige Lösungen gestoßen (u.a. ChenilleKit), aber die passen entweder nicht ins Layout oder sind einfach zu übertrieben… Und eine solche Komponente selbst zu entwickeln, ist leichter, als ich zunächst angenommen hatte. weiterlesen TabPanel mit Tapestry5 und Bootstrap

Die eigene Wolke mit ownCloud

Bereits seit längerem sind sogenannte Cloud-Dienste in aller Munde: Diese bieten diverse Dienstleistungen im oder über ein Netzwerk an. Dabei kann es sich um Laufzeitumgebungen handeln, aber auch um Rechenkapazität oder simplen Speicher. Ein Anwender muß also die notwendige Infrastruktur nicht mehr selbst zur Verfügung stellen, sondern kann derartige Dienste kostenlos oder gegen Einwurf entsprechender Münzen benutzen. Als Beispiele für Cloud-Speicher seien Amazon S3, DropBox, Microsoft SkyDrive, Apple iCloud oder Ubuntu One genannt. Diese Dienste locken denn auch teilweise mit Features wie Synchronisation und Sharing.
Was mich an solchen Diensten jedoch stört: Man gibt die Herrschaft über seine persönlichen Daten auf: Sie werden auf einem zentralen Server – schlimmstenfall irgendwo in den U.S. of A. – gespeichert und von dort auf die persönlich konfigurierten Geräte übertragen. DropBox geht sogar soweit, daß Daten nicht zwingend für jeden Benutzer im Original vorliegen, stattdessen werden Hashwerte gebildet und bei Übereinstimmung wird die entsprechende Datei als eine Art Link verfügbar gemacht. Zudem versprechen die Anbieter zwar eine Verschlüsselung der Daten, aber gerade in den USA gilt, daß ein Anbieter den Behörden Zugriff auf seine Daten geben muß. Also muß er in der Lage sein, per Master-Key o.ä. alle Daten entschlüsseln zu können. Zumindest Apple ist diesbezüglich vor Kurzem in die Schlagzeilen geraten.

Für mich war der Datenschutz das K.O.-Kriterium für Cloud-Dienste. Bis vor kurzem…

… Da stolperte ich bei heise über einen Artikel über ownCloud, einer freien Cloud-Speicher-Lösung, die man auf einem eigenen Server installieren kann.
weiterlesen Die eigene Wolke mit ownCloud

Das komatöse Windows

Heute war es soweit: Zum ersten Mal in meinem Leben habe ich ein Windows-System zerlegt. Was war passiert? Nun, mein Dienst-Notebook mit Windows 7 verabschiedete sich irgendwann am Nachmittag in den – wie ich ihn nenne – komatösen Ruhezustand. Den kenne ich noch von den XP-Notebooks bei meinem früheren Arbeitgeber: Der Bildschirm wird schwarz, der Rechner ist augenscheinlich an, läßt sich aber weder durch Mausbewegungen, noch durch Tastaturanschläge oder einen kurzen Druck auf den Ein-/Ausschalter reaktivieren. Also hilft nur ein- und wieder ausschalten. Das ging auch bisher gut. Nur das neue Notebook hat mir das heute so übel genommen, daß es sich weigerte, den Bootprozeß über die Anzeige des ThinkPad-Logos hinaus fortzusetzen. Stattdessen blinkte selbiges immer fröhlich auf.
Fünf Wochen… Das System hat gerade einmal fünf Wochen gehalten. Und dabei kann man als Anwender nicht mal etwas kaputtmachen, da man als Standardbenutzer arbeitet.. Es ist mir ein Rätsel…

Der Verschiebebahnhof

Heute beantworte ich mal die Frage, wie eigentlich die Historie aussieht, wenn man nur gefährliches Halbwissen im Umgang mit Git hat. Ich gebe zu, daß ich mit Git derzeit mehr Probleme bei der Einarbeitung habe, als seinerzeit mit CVS oder Subversion. Das liegt vermutlich an mangelnder Zeit und an für mich ungewöhnlichen Bedienung. Aber das wird noch…

Jedenfalls fragte mich vor einigen Tagen ein Kollege, ob ich denn der „Merge-Hölle“ entkommen sei, kurz nachdem ich einige Commits durchgeführt hatte. Wie er darauf kommt? Er hat sich die grafische Darstellung der Historie angesehen, die ihn irgendwie an einen Verschiebebahnhof erinnerte:

Verschiebebahnhof

Einen sehr verrückten, möchte ich hinzufügen…

Aus alt mach neu

Nach nunmehr sechs Jahren beinahe pausenlosen Einsatzes hat mein alter Server sein Rentenalter erreicht. Zeit für mich, nach einem Ersatz Umschau zu halten. Bereits Ende letzten Jahres fiel meine Entscheidung auf einen HP ProLiant MicroServer. Ich war mir nur nicht sicher, wie es mit der Hardware-Unterstützung durch FreeBSD aussah (speziell die Broadcom-Netzwerkkarte). Die Zweifel haben sich jedoch in Luft aufgelöst und so konnte ich zuschlagen. Ich habe dem Rechner noch zusätzlichen Speicher gegönnt, werde jedoch demnächst nochmal aufrüsten müssen, so ein Apache Tomcat verschlingt ja Speicher ohne Ende… 🙂 Zudem habe zwei dicke Festplatten verbaut; ich bin aufgrund der schlechten Presse und der verdammten Schwebung im alten Server von Seagate zur Green-Serie von Western Digital gewechselt. Mal sehen, wie die sich so im täglichen Gebrauch machen…
Mittlerweile ist auch alle notwendige Software installiert und ich habe mir geschworen, regelmäßig alle Pakete zu aktualisieren. Das habe ich auf der alten Kiste ja sträflich vernachlässigt. 🙂 weiterlesen Aus alt mach neu

Numerische TextBox in Windows Forms

Derzeit habe ich zusammen mit einem Kollegen das Vergnügen, eine „historisch gewachsene“ VB6-Anwendung nach C#/.NET migrieren zu dürfen. „Migrieren“ steht in den Augen des Kunden hierbei vor allem für „Aufräumen und zum Funktionieren bringen und alles so aussehen lassen wie zuvor“.
Da in der Anwendung sehr viel mit Zahlen jongliert wird, haben wir uns zunächst die MaskedTextBox angesehen, aber ziemlich schnell festgestellt, daß diese nur für Zahlen mit statischem Muster nützlich ist: Nehmen wir an, man kann ein- bis dreistellige Zahlen mit vier Nachkommastellen haben. Die dafür notwendige Maske lautet „999.0000“ oder ähnlich. Über ein DataBinding sollte dann die Zahl 3,0303 in dieser TextBox landen. Was hat Windows daraus gemacht? 303,03! Und warum? Weil diese Textboxen offenbar von links ausgefüllt werden. Also für unsere Zwecke nicht zu gebrauchen.
Wir mußten uns also hinsetzen und mit Hilfe von Hirn und Google etwa eigenes bauen. In diesem Artikel möchte ich nun Schritt für Schritt zeigen, wie man eine TextBox bauen kann, die nur numerische Werte (ganze Zahlen aber auch Dezimalzahlen) akzeptiert. weiterlesen Numerische TextBox in Windows Forms