the other side of life
HowTo
freeRADIUS & DD-WRT mit WPA2 und Windows XP – Teil 1
Sep 16th
RADIUS steht für Remote Authentication Dial In User Service und ist ein Triple-A-System (Authentifizierung, Autorisierung und Accounting). Dieser kann in einem WLAN als zentraler Authentifizierungsserver dienen und genau dass will ich hier mal dokumentieren !
Da ich Zertifikate einsetzen wollte, musste ich erstmal den freeRADIUS unter Debian Etch/Lenny neubauen, weil dieser keine TLS/EAP/PEAP/TTLS Unterstützung hat (Lizenzproblem mit OpenSSL). Also kurz hier vorbeischauen und Links unter “Source package” auf *.dsc, *.orig und *.diff klicken um den Quellcode runterzuladen. Diesen nach /usr/src kopieren und mit dpkg-source -x *.dsc entpacken. Mit ls -l prüfen ob folgender Ordner existiert “freeradius-2.0.4+dfsg” (Stand 11.09.08)
Nun kann man mit einem Blick in debian/control sehen, welche Bedingungen erfüllt sein müssen (Build-Depends), damit wir das Paket neubauen können.
autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev
Zu diesen Paketen kommt noch die libssl-dev, die wir jetzt gleich an das Zeilenende von Build-Depends mit anhängen. Die Zeile sollte dann wie folgt aussehen
Source: freeradius
Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev, libssl-dev
Section: net
Jetzt einfach ein
aptitude install autotools-dev debhelper libgdbm-dev libiodbc2-dev libkrb5-dev libldap2-dev libltdl3-dev libmysqlclient-dev libpam0g-dev libpcap-dev libperl-dev libpq-dev libsasl2-dev libsnmp-dev libtool python-dev libssl-dev
Wenn das fertig ist, können wir uns mit einem Editor die debian/rules ansehen. Hier alles von –without-rlm_eap-* zu –with-rlm_eap-* ändern außer –without-rlm_eap_tnc, dass bitte so lassen. Das gleiche auch mit –without-openssl und wahlweise noch mit –without-rlm_otp. Dann suchen wir noch in der rules den Anschnitt
for pkg in ${pkgs} ; do \
if dh_shlibdeps -p $$pkg -- -O 2>/dev/null | grep -q libssl; then \
echo "$$pkg links to openssl" ;\
exit 1 ;\
fi ;\
done
und entfernen diesen. Wenn ich/wir nichts vergessen haben dann in das freeradius Verzeichnis wechseln und dpkg-buildpackage -uc -us ausführen. Am Ende sollten wir in /usr/src unsere Pakete vorfinden. Hier meine Liste
root@build debian [0] # ll
insgesamt 2,2M
-rw-r--r-- 1 root root 201K 2008-09-09 10:11 freeradius-common_2.0.4+dfsg-7_all.deb
-rw-r--r-- 1 root root 927K 2008-09-09 10:11 freeradius-dbg_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 127K 2008-09-09 10:11 freeradius-dialupadmin_2.0.4+dfsg-7_all.deb
-rw-r--r-- 1 root root 17K 2008-09-09 10:11 freeradius-iodbc_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 18K 2008-09-09 10:11 freeradius-krb5_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 34K 2008-09-09 10:11 freeradius-ldap_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 25K 2008-09-09 10:11 freeradius-mysql_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 36K 2008-09-09 10:11 freeradius-postgresql_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 72K 2008-09-09 10:11 freeradius-utils_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 5,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7.diff.gz
-rw-r--r-- 1 root root 1,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7.dsc
-rw-r--r-- 1 root root 5,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7_i386.changes
-rw-r--r-- 1 root root 503K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 102K 2008-09-09 10:11 libfreeradius-dev_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 84K 2008-09-09 10:11 libfreeradius2_2.0.4+dfsg-7_i386.deb
Diese könnte etwas anderst aussehen, sollte aber bis auf die Versionsnummer vollständig sein.
Für die Schreibfaulen: Hier die diff für die Änderungen. Runterladen, dann in das freeradius Verzeichnis wechseln und dann patch -p1 -i ../pfad/zur/diff ausführen.
Nun können wir unseren RADIUS Server mit
dpkg -i freeradius_2.0.4+dfsg-6_i386.deb freeradius-common_2.0.4+dfsg-6_all.deb freeradius-utils_2.0.4+dfsg-6_i386.deb libfreeradius2_2.0.4+dfsg-6_i386.deb
einfach installieren. Bei Fragen, Fehlern oder Anmerkungen einfach einen Kommentar da lassen.
Auf die Pakete kann auch via
deb ftp://zion.devnu11.net/ unstable main contrib non-free
zugegriffen werden.
Reifenumfang ermitteln
Aug 15th
Da ich für mein Sigma 1606L (Kabel) den zweiten Fahrradadapter mir zugelegt hatte, wurde die Reifenumfangberechnung wieder fällig.
Damit ich es nicht wieder vergesse, hier nun die Notiz an mich selber
Ich fahre Schwalbe Marathon vorne und Schwalbe Marathon Plus hinten.
Auf dem Marathon vorne steht 42 x 622. Diese zwei Werte sind wichtig für die Berechnung.
Radumfang = 2 * Pi * 42 + Pi * 622 = 2217,964 [gekürzt]
Fertig.
Debian Lenny at Thinkpad R61
Jul 9th
Hab heute mal meine Konfiguration für mein Thinkpad R61 unter Debian Lenny niedergeschrieben und veröffentlicht. Hoffe ich kann damit ein paar Leuten helfen….
Auch gelinkt auf tuxmobil.org bzw. tuxmobil.de !
Pound einrichten….
Jun 3rd
Wollen wir uns nun langsam mal der Pound Konfiguration widmen.
Hier ist ein sehr einfaches Beispiel. Die lokalen Webserver hören auf dem Port 81 und Pound darf auf Port 80 hören, wobei 192.168.1.3 die HA-IP Adresse wieder spiegelt.
## Minimal sample pound.cfg
##
## see pound(8) for details
######################################################################
## global options:
User "www-data"
Group "www-data"
#RootJail "/chroot/pound"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 5
## use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
######################################################################
## listen, redirect and ... to:
## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
ListenHTTP
Address 192.168.1.3
Port 80
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 0
Service
BackEnd
Address 192.168.1.1
Port 81
End
BackEnd
Address 192.168.1.2
Port 81
End
End
End
Installiert wird Pound einfach via aptitude pound und wieder dran denken das die pound.cfg auf beiden Servern gleich sein muss.
Bei unterschiedlich dimensionierten Servern können wir mir Priority im BackEnd, die Last unterschiedlich auf der Server verteilen.
Weitere gute Beispiel-Konfigurationen findet man in der Manpage von Pound (man pound) !
In der /etc/default/pound müssen wir noch den Wert für startup gleich 1 setzen, damit Pound überhaupt startet.
Hier mal meine Konfiguration
## Minimal sample pound.cfg
##
## see pound(8) for details
######################################################################
## global options:
User "www-data"
Group "www-data"
RootJail "/var/pound/chroot"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 5
## use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
######################################################################
## listen, redirect and ... to:
## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
ListenHTTP
Address 192.168.1.1
Port 80
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 0
Service
BackEnd
Address 192.168.1.2
Port 81
Priority 6
End
BackEnd
Address 192.168.1.3
Port 81
Priority 3
End
BackEnd
Address 192.168.1.4
Port 81
Priority 3
End
End
Service
URL ".*.(jpg|gif|png)"
BackEnd
Address 192.168.1.5
Port 81
End
End
End
Debian Lenny und SixXS – IPv6 Tunnel
Apr 15th
Hier eine kleine Hilfe, für alle die Versuchen unter Debian einen IPv6 Tunnel zum laufen zubekommen.
Vorraussetzung ist, dass der Tunnel-Typ 6in4-static ist (Hier ist eure statische IP die Authentifizierung gegenüber SixXS). Sollte er Tunnel-Typ AYIYA sein, müsst ihr das Tool von SixXS benutzen, da ihr euch hier mit Username und Passwort authentifizieren müsst.
Auszug aus der /etc/network/interface:
auto sixxs
iface sixxs inet6 v4tunnel
address Local-IPv6-IP
netmask Prefix (zB 64)
endpoint POP-IPv4-IP
local Local-IPv4-IP
ttl 64
up ip link set mtu 1280 dev sixxs
up ip route add default via POP-IPv6-IP dev sixxs
up ip -6 route flush dev eth0
down ip -6 route flush dev sixxs
Der Befehl up ip -6 route flush dev eth0 heißt, dass für die Netzwerkschnittstelle eth0 die IPv6-Routen gelöscht werden.
Ich hatte das Problem, dass kein IPv6 Paket sein Ziel erreichte. Erst nachdem ich mir die Ausgabe von ip -6 route show anschaute, wurde klar warum. Die Defaultroute für IPv6 war über eth0. Also fix gelöscht und siehe da, alle Pakete erreichen nun auch ihr Ziel.
- IPv6 Ready -
Verschlüsselte Partition mit Debian und luks
Apr 10th
Eine verschlüsselte Partition einrichten
Vorraussetzung: Eine leere Partition
Die leere Partition formatieren wird als erstes.
cryptsetup luksFormat –y /dev/hde1
Der Befehl fordert uns auf eine Passphrase einzugeben. Am besten verwenden wir hier nun Zahlen, Sonderzeichen, Klein- und Großbuchstaben und was wir noch so auf der Tastatur finden.
Damit wir nun auch ein Dateisystem erzeugen können, müssen wir das verschlüsselte Device öffnen. Hier wird auch gleich die neue Passphrase verlangt.
cryptsetup luksOpen /dev/hde1 hde1_crypt
Ich habe es mit ext3 formatiert.
mkfs.ext3 /dev/mapper/hde1_crypt
Die verschlüsselte Partition soll beim Starten gemountet werden. Wir müssen bedenken, dass die Passphrase beim Starten verlangt wird.
echo "hde1_crypt /dev/hde1 none luks" > /etc/crypttab
Erst jetzt kommen wir an unsere Daten, und können die Partion mounten.
echo "/dev/mapper/hde1_crypt /ein/datei/pfad rw 0 0" >> /etc/fstab
Wenn alles klappt, dann sollte beim nächsten Start nach einer Passphrase gefragt werden.
HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql
Apr 9th
Vorrausetzung
- 2 Server mit einer Lenny Grundinstallation ( Hier als Servernamen cnode1 und cnode2 )
- Optional: 2 Netzwerkkarten je Server (für drbd)
- eine leere Partion je Server
- Vorausgesetzt es ist nicht anderst angegeben, alles auf beiden Nodes ausführen !
Konfiguration von drbd
Auf beiden Servern als root anmelden
aptitude install drbd8-utils drbd8-modules-2.6.24-1-686
echo "drbd" >> /etc/modules
Nun sichern wir die alte drbd-Konfigurationsdatei
mv /etc/drbd.conf /etc/drbd.conf.old
Jetzt erstellen wir eine neue Datei mit vim /etc/drbd.conf
global { usage-count yes; }
common { syncer { rate 10M; } }
resource ha {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net {
cram-hmac-alg sha1;
allow-two-primaries; # Wichtig für Primary/Primary Setup
}
on cnode1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on cnode2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}
Speichern mit :wq
Wenn 2 Netzwerkkarten vorhanden sind, drbd lieber auf eine eigene Karte konfigurieren. Damit drbd mit der Partion etwas anfangen kann, müssen wir diese initialisieren.
drbdadm create-md ha
Nun können wir die beiden Partionen synchronisieren. (Den folgenden Befehl nur auf einer Node starten !)
drbdsetup /edv/drbd0 primary --overwrite-data-of-peer
Je nach dem wie groß die Partionen sind kann es nun etwas Zeit vergehen. Der Fortschritt kann überprüft werden mit
/etc/init.d/drbd status
In der Ausgabe sollte sich die unten stehende Zeile finden lassen, wenn beide drbd-Devices synchron sind.
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
Nun können wir die zweite Node auch zum ”Primary” machen
drbdsetup primary r0
Update (Danke keks)
Da es sehr störend ist, wenn wir die Server neustarten, immer per Hand die 2 Nodes als Primary zu definieren, fügen wir noch zusätzlich in den startup-Block
become-primary-on both;
ein. Die Zeile sollte dann wie folgt aussehen:
startup { wfc-timeout 0; degr-wfc-timeout: 120; become-primary-on both; }
Das bewirkt, dass beide während des Bootvorgangs als Master definiert werden. Nun die Konfiguration auf beiden Nodes aktualisieren, dann
drbdadm adjust ha
und
drbdadm primary ha
(Befehle auf beiden Nodes ausführen!)
Wichtig: Um diese Funktion zunutzen, müsst ihr DRBD aus den Quellen bauen, da die Funktion (laut drbd-Homepage) erst ab 8.2.0 implementiert ist.
Konfiguration von ocfs2
Jetzt installieren das ocfs2 Filesystem
aptitude install ocfs2-tools ocfs2console
Noch die Konfigurationsdatei erstellen
#/etc/ocfs2/cluster.conf
node:
ip_port = 7777
ip_address = 192.168.1.1
number = 0
name = cnode1
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.1.2
number = 1
name = cnode2
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
Nun sind wir fast fertig. Jetzt einmal
/etc/init.d/ocfs2 restart
und dann können wir das Filesystem erstellen mit
mkfs.ocfs2 /dev/drbd0
Damit wir mit dem Filesystem arbeiten können, müssen wir es initialisieren.
/etc/init.d/o2cb online ocfs2
bewirkt das der Cluster mit dem Namen ocfs2 geladen wird.
/etc/init.d/o2cd load
/etc/init.d/o2cd online ocfs2
Jetzt können wir es mit
mount /dev/drbd0 /srv
nutzen
Konfiguration vom HTTP Loadbalancer – pound
Konfiguration von heartbeat
Folgt !
Serielle Konsole für Server (Grub)
Apr 8th
Einführung
Wenn wir zwei Server irgendwo (z.B. Rechenzentrum) stehen haben und es die Möglichkeit besteht, dass man beide via Nullmodem-Kabel verbinden, kann man sie auch ohne SSH-Zugang warten (z.B. nach einem fehlgeschlagenen Kernelupdate). Leider nur immer in eine Richtung. Für beide Richtungen bräuchte man 2 Nullmodem-Kabel.
Konfiguration
Damit wir die Möglichkeit haben den Kernel auszuwählen, sollten wir Grub sagen, dass es seine Ausgabe an den seriellen Port weiterleitet.
Dazu fügen wir folgende Zeien in die /boot/grub/menu.lst hinzu.
serial --unit=0 --speed=57600
terminal --timeout=2 serial console
Erklärung:
--unit=0
heißt einfach das der Com1 bzw. ttyS0 genutzt wird. Der Parameter
--speed=57600
steht für die Übertragungsgeschwindingkeit. Standard ist 9600.
--timeout=2 serial console
bedeutet das man 2 Sekunden Zeit hat und das die primäre Ausgabe auf dem seriellen Port und die sekundäre auf der Console ist.
Jetzt wird die Ausgabe vom Grub an den seriellen Port umgeleitet. Damit wir aber auch einen Login an der seriellen Konsole bekommen, müssen wir die /etc/inittab noch bearbeiten.
Wir suchen diesen Teil
# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
und entfernen das # vor der Zeile mit T0 und ändern die Zahl 9600 wieder auf 57600.
Die Zeile
T0:23:respawn:/sbin/getty -L ttyS0 57600 vt100
heißt dann nichts anderes als das nach dem Starten ein Login auf ttyS0 in/mit der Geschwindigkeit von 57600 Kbit/s auf uns wartet.
Damit der Kernel seine Meldungen auf der seriellen Konsole aus gibt, geben wir dem Kernel noch zwei Parameter mit:
console=tty0 console=ttyS0,57600n8
Das sollte dann so in etwa aussehen:
title Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/hda1 ro vga=791 console=tty0 console=ttyS0,57600n8
initrd /boot/initrd.img-2.6.18-6-686
savedefault
Das heißt, dass die Kernelmeldung auf der console und der seriellen Konsole ausgegeben werden. Wenn alles fertig ist, neustarten. Mann kann jetzt zB via minicom auf dem anderen Server die Ausgabe von dem gerade eingerichteten Server sehen.