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 tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan00.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth010.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 wlan010.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 connectionMETRIC=100#check input parametersif [ -z "$1" -o -z "$2" ]; thenecho "This script is meant to be run by the NetworkManager";echo "Syntax: $0 <device> <up/down>"exit 1fidevice=$1updown=$2#exit if the current connection isn't a wireless oneiwconfig $device > /dev/nullif [ $? -eq 161 ]; thenexitfi#get default route and local network addressdefaultgw=`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 metricif [ "$updown" = "up" ]; thenroute del -net $localnet dev $deviceroute add -net $localnet dev $device metric $METRICroute del -net 0.0.0.0/0 gw $defaultgw dev $deviceroute add -net 0.0.0.0/0 gw $defaultgw dev $device metric $METRICfi

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

Kernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         10.0.0.1        0.0.0.0         UG    100    0        0 wlan00.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth010.0.0.0        0.0.0.0         255.255.0.0     U     100    0        0 wlan010.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.listapt-mark showauto > packages_auto.lstapt-mark showmanual > packages_manual.lst

Paketliste wiederherstellen:

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