Informationen zur Distribution anzeigen

Um herauszufinden welche Distribution und vor allem Welche Version installiert ist hilft der Befehl lsb_release.

$ lsb_release -a

Der Parameter -a bewirkt die Ausgabe aller Informationen. Alle Parameter sind in der Man Page zu finden. Das Ergebnis sieht dann in etwa so aus:

Distributor ID: Ubuntu
Description:    Ubuntu 10.04.1 LTS
Release:        10.04
Codename:       lucid

Weitere Informationen zum Thema:
http://manpages.ubuntu.com/manpages/lucid/man1/lsb_release.1.html

Mehrere VPN Verbindungen gleichzeitig unter Ubuntu nutzen

Verschiedene Plugins für den Netzwerk-Manager von Gnome ermöglichen unkompliziert eine VPN Verbindung mit OpenVPN, PPTP (Windows) oder VPNC von Cisco einzurichten und zu verwalten. Beim Thema mehrere VPN gleichzeitig kommt der Netzwerkmanager nicht mehr mit. Es kann immer nur eine Verbindung gestartet werden. Die Community wünscht sich bereits diese Funktion für die Zukunft.

In meinem Fall muss ich allerdings 2 VPN Verbindungen gleichzeitig aufbauen. Zuerst einen Tunnel via OpenVPN um in die DMZ des Unternehmens zu gelangen. Darin befindet sich ein PPTP-VPN-Gateway um in die Windows Domäne zu gelangen. Das bedeutet also ich muss quasi einen VPN Tunnel durch einen bereits bestehenden Tunnel erzeugen. (Siehe Schema)

Da der Netzwerk-Manager kann aber nur einen Tunnel aufbauen. Also habe ich ein wenig im Netz – insbesondere auf dem Forum von ubuntuusers.de – recherchiert und eine Lösung gefunden.

Der erste Tunnel (OpenVPN) kann via Netzwerk-Manager eingerichtet und gestartet werden. Nun folgt der 2. Tunnel. Da dieser ja nicht gleichzeitig mit dem Netzwerk-Manager aufgebaut werden kann, brauchen wir eine Konsole. Da es eine VPN Verbindung in ein Windows Netz ist, wird das Paket pptp-linux benötigt

$ sudo apt-get install pptp-linux

Um eine Verbindung aufzubauen, muss zunächst sichergestellt werden, dass die IP des Gateway (Im Beispiel: 10.1.0.1) auch auf das korrekte Interface geroutet wird (Im Beispiel: tun0). Sprich – Die Anfragen an die Windows Domäne mussen natürlich auch durch den Tunnel geroutet werden. Auskunft hierüber erteilt das Programm route.

$ route -n

Wie im Beispiel sollte das Netz der DMZ auf das Interface des OpenVPN Tunnels verweisen.

10.1.0.0     10.0.1.21      255.255.255.0   UG    0      0        0 tun0

Ist das der Fall kann man nun den 2. Tunnel einrichten. (Ich bin beim Einrichten nach dem HOWTO auf Sourceforge vorgegangen.)

Als erstes muss das allgemeingültige Template für Wählverbindungen bearbeitet werden.

$ sudo nano /etc/ppp/options.pptp

Die folgenden Optionen müssen einkommentieren werden. Es darf nur die Authentifizierung zugelassen werden die benötigt wird. In meinem Fall MSCHAP-V2. Alle anderen müssen abgelehnt werden (refuse-*).

lock
noauth
nobsdcomp
nodeflate
refuse-pap
refuse-eap
refuse-chap
refuse-mschap

Als nächstes gehts an die Zugangsdaten.

$ sudo nano /etc/ppp/chap-secrets

Hier die folgende Zeile hinzufügen.

DOMAIN\\USERNAME PPTP DOMAIN_PASSWORD *

Am Ende muss noch der Tunnel angelegt werden.

$ sudo nano /etc/ppp/peers/TUNNEL-NAME

Die Kursivgeschriebenen Werte müssen natürlich mit den entsprechenden originalen Werten ersetzt werden.

pty "pptp 10.1.0.1 --nolaunchpppd"
name DOMAIN\\USERNAME
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam TUNNEL-NAME

Ist das alles geschafft kann man die Verbindung mit dem Befehl pon testen.

$ sudo pon TUNNEL-NAME debug dump logfd 2 nodetach

Hinweis: Diese Zeile ist zum Testen der Verbindung! Die Konsole wird erst nach dem Trennen der Verbindung wieder freigegeben.

Funktioniert die Verbindung reicht der folgende Befehl.

$ sudo pon TUNNEL-NAME

Jetzt haben wir zwar eine Verbindung in das Netz, damit aber unsere Anfragen richtig geleitet werden brauchen wir noch eine Route durch den Tunnel ins verbundene Netz. (Beispiel: Die Windows Domäne hat das Netz 10.10.0.0/16 und der Tunnel ist ppp0)

$ sudo route add -net 10.10.0.0 netmask 255.255.0.0 dev ppp0

Am Ende wird die Verbindung mit dem folgenden Befehl getrennt.

$ sudo poff TUNNEL-NAME

Dieses Beispiel zeigt eine exemplarische Vorgehensweise und kann auf beliebige Szenarien angewendet werden.

Weitere Informationen zum Thema:
http://forum.ubuntuusers.de
http://brainstorm.ubuntu.com/idea/12951/
http://pptpclient.sourceforge.net/howto-ubuntu.phtml#configure_by_hand

Systemzeit und Datum manuell setzen

Ohne Internet ist man manchmal schon ganz schön aufgeschmissen! So ist zum Beispiel auf Rechnern mit leerer CMOS Batterie die Systemzeit/Datum nach einem Neustart nicht korrekt. Fehlt dann auch noch der Internetzugang, so muss die Uhrzeit/Datum manuell eingestellt werden. Ist keine GUI wie Gnome oder KDE installiert, muss die Änderung in der Konsole vorgenommen werden. Der Befehl date mit dem man die Uhrzeit einstellen kann, hat die folgende Syntax: [MMDDhhmm[[CC]YY][.ss]].

$ date 0825123310.00
Wed Aug 25 12:33:00 CEST 2010

Mit dem Befehl hwclock kann man die aktuelle Einstellung in die Hardware Uhr übertragen. (Linux bezieht seine Zeitangaben immer von der Hardware Uhr, deswegen ist eine Aktualisierung sinnvoll.)

$ sudo hwclock -w

Ist ein Internetzugang vorhanden, so kann das z.B. Programm ntpdate verwendet werden.

$ sudo apt-get install ntpdate

Eine Aktualisierung auf diesem Weg sieht dann in etwa so aus:

$ sudo ntpdate -b ntps1-0.cs.tu-berlin.de

Dieser Befehl kann auch leicht in die Crontab eingefügt werden, um regelmäßig eine Aktualisierung durchzuführen.

E-Mails aus der Shell ohne Mailserver

Viele (eigentlich alle) der von mir betreuten Web- oder Datenbankserver haben keinen E-Mailserver wie Sendmail oder Postfix installiert.
Was aus Sicht der Sicherheit und diversen Leistungsaspekten sinnvoll ist, kann beim Scripten in der Shell schnell frustrierend sein. Ein gutes Beispiel ist z.B. ein Script, welches eine Benachrichtigung versenden soll, sobald eine Bedingung erfüllt oder ein Fehler aufgetreten ist.

Ich nutze hierfür gern das Programm sendEmail, welches via SMTP eine E-Mail aus der Shell versendet.

Unter Ubuntu wird es wie folgt installiert:

sudo apt-get install sendemail

Die Verwendung sieht dann in etwa so aus:

sendEmail -v -f email@domain.tld -s smtp.domain.tld:25
          -xu SMTP-Benutzer -xp SMTP-Passwort\
          -t empfaenger@domain.tld …\
          -u „Betreffzeile der E-Mail“\
          -m „Das ist eine E-Mail über SendEmail.“

Natürlich kann man auch auf integrierte Bibliotheken von Pearl oder Pyton zurückgreifen um E-Mails zu versenden, aber dieses kleine Programm finde ich ganz praktisch.

Hostname unter Ubuntu ändern

Den Rechnernamen auf einem System mit Desktop zu ändern ist recht einfach. Doch was muss geändert werden wenn man z.B. einen Server vor sich hat? Hier sind 3 Schritte erforderlich:

Zuerst muss der neue Name in die Datei /etc/hostname eingetragen werden.

sudo nano /etc/hostname

neuer_rechnername

Danach kann der Rechnername übernommen werden.

sudo hostname -F /etc/hostname

Im Anschluss muss in der Datei /etc/hosts der alte Rechnernamen in den Neuen Rechnernamen geändert werden.

sudo nano /etc/hosts

127.0.0.1     localhost    neuer_rechnername

Fertig!

Hinweis: Zur Sicherheit kann man, sofern möglich, das System neu starten um die Änderung zu prüfen.