Schlagwort-Archiv: linux

LAN vor WLAN im NetworkManager

Mein Arbeitsnotebook ist aus Performancegründen meistens per Kabel am Netzwerk angeschlossen, für die Mobilität im Büro besteht zusätzlich eine WLAN-Verbindung zum selben Netzwerk. Beide Verbindungen werden vom NetworkManager verwaltet, allerdings kann man hier keine Priorisierung einstellen, was zu folgender Routing-Tabelle führt:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 wlan0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0

Die Metric steht bei beiden Interfaces auf 0, weshalb nicht eindeutig festgelegt ist, wo der Traffic nun rausgeht. Das System nimmt die erste Route, die in diesem Falle über das WLAN läuft.

Um dieses Problem zu umgehen, habe ich ein NetworkManager-Script gebastelt. Dies muss im Verzeichnis /etc/NetworkManager/dispatcher.d/ liegen und für root ausführbar sein.

#!/bin/sh
 
#wireless-metric.sh - NetworkManager script
#sets a higher metric for wireless connections to prioritize a wired connection
 
#metric that will be used for the wireless connection
METRIC=100
 
#check input parameters
if [ -z "$1" -o -z "$2" ]; then
  echo "This script is meant to be run by the NetworkManager";
  echo "Syntax: $0 <device> <up/down>"
  exit 1
fi
device=$1
updown=$2
 
#exit if the current connection isn't a wireless one
iwconfig $device > /dev/null
if [ $? -eq 161 ]; then
  exit
fi
 
#get default route and local network address
defaultgw=`ip route|grep default.*$device|awk '{print $3}'`
localnet=`ip route|grep $device|grep -v default|head -n1|awk '{print $1}'`
 
#delete the routes for the device and add new ones with the higher metric
if [ "$updown" = "up" ]; then
  route del -net $localnet dev $device
  route add -net $localnet dev $device metric $METRIC
  route del -net 0.0.0.0/0 gw $defaultgw dev $device
  route add -net 0.0.0.0/0 gw $defaultgw dev $device metric $METRIC
fi

Nachdem ich die WLAN-Verbindung getrennt und wieder aufgebaut habe, finde ich nun eine eindeutige Routingtabelle vor:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    100    0        0 wlan0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.0.0     U     100    0        0 wlan0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0

Das Script wurde getestet unter Debian 7.1 wheezy AMD64 mit NetworkManager Version 0.9.4.0-10.

Debian-Paketlisten sichern und wiederherstellen

Für den Umzug auf neue Hardware möchte ich meine installierten Pakete auch auf dem neuen System installieren. Dazu sichere ich die Paketlisten mit dpkg. Dabei geht allerdings die Information verloren, ob ein Paket manuell oder aufgrund von Abhängigkeiten automatisch installiert wurde. Mit apt-mark lässt sich diese Information ebenfalls speichern.

Paketliste sichern:

dpkg --get-selections > packages.list
apt-mark showauto > packages_auto.lst
apt-mark showmanual > packages_manual.lst

Paketliste wiederherstellen:

dpkg --set-selections < packages.list
apt-get -u dselect-upgrade
apt-mark auto `cat packages_auto.lst`
apt-mark manual `cat packages_manual.lst`

Sun JRE unter Ubuntu 10.10

Canonical hat in der aktuellen Ubuntu-Version die Javapakete standardmäßig entfernt. Man wird gebeten, die freie Laufzeitumgebung aus dem OpenJDK-Projekt zu verwenden. Die Pakete der originalen Sun-JRE lassen sich dennoch recht einfach nachinstallieren:

sudo echo "deb http://archive.canonical.com/ubuntu maverick partner" >> /etc/apt/sources.list.d/canonical-partner.list
sudo apt-get update
sudo apt-get install sun-java6-jre sun-java6-plugin

Freunde der GUI (hier Gnome) gehen folgendermaßen vor:

  • Im Gnome-Menü unter System/Systemverwaltung die Synaptic-Paketverwaltung starten.
  • Im Programmenü auf Einstellungen/Paketquellen klicken.
  • Den Tab Andere Software auswählen.
  • Häkchen bei Canonical-Partner setzen.
  • Nach einem Klick auf Schließen in der Menüleiste auf Neu laden klicken.
  • Jetzt lassen sich die Pakete sun-java6-jre und sun-java6-plugin über die Paketverwaltung installieren

Xming – X-Server für Windows

Gerade wollte ich nach langer Zeit mal wieder von einem Windows-System aus eine X-Anwendung auf einem entfernten Linux-System starten. Das war damals mit kostenlosen Lösungen sehr kompliziert (cygwin). Inzwischen hat sich aber einiges getan.

Mit Xming lässt sich das ganz einfach realisieren. Einfach installieren und es findet seinen Platz im System-Tray.

Nun kann PuTTY gestartet werden und in den Optionen unter Connection/SSH/X11 das X11-Forwarding aktiviert werden. Wenn man sich jetzt mit einem Rechner verbindet, auf dem ein X-Server läuft, kann man ein X-Programm starten (z.B. xcalc), das sich darauf hin in die Windows-Oberfläche einbindet.

Xming in Action

ARP-Cache unter Linux vergrößern

Die Ursachen von Verbindungsabbrüchen in einem größeren LAN zu finden ist schwierig, in meinem Fall war die ARP-Tabelle des Routers voll. Auf Debian-Systemen ist sie standardmäßig auf 1024 Einträge begrenzt. Ist der Adressraum des Netzwerks größer, könnte jemand allein durch einen Ping-Scan die ARP-Tabelle des Routers füllen. Wenn das passiert, ist im Kernel-Log folgende Meldung zu lesen.

Dec 16 09:08:19 router kernel: [14468939.388404] Neighbour table overflow.
Die Begrenzung lässt sich mit folgenden Befehlen festlegen - ersteres ist das Hardlimit, das andere das Softlimit.

echo 65536 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh2

Um die Optionen dauerhaft zu speichern, sollten sie in die sysctl.conf eingetragen werden.

net.ipv4.neigh.default.gc_thresh2=32768
net.ipv4.neigh.default.gc_thresh3=65536

Kurztipp: usermod und die zusätzlichen Gruppen

Gerade stellte sich mir das Problem: Ein Script soll beim Anlegen eines Users und einer Gruppe den Web-User (www-data) der neuen Gruppe hinzufügen. Das funktionierte auch wie gewünscht:

usermod -G user123 www-data

Das Problem: Der Benutzer www-data ist nun zwar Mitglied der Gruppe user123, hat allerdings in allen anderen Gruppen “vergessen”, dass er dazu auch gehören sollte. Das sollte natürlich nicht passieren, denn der Aufruf soll ja nur ergänzend und nicht ersetzend sein. Ein Blick in die Manpage zeigt die einfache Lösung, die ich leider bisher übersah:

usermod -G user123 -a www-data

Der Parameter -a hängt die neue Gruppe an die bisherigen an und erhält damit die Gruppenzugehörigkeiten.

Debian user, checkt eure sources.list!

Debian Lenny soll aller Voraussicht am nächsten Wochenende (14. Februar 2009) vom Status testing in stable gehoben werden. Die derzeit aktuelle Version Debian Etch wird damit in den Status  oldstable wechseln.

Mit dieser Veränderungen ist auch eine Änderung der Paketbasis verbunden. Wer nämlich in der Paketverwaltung APT (Tools apt bzw. aptitude) einfach nur auf den stable-Zweig verweist, wird ab der Statusänderung plötzlich statt mit Etch-Paketen mit Lenny-Paketen versorgt.Dies führt dazu, dass nahezu alle installierten Pakete veraltet sein werden und nach einem Upgrade schreien.

Weiterlesen

Fun: Kann ich Dir trauen?

Gerade fand ich wieder einmal ein Juwel auf german-bash.org das ich gern mit Euch teilen will. Ein Wannabe-Serveradmin braucht wohl Hilfe mit seinem MySQL-Server und bekommt, was er verdient:

<SargoDarya>du hast mir gerade nicht nur die Daten von MySQL sondern von dem root server gegeben <SargoDarya>ich könnt jetzt den Server übernehmen das ist schon klar oder?
<Chris> jaa **
<SargoDarya> Merks dir für die Zukunft. Ich bin so nett und lösch heute mal ausnahmsweise nur den \var ordner
<Chris> oO…..
<SargoDarya> der \etc lächelt mich auch so ein wenig an.
<Chris>höre auf :/
<SargoDarya> war nur nen joke
<Chris> gut.. …

<Chris> DU HAST IHN GELÖSCHT!!!
<SargoDarya> Ich konnt nicht widerstehen

Wer so sorglos mit seinen wichtigsten Daten umgeht, hat wohl diese Lektion verdient.

10 Gratis-PDFs zum Thema Server von TecChannel.de

Einen verspäteten Rückblick der ganz besonderen Art liefert uns der das Online-Portal tecchannel.de. Die “besten Server-Artikel 2008” werden auf der Seite kostenlos zum Download als PDF angeboten (jeweils rechts in der Sidebar). Alternativ kann man sich auch den Beitrag online auf der Seite durchlesen.

Die Themen im Überblick:

Wie man sieht, nimmt es TecChannel mit dem Begriff “Server” nicht ganz so genau und streut die Themen sehr über alles, was mit Servern zu tun hat. Vielleicht ist ja trotzdem (oder gerade deswegen) für jemanden etwas Interessantes dabei.

Viel Spaß beim Stöbern.

Link: TecChannel.de: Top Server-Artikel 2008

Private Shell-Kommando Hitliste

Wo alle am Jahresende gerade so in Bilanz-Stimmung waren, lief mir etwas interessantes über den Weg: Ein Einzeiler, der aus der bash-history ein Best-of extrahiert. Und das geht so:

	history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head

Meine Top 10 aus der aktuellen bash:

52 l
50 htpasswd
50 cd
35 tail
29 exit
28 mc
27 /etc/init.d/apache2
19 grep
18 chown
16 rm

via: http://www.marianoiglesias.com.ar: My top 10 commands for July, 2008

Postfix: Absender bei Mailversand von der Konsole anpassen

Heute war ich mal wieder auf dem Optimierungstripp und wollte endlich mal erreichen, dass die von dem Inhouse-Linux-Server abgesendeten Mails (von Cronjobs usw.) nicht immer mit dem Namen des ausführenden Users erscheinen, sondern mit etwas aussagekräftigerem. Weiterhin werde ich der Vollständigkeit halber gleich auch noch erklären, wie man die Absenderadresse so umschreibt, dass man lokalen Usern mit lokaler Domain wie root@server3 (welche aus dem Internet nicht erreichbar wären) auch vernünftig antworten kann.

Weiterlesen

Hardware-Tools: (Ich will) wissen, was in dir steckt…

Als Sysadmin hat man so einige -vermeintlich einfache- Probleme, die dann im Detail doch etwas Verrenkungen bedeuten, um sie zu lösen.

Heute galt es herauszufinden, warum die Test-Installation von Open-Xchange nicht laufen will. Ein Blick ins Log ergab, dass der Prozess 256MB Ram anforderte – etwas zuviel für den Testserver mit 256MB abzüglich einer Onboard-Grafikkarte (also 240MB effektiv).

Nun zum nächsten Problem: Wie bekomme ich heraus unter Debian-Linux in der Konsole heraus, welche Art Speicher in welcher Verteilung verbaut ist, ohne den Server auszuschalten und zu öffnen?

Weiterlesen

Pidgin: Schwachstelle gefunden

Da ich hier das Programm bereit empfohlen habe und selbst auch noch nutze, fühle ich mich verpflichtet auf folgendes hinzuweisen:

Laut heise Netze wurde in Pidgin eine Schwachstelle entdeckt, die

das Chat-Programm zum Absturz zu bringen oder es gar beliebigen Schadcode mit Anwenderrechten ausführen zu lassen

kann.

Der Anwender muss dazu laut Juan Pablo Lopez Yacubian, dem Entdecker der Schwachstelle, einen MSN-Dateitransfer mit einem überlangen Dateinamen annehmen.

Unter Umständen seien auch andere Protokolle wie ICQ betroffen.

Es ist also ratsam, Dateianhänge vorerst nur von vertrauenswürdigen Sendern anzunehmen. Ein Patch ist derzeit noch nicht verfügbar, sollte aber über die Autoupdate-Funktion von Pidgin angeboten werden.

Quelle: heise Netze – Schwachstelle in Instant-Messenger Pidgin

Kurztipp: Unix Toolbox

Immer wieder braucht man ein paar Programme und ist sich nicht mehr über die Syntax bzw. die Möglichkeiten bewusst oder der Name des Tools will partout nicht einfallen. Da kann eventuell diese Auflistung helfen, die alltägliche Tools aus vielen Bereichen kurz beschreibt und so die Wissenslücke hoffentlich wieder schließen kann.

Link: Unix Toolbox

via adminlife.net

Kurztipp: Besser suchen in der Konsole

Man kennt das: Man sucht eine Variable oder einen bestimmten String und weiß partout nicht, in welcher der 10.000 Dateien sich diese/r befindet.

Auf der Konsole hat man grep zur Verfügung. Beim Studium der manpage von dem Tool fiel mir Parameter –color auf, den ich seit dem ständig nutze. Er bewirkt, dass der Suchbegriff innerhalb der Zeile farbig markiert wird, sodass er leichter zu entdecken ist. Sehr praktisch.

Beispiel:

grep --color -r "Suchbegriff oder regulärer Ausdruck" /etc

Mittels eines Eintrags in der .bashrc im eigenen $HOME-Verzeichnis kann man auch grep dazu bringen, jedes Mal den Suchbegriff zu markieren.

Manuell eintragen…

alias grep='grep --color'

…oder gleich direkt an die Datei anfügen:

echo -n "alias grep='grep --color'" >> ~/.bashrc

Kennt ihr noch mehr sinnvolle Parameter? Immer her damit!