Kategorie-Archive: Tipps & Tricks

„Can’t connect to X11 window server“-Error

Als ich letztens eine Serverwartungs-GUI über mein VNC lassen wollte bekam ich auf einmal eine komische Fehlermeldung:

Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.

Nach etwas googeln hat mir dann stress_junkie vom Forum linuxquestions.org die Erklärung (inklusive Lösung) geliefert:

If the Java program is running under your own account then the problem comes from DISPLAY being incorrectly defined. Try this:

export DISPLAY=“:0.0″

If a different user account is running the program then the user account that „owns“ the console must add permission for others to display on „their“ X display. Try this:

xhost +local:all

If the program is being used on a different computer, say 192.168.3.5 then try this:
Code:

xhost +inet:192.168.3.5

Ich wollte die GUI nämlich über einen anderen User laufen lassen. Nachdem ich bei diesem den Befehl xhost +local:all ausgeführt hatte, konnte ich zurück zum ausführenden User wechseln und das Programm problemlos starten. Denn nun hatte es die Berechtigung, das X11 window des xterm-Besitzers benutzen zu dürfen.

Praktische Methode zum „Kopieren mit Ausschluss“ unter Linux

Das Linux-Command cp enthält leider keine „–exclude“-Funktion. Daher kann man, wenn man rekursiv kopieren will, keine Verzeichnisse oder Dateien angeben, die ausgeschlossen werden sollen. In einem Forum habe ich diesen Tipp gelesen (und dann ausprobiert), der wirklich clever ist.

Das Programm tar enthält eine exclude-Funktion. Also nutzen wir doch einfach dieses:

1
tar -cvf - --exclude dir1 --exclude dir2 --exclude file1.ext --exclude file2.ext /path/to/source | (cd /path/to/destination; tar -xvf -)

Danke für diesen Tipp an vsemaska von linuxforums.org.

CPU klebt an Kühlkörper – was tun?

Gestern habe ich mich endlich durchgerungen, mein Notebook richtig zu reinigen. Seit einiger Zeit hatte es im Idle-Betrieb 63-65° C und ist bei diversen Games, z.B. dem fordernden „Episodes from Liberty City“, sogar (zum Schutz der CPU) heruntergefahren – bei über 95° C. Das konnte nicht so weiter gehen, aber nach prüfendem Blick auf die Innereien des Laptops (MSI GT627-8647VHP) vor ein paar Monaten hatte ich es ad Acta gelegt weil es schien, man müsste das ganze Notebook zerlegen um an den verschmutzten (das konnte man sogar von außen sehen!) Luftabzugsschacht zu kommen.

Glücklicherweise hat dann jemand – wahrscheinlich ein Mitarbeiter von MSI – ein Video gepostet, in dem das Zerlegen des baugleichen Modells GX620 beschrieben wird. Mit dieser Anleitung im Rücken habe ich das Notebook zerlegt und dabei fiel mir auf, dass es die CPU beim Anheben der Heatpipe direkt mit aus dem Sockel gezogen hat, so fest verband das Wärmeleitpad Heatpipe und Prozessor. Um aber die CPU später wieder korrekt einsetzen zu können musste ich aber Heatpipe und CPU trennen (der Feststellmechanismus war sonst verdeckt).

Dabei hat mir ein ganz einfacher Trick (gepostet in diesem Forum) geholfen, den ich hier weitergeben möchte: Man nehme einen Fön und erhitze die CPU so stark, dass man sie gerade noch anfassen kann. Dann dreht man einfach ein bisschen und zack: die CPU ist ab.

Nach dem Auftragen der neuen Wärmeleitpaste (ich kann hier die von mir verwendete Arctic MX-2 empfehlen) und dem Zusammensetzen schnurrt der Q9000 nun wieder mit akzeptablen 47° C im Leerlauf – bei 30° Raumtemperatur.

Netlimiter 3: Remote-Control richtig einrichten

Viele Anwender berichten von Problemen bei der Einrichtung des Remote-Control-Service von NetLimiter (speziell unter Windows 7). Ich selbst bin auch auf diverse Probleme gestoßen. Hier die Lösung:

  • Der wichtigste Schritt besteht darin, Windows 7 zu sagen, dass es Remote-Anmeldungen mit eingetragener Domäne nicht filtert sondern direkt weitergibt. Dafür erstellt man unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\ den DWORD(32 Bit)-Eintrag LocalAccountTokenFilterPolicy mit dem Wert 1.
  • Als nächstes kontrolliert man, ob die Dienste „Server“ und der RPC-Dienst unter Verwaltung->Dienste auch läuft.
  • Last but not least muss man in der Windows-Firewall (so aktiv) den Netlimiter-Service (nicht dem Client!) als Serverdienst erlauben.

Mit diesen Einstellungen bekommt man sofort Verbindung zum Remote-Netlimiter und kann wie vom lokalen Benutzer gewohnt die Limits setzen und aufheben.

MySQL und Index – oder: warum %-Zeichen böse sind

Heute bin ich auf eine interessante Sache gestoßen, die eigentlich ganz logisch ist (wenn man ein wenig über Bäume Bescheid weiß), auf die man aber von allein trotzdem erst nach viel Nachdenken kommt wie ich finde. Daher will ich sie niemandem vorenthalten 🙂

Es fing alles damit an, dass MySQL-Queries des XMLArsenal (siehe Projekte) unglaublich lange brauchten. Ein JOIN über 3 Tabellen mit WHERE-Clause auf einer und Primärschlüsseln in allen Tabellen (die zum JOIN verwendet wurden) brauchte teilweise bis zu 2 Sekunden. Nun ist der Datenbestand recht groß, etwa 170.000 Zeilen (~2GByte) in der größten Tabelle. Trotzdem konnte es eigentlich nicht angehen zumal auf der Namensspalte, die ich in der WHERE-Clause verwende, bereits ein Index definiert war. An dieser Stelle muss ich mich bei Silvan Mühlemann von techblog.tilllate.com bedanken, sein Artikel „Optimierung von MySQL-Abfragen: Verwendung des Index“ hat mich auf die richtige Spur bzw. eigentlich gleich zur richtigen Lösung gebracht: Nutzt man

1
LIKE %Name%

kann MySQL den definierten Index nicht nutzen, d.h. wieder Scan über die ganze Tabelle. Lässt man das vordere % weg wird das Ergebis zwar kleiner aber es steht der Nutzung des Index nichts mehr im Wege – Speedup in diesem Fall: 50.000-fach. Merke: kein % vorn wo es nicht unbedingt nötig ist. Faszinierend. 🙂

VPN-Tunnel mit pptpd

Wenn man in öffentlichen, nicht verschlüsselten Netzwerken unterwegs ist ist es immer eine gute Idee, den gesamten Internetverkehr zu verschlüsseln. Und wenn man schonmal einen Rootserver hat…

Also habe ich mich entschieden pptpd aufzusetzen, weil es nicht nur von Windows nativ unterstützt wird sondern auch von fast allen modernen Mobilgeräten und auch von Linux. Die Konfiguration ist eigentlich sehr simpel, der „Trick-Teil“ kommt am Ende. Für den muss ich mich bei „Lord Gurke“ aus dem Serversupportforum bedanken.

Also, los gehts:

apt-get install pptpd

Das war schon alles, was man installieren muss. Nun folgt die Config. Zunächst kommt /etc/pptpd.conf dran. Hier werden u.a. die IP-Adressen für das neue Netzwerk bestimmt.

1
2
3
4
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.1.1
remoteip 192.168.1.200-253

Das heißt im Klartext, dass mein Rootserver die IP 192.168.1.1 erhält und alle Clients automatisch Adressen von 200 bis 253 zugewiesen bekommen. Sehr komfortabel 🙂

Als nächstes wird /etc/ppp/pptpd-options editiert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
nodefaultroute
mtu 1490
mru 1490
noipx
lock
nobsdcomp

Neben einigen für das System wichtigen Einstellungen wird hier eingestellt, dass der Rootserver seine Adresse als DNS-Server an die Clients pusht und dass nur das (noch) als sicher geltende MS-CHAPv2 als Authentifizierungsverfahren zum Einsatz kommt.

Die Benutzerdaten liegen bei pptpd leider unverschlüsselt im Keyfile, insofern sollte man vorsichtshalber einen zufälligen Schlüssel nehmen, den man sonst nirgends verwendet. Das Keyfile ist /etc/ppp/chap-secrets und wie folgt aufgebaut:

Username<TAB>*<TAB>Passwort<TAB>*
Das letzte Sternchen kann man dabei auch durch eine IP-Adresse oder einen IP-Adressbereich ersetzen, dann kann man nur aus diesem Netz bzw. von dieser IP auf den Server zugreifen.

Soa, jetzt zum „Trick-Teil“ 😉
PPTPD leitet in der bis jetzt geschaffenen Umgebung keine Internetanfragen weiter. Dazu muss über iproute erst noch eine Route eingerichtet werden:

1
2
3
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P OUTPUT ACCEPT

Das packt man am besten direkt in ein rc-Script damit es beim Serverneustart geladen wird.
Als letztes dann noch die /etc/sysctl.conf bearbeitet werden und die Zeile

net.ipv4.ip_forward = 1

von ihrer Kommentar-Raute befreit werden. Und fertig.

Google Gears und der Firefox 3.6

Mit einer schwachen Internetleitung ist man dankbar für jedes Quentchen eingesparte Bandbreite. Daher nutze ich z.B. für das WordPress-Dashboard von http://the-enlightened.de/ die „Turbo“-Funktion über Google Gears. Nun nutze ich aber – wie wahrscheinlich jeder einigermaßen sicherheitsbewusste User – grundsätzlich die neueste Version von Firefox, das ist also seit einiger Zeit Version 3.6. Seit dessen Erscheinen hat Google mehrfach angekündigt, eine 3.6-kompatible Version von Gears herauszubringen, bisher ist aber nichts dergleichen geschehen. Gottseidank gibt es findige Köpfe wie „Pascal“, der seine aus dem frei verfügbaren Gears-Quelltext kompilierte und 3.6 kompatible Version allen Firefox-Nutzern hier zur Verfügung stellt. Danke auch an den GoogleWatchBlog, der zuerst einen Artikel darüber gebracht hat.

css.php