Weil mir der Network-Manager vor langer Zeit einmal zu viel auf den Sack gegangen ist, bin ich auf WICD umgestiegen. Der machte mir dann aber aus verschiedenen Gründen auch nicht all zu lange Spaß. Etwa zu dieser Zeit flog mit dann zufällig ein kleines Shell-Script von 'grenouille' in die Hände, mit dem er seine diversen Netze direkt aus der Shell verwaltete.
Ich habe ein paar encfs Zeilen in das Script gehackt und es viele Jahre lang absolut zufrieden benutzt und gelegentlich ausgebaut. By popular demand ist es dann irgendwann in ein Git-Repo gewandert und veröffentlicht worden. Plötzlich benutzen Member das Script, die ich kaum bis garnicht kenne, und das finde ich super.
Das grobe Ganze
Am Laptop will man häufig das WLAN wechseln. Das soll schnell und komfortabel von statten gehen. Schnell und komfortabel heisst bei mir 'wpa_supplicant'. Alles Geläufige, was es da so drum herum gibt ist meiner persönlichen Ansicht nach... nicht ganz so überzeugend.
Der große Nachteil bei wpa_supplicant ist, dass für verschlüsselte WLANs eine Konfigurationsdatei mit dem Klartextpasswort fuer das jeweilige WLAN im Dateisystem hinterlegt werden muss. Die Dateien gehören zwar root, allerdings ist das kein großes Hindernis, wenn das Notebook mal geklaut werden sollte. Ich persönlich bin kein großer Freund davon ganze Partitionen oder gar die ganze HDD zu verschlüsseln - das schafft nur Komplexität an Stellen wo man keine haben will. Der Benefit sind zahlreiche verschlüsselte open-source Binaries und Libs, während das Betriebssystem unnötig ackern muss und ich am Ende nicht mehr booten kann, weil "Nein? Doch! Oh!".
Darum benutze ich seit Jahren encfs, um einzelne Verzeichnisse zu verschlüsseln, wo es Sinn ergibt - unter Anderem, um meine ganzen wpa_supplicant Konfigurationsdateien zu verschlüsseln. Um meine ganzen encfs Verzeichnisse besser verwalten zu können, habe ich einen kleinen Wrapper namens enconfig drum herum gehackt.
Und weil ich so verdammt faul bin, habe ich einen Bash-Alias fuer alle meine Netze, die die beiden Wrapper wrappen. :P
Einrichtung
Hier versuche ich mal eine kleine Anleitung zusammen zu stellen, um mein Setup nach zu bauen. Feedback und Verbesserungsvorschläge gerne per Mail.
enconfig
Zuerst installieren wir encfs, wpa_supplicant und enconfig. Wir brauchen den wpa_supplicant zwar noch nicht wirklich fuer enconfig, aber wir installieren ihn einfach gleich mal mit.
Als root:
aptitude install encfs wpa_supplicant
git clone git@github.com/baccenfutter/enconfig.git
ln -s $PWD/enconfig/enconfig /usr/local/bin/
ln -s /usr/local/bin/enconfig /usr/local/bin/encup
ln -s /usr/local/bin/enconfig /usr/local/bin/encdown
echo "/etc/wpa_wupplicant/.wpa /etc/wpa_supplicant/wpa" > ~/.privatedirs
encup 1
Dann erstellen wir eine erste wpa_supplicant.cfg:
ssid="access-point-ssid" # hier die SSID des AP eintragen
encup 1
cat << EOF > /etc/wpa_supplicant/wpa/foo.conf
network={
ssdid=$ssid
key_mgmt=NONE
}
EOF
encdown 1
Fertig.
Net-Conf
Kommen wir zur Installation von Net-Conf.
Als root:
aptitude install python-ipaddr pip
pip install net-conf
ln -s /usr/lib/python2.7/site-packages/netconf/netconf.sh /usr/local/bin/netconf
Dann erstellen wir eine kleine Public-AP config:
netconf # einmal durchlaufen lassen, damit das
# Konfigurationsverzeichnis erstellt wird
cd ~/.config/net_conf
cp static-wifi-example foo.py
cd -
... und probieren sie auch gleich mal aus:
netconf foo
Runde Ecken
Jetzt einfach beliebig viel wpa_supplicant.cfgs nach /etc/wpa_supplicant/wpa/ legen und dann einen Bash-Alias für die Wichtigsten einrichten:
alias net_mywifi='encup 1 && netconf foo && encdown 1'
net_mywifi
Die meisten Orte, an denen ich mein Laptop aufklappe sind Orte, an denen ich mich häufiger aufhalten (e.g. zu Hause, auf der c-base, etc). Ich klappe mein Notebook auf und tippe 'net_cbase' und schwupps bin ich online.
# net_cbase
Mounting /etc/wpa_supplicant/wpa
EncFS Password:
utils killing all daemons...
utils resetting all interfaces...
iface ifup: wlan0
supplicant connecting: /etc/wpa_supplicant/wpa/c-base-crew.cfg
iface ifup: wlan0
address configuring: 10.0.x.xx/23 -> wlan0
gateway routing via: 10.0.1.254
iface ifup: wlan0
address configuring: 2a02:f28:4::x:x:x:1/64 -> wlan0
gateway routing via: 2a02:f28:4::1
resolver resolving via: 10.0.1.254
Unmounting /etc/wpa_supplicant/wpa