UMTS-Verbindung per WLAN-Teilen
Sunday, July 11. 2010
Es ist Sommer. Es ist Urlaubszeit. Für viele bedeutet das, dass sie von ihrem geliebten Internetanschluss getrennt sind. Das kann natürlich auch ein Segen sein. Kann man - aus welchen Gründen auch immer - trotzdem nicht auf das Internet verzichten, bieten UMTS-Modems heutzutage eine günstige Möglichkeit für temporäres "Unterwegs_Internet".
Ich habe mich für den Surfstick von o2 entschieden, den es in einer Prepaid-Variante für 30-35€ gibt. Über das Prepaid-Guthaben kann man dann entweder für 0,9ct/min, 3,50€/Tag oder 25€/Monat surfen. Guthaben für 5 Tage ist bereits dabei. Die gewünschten Tarife kann man entweder mit der nur unter Windows laufenden mitgelieferten Software wählen, oder per SMS vom Handy.
Der Stick
Soweit ich weiss, werden alle UMTS-USB-Modems erkannt, die sich momentan im Umlauf befinden. Manchmal sind kleine Nachbesserungen notwendig. So auch bei meinem Stick. Die auf dem Stick vermerkte Bezeichnung lautet Huawei E1550, erkannt wird er allerdings als Huawei E161mit der USB-Id 12d1:1446 (lsusb). Das Problem ist, dass der Stick sobald er Strom bekommt in einen speziellen Modus wechselt, in welchem er ein CD-ROM-Laufwerk vortäuscht (welches die Treiber für Windows enthält). Der Windows-Treiber sorgt dafür, dass in den Modem-Modus gewechselt wird. Das müssen wir unter Linux leider von Hand erledigen. Dazu erstellt man eine UDEV-Regel, in dem man mit root-Rechten folgende Datei anlegt:
/etc/udev/rules.d/15-huawei-e161.rules
SUBSYSTEM="usb"
SYSFS{idProduct}="1446"
SYSFS{idVendor}="12d1"
RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"
Seit Ubuntu 9.10 (karmic) wird der Befehl modem-modeswitch von udev bereitgestellt. Unter 9.04 (jaunty) muss man dazu noch das Paket udev-extras installieren.
Steckt man nun den USB-Stick an, wird automatisch in den Modem-Modus gewechselt, wodurch sich die USB-Id in 12d1:140c ändert
Die Internetverbindung
Die Verbindung wird über den Network-Manager aufgebaut. Unter Mobiles Breitband fügt man eine Verbindung hinzu und klickt sich bis zur Auswahl des Tarifs durch. Hier sollte man darauf achten, dass man den korrekten APN für seinen Tarif nimmt. Der APN für o2-Prepaid ist nicht gelistet und lautet pinternet.interkom.de (s. Abb.). Nun sollte man über den Network-Manager eine Verbindung aufbauen können.
Wird die Verbindung zwar aufgebaut, aber man kann keine Domains auflösen, epnfiehlt es sich die Verbindung nochmals zu bearbeiten und in den IPv4-Einstellungen DHCP auf "nur Adressen" zu stellen. Als DNS-Server stellt man dann einen eigenen ein. Suchmaschinen helfen da weiter. Ein beliebter offener DNS-Server ist bspw. 8.8.8.8 von Google.
Der WLAN-Access-Point
Um einen WLAN-AP zu betreiben braucht man eine WLAN-Karte, die sich in den "Master-Mode" versetzen lässt. Ob das mit der eigenen Karte funktioniert sagt einem Google. Meine Atheros-Karte welche ich über den ath9k-Treiber betreibe, eignet sich.
Man benötigt das Paket hostapd, um die WLAN-Karte in einen AP zu verwandeln und das Paket dnsmasq, um den verbundenen Clients eine IP-Adresse zuzuweisen.
Annahmen und Ziele
- Im folgenden gehe ich davon aus, dass die Internet-Verbindung vom Interface ppp0 angeboten wird, und dass dieses korrekt konfiguriert ist.
- Das WLAN-Interface, welches wir zum AP machen, heisst typischerweise wlan0
- Das WLAN-Interface des Access-Points bekommt die IP-Adresse 10.10.0.1 und als Subnetz 255.255.255.0.
- Die Clients sollen IP-Adressen von 10.10.0.2 bis 10.10.0.150 zugewiesen bekommen.
- Der AP bekommt die SSID MeinNetz, wird per WPA1/2 geschützt, bekommt den Schlüssel MeinSchluessel und wird auf Kanal 9 betrieben.
- Diese Annahmen bitte den eigenen Wünschen und Begebenheiten anpassen.
Im Folgenden liste ich die anzupassenden Dateien mit den anzupassenden oder hinzuzufügenden Zeilen. Die Dateien müssen alle mit Root-Rechten angepasst werden.
hostapd Konfiguration
/etc/network/interfaces
auto wlan0 iface wlan0 inet static address 10.10.0.1 netmask 255.255.255.0
/etc/hostapd/hostapd.conf
interface=wlan0 bridge=br0 driver=nl80211 ssid=MeinNetz country_code=DE ieee80211d=1 hw_mode=g channel=9 wpa=3 # Den folgenden Wert erhaelt man unter Eingabe von # wpa_passphrase MeinNetz MeinSchluessel wpa_psk=ef6d1d87c6f550df91b28256b7c5abff7d0a9cb597f49389f51ec0d0d1a00d97 wpa_pairwise=TKIP CCMP
/etc/default/hostapd
RUN_DAEMON="yes" DAEMON_CONF="/etc/hostapd/hostapd.conf"
/etc/modules
hostap hostap_pci
dnsmasq Konfiguration
/etc/dnsmasq.conf
interface=wlan0 dhcp-range=10.10.0.2,10.10.0.150,12h
Zum Schluss muss über ein paar Firewall-Regeln dafür gesorgt werden, dass der Netzverkehr von wlan0 an ppp0 weitergeleitet wird. Damit dies dauerhaft so ist, trägt man die Regeln in die Datei /etc/rc.local vor dem exit 0 ein.
iptables -A FORWARD -i ppp0 -o wlan0 -s 10.10.0.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sysctl -w net.ipv4.ip_forward=1
Fertig
Da der Network-Manager noch das wlan0-Interface für sich vereinnahmt, sollte man den Rechner nun einmal neu starten. Alternativ kann man den die Dienste networking, network-manager, hostapd und dnsmasq neu starten und danach die UMTS-Verbindung aufbauen.
Falls bei einem Neustart das Icon für den Network-Manager nicht angezeigt wird, kann man ihn mit sudo restart network-manager neu starten.
Alternative Konfiguration
Will man den AP nur bei Bedarf an- und abschalten - bspw. weil man ansonsten auch das WLAN nutzen möchte, empfiehlt es sich die entspr. Dienste nicht automatisch zu starten. Dies stellt man in den Dateien /etc/default/hostapd und /etc/default/dnsmasq ein (selbsterklärend). Ich nutze zwei Skripte, um den AP zu starten oder zu stoppen. Damit diese funktionieren braucht man noch zwei Versionen der Datei /etc/network/interfaces. Eine unveränderte, welcher ich den Anhang .regular gebe und eine, welche wie oben angegeben modifiziert wurde und den Anhang .hostapd bekommt. Ausserdem sollte auch die /etc/rc.local im ursprünglichen Zustand sein. Die Skripte sehen dann so aus:
$HOME/bin/ap_start
sudo cp /etc/network/interfaces.hostapd /etc/network/interfaces sudo /usr/sbin/hostapd -B -P /var/run/hostapd.pid /etc/hostapd/hostapd.conf sudo /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq sudo iptables -A FORWARD -i ppp0 -o wlan0 -s 10.10.0.0/24 -m conntrack --ctstate sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sudo sysctl -w net.ipv4.ip_forward=1 sudo restart network-manager
$HOME/bin/ap_stop
sudo cp /etc/network/interfaces.regular /etc/network/interfaces sudo killall hostapd sudo killall dnsmasq sudo restart network-manager
Mit dem ersten Skript startet man dann den AP und kann danach die Verbindung aufbauen. Mit dem zweiten stellt man den gewohnten Zustand wieder her.
Passwort-Wechsel
Wednesday, June 9. 2010
Kurz notiert: Hin und wieder sollte man das Passwort seines Systems wechseln. Da ist es nützlich zu wissen, dass das Passswort u.U. an drei Stellen geändert werden muss. Nutzt man ecryptfs, z.B. zum verschlüsseln des Home-Verzeichnisses, dann wird das "mount-passphrase" mit dem Login-Passwort verschlüsselt. Beim Login wird es dann entschlüsselt und auf das verschlüsselte Home-Verzeichnis angewandt, so dass auch dieses entsperrt ist. Auch der Anmelde-Schlüsselbund (gnome-keyring) wird beim Einloggen entsperrt. Er enthält bspw. die bereits eingegebenen Passwörter für Funknetze.
Ändert man nun einfach so sein Login-Passwort, kann es passieren, dass man nicht auf sein Home-Verzeichnis zugreifen kann. Oder es wird beim Versuch mit einem WLAN zu verbinden das Passwort-Fenster von gnome-keyring angezeigt, welches einen auffordert das alte Passwort einzugeben. Das ist sehr ärgerlich.
Um solche Probleme zu vermeiden, sollte man das Passwort ausschliesslich im Terminal mit dem Befehl passwd ändern. Nur so ist nach meinen Tests momentan zu 100 Prozent sichergestellt, dass alle PAM-Module ihre Passwörter mitändern. Das ist nicht besonders benutzerfreundlich, aber momentan der einzige Weg.
Endlich: Ersetzen-Dialog in Nautilus!
Monday, June 7. 2010
Was lange währt... Unendlich lange hat es gedauert. Nautilus hat einem beim Überschreiben von Dateien keine Informationen angezeigt. Also nichts auf dessen Grundlage man sagen konnte, will ich die Datei jetzt überschreiben, oder nicht? Windows- und Mac-Betriebssysteme machen das seit eh und je. Auch KDE zeigt diese Informationen an.
Das Fehlen jeglicher Informationen ist besonders ärgerlich, wenn man eine grosse Anzahl Dateien kopiert und für jede einzelne Datei nachschauen muss, ob man sie wirklich überschreiben will. Die GNOME-Entwickler mussten diese minimale Änderung zunächst 9 (neun!) Jahre diskutieren. Auch auf Canonicals Bugtracker launchpad.net reagierten die meisten Nutzer mit völligem Unverständnis.
Doch nun ist es endlich soweit. Im aktuellen Nautilus 2.31.1 ist dieser Fehler, wie im Bild zu sehen ist, behoben. Und zwar genau so, wie es sein sollte. Man bekommt als Info die Größe und das Datum und hat auch die Möglichkeit einen neuen Datei- bzw. Ordnernamen zu wählen. Dankeschön liebe Nautilus-Entwickler!
Wer direkt von den Änderungen profitieren möchte, dem lege ich wärmstens Nautilus-Elementary ans Herz. Es handelt sich dabei um eine optimierte Fassung von Nautilus, welche allerdings bereits auf der neuen Version basiert. Wer sich das näher anschauen möchte, findet im Blog WebUpd8 viele Artikel mit Screenshots. Wie man Nautilus-Elementary installiert (oder deinstalliert), habe ich bereits im Artikel zur Installation und Konfiguration von Ubuntu 10.04 beschrieben.
Ubuntu 10.04 Lucid Lync: Installieren und Einrichten
Saturday, April 24. 2010
UPDATE (31.08.2010): neues VLC PPA, gconf-hack für metacity-compositing entfernt.
Das neue Ubuntu steht kurz vor der Tür. Zu den augenscheinlichsten Neuerungen zählen wohl das komplett neue Design (endlich!), die Integration sozialer Dienste (Twitter/Facebook) und die nahezu vollständige Unterstützung der iDevices (iPhone/iPod/iPad).
Als Referenz für mich selbst und andere habe ich bereits einen kleinen Artikel für das letzte Ubuntu geschrieben, der zeigen sollte wie man Ubuntu besonders fix einrichtet, so dass Anfänger gut damit arbeiten können. Dies hier ist im Wesentlichen eine überarbeitete Kopie der alten Anleitung.
Installationsvorbereitung
In der Regel ist es problemlos möglich, von einem Release zum nächsten ein Upgrade durchzuführen. Sobald ein neues Ubuntu-Release veröffentlicht wird, erscheint in der Aktualisierungsverwaltung ein Hinweis darauf. Wer also bereits Ubuntu installiert hat, dem empfehle ich auf jeden Fall das Upgrade, statt der Neuinstallation. Einige Ausnahmen gibt es allerdings:
- Mit 9.10 wurde ein neues Dateisystem (ext4) und ein neuer Bootloader (grub2) eingeführt. Beides erhält man nur bei einer Neuinstallation
- Hat man grundlegende Pakete in seinem System, durch Pakete aus Fremdquellen ersetzt, wird ein Upgrade vermutlich fehlschlagen und nicht ohne weiterführende Kenntnisse abschliessbar sein. Dies war in der Vergangenheit bspw. bei Quellen für Compiz/Beryl der Fall.
- Ein Upgrade dauert etw. länger als die Installation von einem USB-Stick.
Hat man sein /home-Verzeichnis auf einer seperaten Partition ist eine Neuinstallation eigentlich nie ein Problem (man kann praktisch nach 10min weiterarbeiten).
Backup
In jedem Fall wie immer der Hinweis, dass ein Backup des /home-Verzeichnisses auf eine externe Festplatte vor späteren Sorgen schützt. Hat man viel von Hand konfiguriert, kann es auch nicht schaden /etc zu sichern. Es empfiehlt sich ebenfalls, zu gucken, welche Programme man installiert hatte. Eine schnelle Methode ist es mit dpkg eine Liste aller installierter Pakete zu sichern, die man dann später wieder einlesen kann:
## zum speichern dpkg --get-selections > installierte_pakete ## zum späteren installieren sudo dpkg --set-selections < installierte_pakete
USB-Stick
Damit die Installation zügig von Statten geht sollte man von einem USB-Stick oder Cardreader, statt von CD installieren. Wenn man sich das .iso-Image von ubuntu.com geladen hat, hat man zwei Optionen. Wer bereits Ubuntu nutzt kann mit dem USB-Startmedien-Ersteller (unter System -> Sytemverwaltung) den USB-Stick direkt erstellen. Alternativ kann man auch von einer gebrannten Ubuntu-CD booten und aus dieser heraus einen USB-Stick erstellen. Windows-Nutzer können das Tool UNetbootin nutzen. Beim Start des Rechners reicht es meist eine der F-Tasten zu drücken, um ein Boot-Auswahlmenü zu erhalten. Bei vielen Rechnern ist das F8-F12. Es erscheint ein auberginer Ladebildschirm mit einem kleinen weissen Logo. Um das Auswahlmenu zu bekommen, drückt man einfach Enter. Es empfiehlt sich das Live-System zu booten (Ubuntu ausprobieren), weil man dort mehr Möglichkeiten als bei der reinen Installation hat.
Installation
Wenn man Ubuntu bereits installiert hatte, sollte man jetzt die /home-Partition mounten und das Benutzerverzeichnis umbenennen, damit es bei der Installation keine Konflikte gibt. Wenn nicht kann man direkt mit der Partitionierung der Festplatte loslegen. Die bietet zwar auch das Installations-Programm an, aber deutlich komfortabler geht es mit gparted (System -> Systemverwaltung). Hier meine Empfehlung für die anzulegenden Partitionen (Art, Größe, Dateisystem, Label):
- primär, 200MB, ext4, BOOT
- erweitert, Rest der Platte
- logisch, 2xRAM, linux-swap, SWAP
- logisch, 15360, ext4, ROOT (wem 15GB nicht reichen, der kann natürlich auch mehr nehmen, aber i.d.R. reichen <10GB)
- logisch, Rest, ext4, HOME
Nach der Partitionierung kann dann die Installation gestartet werden. Die ist so weit selbsterklärend. Da wir nun schon partitioniert haben muss an der entspr. Stelle manuell gewählt werden. Jetzt weist man einfach den angezeigten Partitionen die zu nutzenden Dateisysteme (ext4 und linux-swap) und Mountpoints zu (/boot, / und /home). Bei einer kompletten Neuinstallation müssen keine Häkchen für das Formatieren gesetzt werden (das hat gparted gerade schon getan). Hat man die alte Partitionierung beibehalten formatiert man alles bis auf /home und etwaige NTFS-Partitionen. Letztere kann man übrigens direkt unter /windows oder /media/name mounten lassen.
Installationsnachbereitung
Ubuntu ist schon sehr schicken, aber gerade in den letzten Releases wurden einige Dinge eingeführt, die viele Nutzer nerven. Z.B., dass in den Menus von GTK-Programmen keine Icons mehr angezeigt werden, weil dies angeblich die Nutzer eher verwirre. Oder dass man nicht mehr bei Updates benachrichtigt wird, sondern die Update-Verwaltung bei sicherheitsrelevanten Updates automatisch startet (und dies immer wieder tut).
Fixes
Wen diese Kleinigkeiten ebenso stören, der kann die u.a. Fixes anwenden. Die Befehle können direkt in ein Terminal kopiert und ausgeführt werden:
gconftool-2 -s -t bool /apps/update-notifier/auto_launch false gconftool-2 -s -t bool /apps/indicator-session/suppress_logout_restart_shutdown true gconftool-2 -s -t bool /desktop/gnome/interface/menus_have_icons true gconftool-2 -s -t bool /desktop/gnome/interface/buttons_have_icons true gconftool-2 -s -t bool /desktop/gnome/remote_access/disable_background true gconftool-2 -s -t string /apps/nautilus/preferences/default_folder_viewer "list_view" gconftool-2 -s -t string /apps/metacity/general/button_layout ":minimize,maximize,close" sudo -u gdm gconftool-2 -s -t bool /desktop/gnome/sound/event_sounds false sudo -u gdm gconftool-2 -s -t bool /apps/gdm/simple-greeter/disable_user_list true
In Reihenfolge wird damit folgendes behoben:
- das alte Verhalten der Aktualisierungsverwaltung wird wiederhergestellt (man wird über Updates benachrichtigt),
- der 60s Countdown-Timer beim Ausschalten bzw. Neustart wird deaktiviert,
- Menus haben wieder Icons,
- Buttons haben wieder Icons,
- beim entfernten Zugriff wird das Hintergrundbild standardmäßig nicht angezeigt,
- in Nautilus werden die Dateien standardmäßig in der Listenansicht und nicht in der Symbolansicht angezeigt
- die Fensterbuttons werden wieder an die gewohnte Stelle gesetzt
- der Trommelwirbel beim Login wird deaktiviert
- beim Login wird keine Nutzerliste mehr angezeigt
Besitzer von NVidia-Karten werden feststellen, dass der Splash-Screen beim booten sehr lange braucht, um zu erscheinen, und dann auch noch eine sehr schlechte AuflöSung hat. Die Lösung beider Probleme wird im Ubuntuusers-Wiki im Artikel Plymouth behandelt.
Software
Zum Schluss noch ein paar Pakete, die ich zum Installieren empfehle:
- ubuntu-restricted-extras - enthält alle möglichen Codecs, die man so brauchen kann und Microsoft-Schriftarten
- sun-java6-jre und sun-java6-plugin - weil openjdk einfach nicht so gut funktioniert
- gimp - GIMP ist eine 1a Fotobearbeitung, welche auch nach Profi-Meinung mit Photoshop mithalten kann (zumindest teilweise). Ergänzend empfiehlt sich die installation von gimp-plugin-registry, welches einen Haufen an zusätzlichen Filtern enthält
- inkscape - vektorbasiertes Zeichenprogramm, welches einen sehr guten vektorisierer enthält (m.E. besser als alle kommerziellen Lösungen)
- scribus - Desktop publishing (DTP). Praktisch, um Booklets oder Flyer zu basteln.
- joe - 1a Kommandozeilen-Texteditor
- nautilus-open-terminal - überall per rechts-Klick ein Terminal an der entspr. Stelle öffnen
- simple-ccsm - ein Einstellungstool für Compiz. Sorgt gleichzeitig dafür das man im Erscheinungs-Bild Dialog die Einstellung Benutzerdefiniert auftaucht, so dass man Compiz bei Bedarf deaktivieren kann und beim Aktivieren wieder alle seine Einstellungen hat
- shiki-colors - SEHR hübsches Theme für GNOME. Die neuen Ubuntu themes gefallen mir allerdings auch sehr gut ;-)
- docky - super Dock für Gnome (neueste Versionen über PPA des Entwicklers, s.u.)
- vlc - guter Videoplayer, mittlerweile empfehle ich aber eher den default player, da er mit vielen Formaten besser klar kommt (gerade HD), die aktuelle Version läuft allerdings wieder sehr gut (s. PPA unten)
- wine1.3 - Eine Schnittstelle, die es erlaubt Windows-Programme unter Linux zu nutzen (aktuelle Entwicklungsversion, zu beziehen über PPA, s.u.)
Weitere Empfehlungen (PPAs)
In einigen Fällen möchte man aktuellere Software, als die in den Ubuntu-Quellen bereitgestellte. Hierfür können Hersteller eigene Paketquellen anbieten oder das von Canonical bereitgestellte PPA-System (Personal Package Archive) nutzen. Hier einige Empehlungen von mir.
Browser
Da Firefox mittlerweile sehr lahm ist, sollte man sich vielleicht überlegen, mal auf einen anderen Browser umzusteigen. Mein Favorit ist Opera. Chromium ist aber auch nicht schlecht (besonders auf Netbooks). Beide kann man gut erweitern und anpassen und beide sind Firefox meines Erachtens überlegen.
Opera läd man sich am Besten direkt von der Download-Seite. Dort wird einem immer die korrekte Version für die genutzte Distribution angeboten. Bei der Installation wird eine Paketquelle von Opera hinzugefügt, so dass man automatisch mit Aktualisierungen versorgt wird. Chromium lässt sich direkt aus den Ubuntu-Quellen installieren. Für die aktuelle Version muss man aber eine neue Paketquelle hinzufügen. Damit es schnell über copy&paste geht, zeige ich hier den Weg über das Terminal. Es geht aber genau so gut über die Systemverwaltung (Software-Paketquellen).
sudo add-apt-repository ppa:chromium-daily/dev && sudo apt-get update sudo apt-get install chromium-browser chromium-browser-inspector chromium-browser-l10n chromium-codecs-ffmpeg-extra chromium-codecs-ffmpeg-nonfree
Damit sind dann auch die dt. Sprachunterstützung, die Developer Tools und alle Codecs (bspw. für das neue WebM) installiert. Die Quelle bietet die Entwickler-Version, die auch mal instabil sein kann. Wer nur die offiziellen stabilen Versionen nutzen möchte, muss in der ppa-Zeile /dev durch /stable ersetzen. Weiterhin gibt es /ppa (taegliche Updates, also immer das alleraktuellste) und /beta (von vielen empfohlen, weil weitestgehend stabil und relativ aktuell).
Medien
Damit die Wiedergabe von DVDs vernüftig funktioniert muss man noch die libdvdcss2 installieren. Die ist nicht dabei, weil das in einigen Ländern verboten ist. Um sie in Ubuntu nachzurüsten, gibt man in der Kommandozeile einfach folgenden Befehl ein:
sudo /usr/share/doc/libdvdread4/install-css.sh
Ein beliebter Medienplayer unter allen Betriebssystem ist VLC. Die aktuellste Version bietet Hardware-Beschleunigung für die Videos, so dass diese auch auf schwächerer Hardware oft noch flüssig wiedergegeben werden können. Die ist momentan am Besten über folgendes PPA zu beziehen:
sudo add-apt-repository ppa:ferramroberto/vlc && sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install vlc
Möchte man ähnlich wie mit den Daemon-Tools beliebige CD- und DVD-Images (nicht nur ISO) unter Ubuntu mounten empfiehlt sich CDEmu.
sudo add-apt-repository ppa:cdemu/ppa && sudo apt-get update sudo apt-get install gcdemu
Nun kann man gcdemu einem Panel hinzufügen (rechts-klick).
Nautilus Elementary und Docky
nautilus-elementary ist eine gepatchte Version des Datei-Managers Nautilus. Überflüssige Buttons wurden entfernt und das Layout wirkt logischer und praktischer. Wenn man erst mal damit gearbeitet hat, möchte man es nicht mehr missen. Zudem wird Gloobus-Preview direkt unterstützt. Damit kann man (wie beim Mac) per Leertaste eine schnelle Vorschau von Dateien anzeigen lassen, ohne diese extra zu öffnen.
sudo add-apt-repository ppa:am-monkeyd/nautilus-elementary-ppa && sudo apt-get update sudo apt-get upgrade && sudo apt-get install gloobus-preview && nautilus -q
Damit hat man direkt das neue Nautilus zur Verfügung und kann in den Einstellungen unter Tweaks noch weiter feinjustieren (bspw. die breadcrumbs aufhübschen). Mit F8 und F9 kann man die Seiten- resp. Titelleisten ausblenden. Mit F3 macht man ein zweites Panel auf, welches erleichtert Dateien von A nach B zu kopieren (bspw. links local, rechts server).
Für die aktuellesten Versionen von wahlweise (!) docky oder gnome-do (letzteres enthält docky) sind folgende PPAs einzurichten:
## für Docky sudo add-apt-repository ppa:docky-core/ppa && apt-get update sudo apt-get install docky ## ODER für Gnome Do sudo add-apt-repository ppa:do-core/ppa && apt-get update sudo apt-get install gnome-do
Wine
Viele finden es nützlich Wine auf dem aktuellsten Stand zu haben, weil man damit immer die aktuellsten Funktionen hat (und mehr Windows-Programme nutzen kann). Manchmal funktionieren aber auch Programme nicht mehr, die vorher funktionierten (Regressionen). Daher wird mit Ubuntu die stabile 1.0 mitgeliefert, wie auch eine Vorschau auf die bereits erschienene neue stabile Version 1.2. Für die aktuellste Entwickler-Version 1.3 (meine Empfehlung) braucht man folgendes PPA.
sudo add-apt-repository ppa:ubuntu-wine/ppa && sudo apt-get update sudo apt-get install wine1.3
PPAs entfernen (ppa-purge)
Einige externe Quellen ersetzen bereits vorhandene Pakete (wie nautilus-elementary). Von Hand kommt man da nicht besonders leicht auf den alten Stand zurück. Entfernt man einfach die Quelle, bleiben die Pakete auf dem Rechner. Diese müsste man nun einzeln wieder auf den offiziellen Ubuntu-Stand bringen. Erleichterung schafft hier ppa-purge, dessen aktuelle Version man im Launchpad bekommt. Dort läd man das zur Ubuntu-Version passende Paket und installiert es per Doppelklick. Nautilus Elementary entfernt man dann bspw. so:
sudo ppa-purge ppa:am-monkeyd/nautilus-elementary-ppa
Und weiter?
Für alle Fragen und Probleme kann man sich immer an die deutsche Ubuntu-Community wenden. Das Wiki von ubuntuusers.de ist außergewöhnlich gut und im Forum bekommt man kompetente freundliche Hilfe zu allen konkreteren Fragen. Wenn es besonders schnell gehen soll ist auch der deutsche channel #ubuntu-de auf Freenode hilfreich.
Linux Helpdesk
Thursday, April 22. 2010
Es kommt ja öfter mal vor, dass man (als Linux-User) Freunden, Bekannten oder Kunden per Ferndiagnose mit ihren PC-Problemen helfen will/muss. Wie man das bewerkstelligt beschreibt Chris bei Linux und ich. Die dort angebotene Lösung ist zwar einfach und schnell, hat aber auch Nachteile. Daher möchte ich hier meine Lösung vorstellen.
Mit meiner Lösung ist es möglich über eine verschlüsselte SSH- Verbindung per VNC Unterstützung zu geben, wobei der Hilfesuchende (Client) nichts konfigurieren muss und ruhig hinter einer Firewall sitzen kann (eine 1-click-Lösung). Für die Lösung muss der Rechner des Helfenden (Host) vorbereitet werden, sowie eine ausführbare Datei erstellt werden, die man den clients zur Verfügung stellt.
Ablauf
Bevor ich zur Einrichtung komme, möchte ich erklären, wie der Support abläuft: Der client startet eine (bspw. auf einem Webserver bereitgestellte) .exe-Datei. Diese startet im Hintergrund einen VNC-Server und im Vordergrund ein Terminal. In diesem Terminal wird autom. eine SSH-Verbindung mit dem Host aufgebaut. Über diese Verbindung wird der VNC-Port 5900 zum Host getunnelt. Der Host baut eine VNC-Verbindung mit seinem lokalen Rechner (localhost) auf und sieht den Desktop des remote-Rechners (client).
Host-Vorbereitung
Ich nutze als Beispiel Ubuntu. Die Anmerkungen sind aber natürlich auf andere Linux-Distributionen/BSD/MacOSX übertragbar. Für dir SSH-Verbindung muss das Paket openssh-server installiert sein. Ausserdem benötigen wir die sleepshell und puttygen.
DynDNS
Damit der Client den Host auch finden kann, sollte man sich eine DynDNS-Adresse zulegen. Dafür gibt es unterschiedliche Anbieter. Das ubuntuusers.de-Wiki hat einen Artikel zu dem Thema.
Port
Damit ein client zum Rechner des Hosts verbinden kann, muss die Firewall dies erlauben. Setzt man also einen NAT-Router ein, muss man einen Port auf den Rechner weiterleiten. In unserem Beispiel benutzen wir dafür Port 23900. Wie man Portweiterleitungen einrichtet sollte jeder selbst wissen ;-)
Remote-Benutzer einrichten
Damit der Client eine SSH-Verbindung mit unserem Rechner aufbauen kann, muss dafür ein extra Nutzer eingerichtet werden. Dieser bekommt einen passwortlosen SSH-Zugang, muss also entsprechend abgesichert werden.
wget http://www.mariovaldez.net/software/sleepshell/files/sleepshell_0.0.2.tar.gz tar xzf sleepshell_0.0.2.tar.gz make && sudo make install sudo adduser --shell=/usr/local/bin/sleepshell remote-help passwd -l remote-help
Wer möchte kann die sleepshell.c vor dem kompilieren etwas anpassen, so dass für die Nutzer eine sinnvolle Nachricht wärend der SSH-Verbindung angezeigt wird. Z.B. "Verschlüsselte Verbindung aufgebaut. Fenster schliessen, um Verbindung zu trennen."
Als root sollte man jetzt noch dafür sorgen, dass das User-Verzeichnis /home/remote-help/ komplett leer ist und in einem .ssh-Verzeichnis ein noch zu erstellender public-key liegt. Das erledigen wir mit puttygen (Download s.o.), welches entweder in Windows ausgeführt werden muss, oder per wine auch unter Linux gestartet werden kann. Dort klickt man einfach auf Generate, um ein Schlüsselpaar zu generieren. Den privaten Schlüssel sollte man jetzt direkt wegspeichern (z.B. als id_rsa.ppk, brauchen wir später). Ein Passwort soll für den private key nicht vergeben werden. Das Fenster offen lassen, da wir den angezeigten öffentlichen Schlüssel sofort brauchen
sudo -i cd /home/remote-help rm -rf * mkdir .ssh && cd .ssh nano authorized_keys
Per Copy&Paste nun den Public-Key in das Terminal kopieren und mit STRG+X beenden und dann speichern. Jetzt müssen nich ein paar Rechte korrekt gesetzt werden.
cd .. chmod -R 600 .ssh chown -R remote-help: .ssh
Der Benutzer ist nun fertig eingerichtet. In der Nutzerverwaltung sollte man noch mal sicherstellen, dass der Benutzer in keinen Gruppen Mitglied ist. Als zusätzlich Maßnahme kann man nun noch den Benutzer sperren und nur jeweils dann aktivieren, wenn man auch gerade support geben will.
#Deaktivieren usermod -e 1 #Aktivieren usermod -e 9999
Der Host ist nun vollständig vorbereitet und abgesichert.
Client-Vorbereitung
Da es sich um einen Windows-client handelt, ist es vielleicht nicht schlecht, die folgenden Schritte unter Windows auszuführen. Linux und wine gehen aber auch. Von der UltraVNC Downloadseite brauchen wir die .zip-Datei welche das vollständige UltraVNC enthält. Aktuell ist das win32 bins 1.0.8.2 Full. Außerdem brauchen wir von der 7-Zip Downloadseite das Paket 7z Library, SFXs for installers, Plugin for FAR Manager. Zum Entpacken dieses Paketes braucht man noch 7-Zip selbst. Für die SSH-Verbindung brauchen wir plink von der PuTTY Downloadseite.
Am Besten legt man sich jetzt ein Verzeichnis an, in welches die Dateien kommen, die unser client braucht:
- id_rsa.ppk - der private SSH-Schlüssel, den wir oben erstellt haben
- plink.exe - Kommandozeilen-SSH-client
- winvnc.exe - Server aus dem UltraVNC bin Paket
- SCHook.dll - Bibliothek aus der UltraVNC bin Paket
- ultravnc.ini - wird beim ersten Start des UltraVNC-Servers erstellt (siehe unten)
- connect.cmd - Batch-Datei, welche die Verbindung aufbaut und den Server startet
UltraVNC muss man mind. 1x starten, damit eine Konfigurationsdatei erstellt wird. Man sollte ein Passwort vergeben (welches man sich natürlich merken muss), den Port fest auf 5900 (z.B.) stellen, loopback-Verbindungen erlauben und den JavaViever deaktivieren. Wenn man OK drückt wird die Konfiguration erstellt und der Server läft in Hintergrund (mit Icon im Tray). Den sollte man jetzt natürlich wieder beenden.
Die connect.cmd sollte folgenden Inhalt haben:
start winvnc.exe plink -i id_rsa.ppk -C -R 23900:localhost:5900 remote-help@mein.dyndns.org
Wobei mein.dyndns.org die DynDNS-Adresse des Hosts ist, welche auf dessen IP verweist. 23900 ist der Port welcher auf dem Router des Hosts freigeschaltet und auf den Hostrechner weitergeleitet werden muss. 5900 ist der Port unter welchem der VNC-Server auf dem Client läuft.
1-Click-Client
Jetzt muss das ganze nur noch in eine selbstausführende Datei gepackt werden. Dafür legt man am Besten ein zweites Verzeichnis an, welches folgende Dateien enthalten soll:
- 7zSD.sfx - sfx-header aus dem oben genannten 7-Zip Paket
- client.7z - alle 6 Dateien aus dem vorigen Verzeichnis mit 7-Zip auf höchster Kompressionsstufe gepackt
- config.txt - eine UTF-8 kodierte Datei, welche dem sfx-header sagt, was er zu tun hat
Die config.txt sollte folgenden Inhalt haben:
;!@Install@!UTF-8! ;Title="" ;BeginPrompt="" RunProgram="connect.cmd" ;!@InstallEnd@!
Jetzt müssen die drei Dateien noch zu einer .exe-Datei zusammengefügt werden. Das geht folgendermaßen:
#Windows copy /b 7zSD.sfx + config.txt + client.7z hilfe.exe #Linux cat 7zSD.sfx config.txt client.7z > hilfe.exe
Fertig
Der client ist jetzt fertig und kann so an die Hilfesuchenden verteilt werden. Wenn nun jemand Hilfe braucht, muss vorher natürlich der remote-help Benutzer, wie am Anfang des Artikels erklärt, aktiviert werden. Ist die Verbindung von Seiten des clients aufgebaut, startet man als Host irgendeinen VNC-client und verbindet mit localhost:23900.
Was, wenn ich nicht an dem Support-Rechner bin? Was wenn der Support-Rechner auch nicht erreichbar ist (wg. Firewall)?
Man kann selbstverständlich über SSH den Port 23900 auf dem Host-Rechner, auf jeden beliebigen anderen Rechner weiterleiten. Man hat dann einen VPN-Tunnel zwischen Host und Client und einen weiteren zwischen Host und dem Rechner an dem man gerade sitzt. Die Verbindung läuft quasi über Eck. Das geht z.B. so:
ssh -C -L 23900:localhost:23900 meinuser@mein.dyndns.org
Auf diese Art und Weise kann man übrigens auch das Problem umgehen, welches auftritt, wenn der Hilfegebende hinter einer Firewall sitzt, die er nicht beeinflussen kann. Der Host-Rechner kann dann bspw. ein Webserver sein. Der Hilfesuchende baut dann wine Verbindung zum Webserver mit dem remote-help user auf und leitet seinen Port 5900 an den Webserver (Port 23900) weiter. Dieser muss dann natuerlich entspr. konfiguriert sein, dass Port 23900 nur lokal zugreifbar ist. Der Hilfegebende baut nun ebenfalls eine Verbindung zum Webserver auf und leitet den Port 23900 des Webservers auf einen lokalen Port weiter. Zu diesem baut der dann eine Verbindung auf.




