heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

c't
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Start Page
  • Index
  • History
  • Last Change

Xenisierung eines Kernels für den Betrieb unter EFW2

Da ich EFW2 unter Debian einsetzen möchte, habe ich die Debian-Kernel-Quelltexte mit integrierten Xen-Patches als Ausgangspunkt genommen. Ich habe mir im SRPM des Original-Kernels des EFW2 die auf die Kernel-Quellen angewendeten Patches angesehen und im ersten Anlauf versucht, die auf den Debian-Kernel anzuwenden. Der Erfolg war nur mäßig, da der Debian-Kernel auf 2.6.16 aufbaut, EFW2 aber einen 2.6.9 verwendet. Ich habe dann Patch für Patch geprüft, ob es eine neuere Version gibt oder ob der Patch bereits überholt ist - durchaus möglich, dass ich dabei Details übersehen habe, also keine Gewähr ;-)

Zum Handwerklichen: Ich benutze derzeit die Xen-Kernel aus Debian-Testing (linux-image-2.6.<irgendwas>). Die weichen von den bisher unter Sarge verwendeten (kernel-image-2.6.<irgendwas>) stark darin ab, wie man mit den Quelltexten und Neuübersetzen umgeht. Früher gab es ein Quelltextpaket, dass die passend zu einem Kernel-Image bereitstellte und als Binärpaket zu installieren war, jetzt muss man tatsächlich ein Quellpaket holen und es mit den üblichen Debian-Paketbaumechanismen (debian/rules <bla>) zusammenbauen lassen. Eine grundlegende Anleitung dafür findet sich hier:  http://kernel-handbook.alioth.debian.org/ch-common-tasks.html Die entscheidende Information findet sich am Ende von Abschnitt 4.2:

a) Man bereitet die mit

apt-get source linux-2.6.16-xen-vserver-686

installierten Quellen zunächst

b) vor,

fakeroot debian/rules debian/build debian/stamps
fakeroot make -f debian/rules.gen setup-i386-none-686

c) kann dann die Patches auf den Quelltextbaum anwenden und ihn anschließend mit:

fakeroot make -f debian/rules.gen binary-arch-i386-none-686

übersetzen. <none-686> in b) und c) sollte man durch etwas Sinnvolles ersetzen ;-)

Wenn die Patches, die man in c) vor dem Übersetzen einspielt, Konfigurationsoptionen zum Kernel hinzufügen, ruft man am besten noch mal Schritt b) auf. Dann werden die neuen Optionen wie bei einem "make oldconfig"-Lauf abgefragt.

Zu den Patches - Vorsicht das ist ein Protokoll der Dinge, die ich getan habe. Ich habe es mangels Zeit nicht nachvollzogen, möglich, dass hier Klippen drin sind. Im EFW2-SRPM für den Kernel bin ich auf foldende Kernel-Patches gestoßen.

iptables-1.3.2-pptp-20050720-workaround.patch
iptables-1.3.2.tar.bz2
kernel-2.6.9-2.6.10-layer7-1.2.patch
linux-2.6.11-broken_conntrack_nf_fix.patch
linux-2.6.9-pom-20050720-CONNMARK.patch
openswan-2.4.0.kernel-2.6-natt.patch
patch-o-matic-ng-20050720.tar.bz2

Schon der Versuch, mit dieser Version der patch-o-matic-ng auf den Debian-Kernel loszugehen, scheiterte mit merkwürdigen Meldungen. Folgende Patches habe ich letztlich erfolgreich anwenden können:

iptables-layer7-2.3.patch
openswan-2.4.6.kernel-2.6-natt.patch
patch-o-matic-ng-20060823
iptables-1.3.5-20060823

Nach dem Anwenden dieser Patches ließ sich der Kernel übersetzen. Allerdings habe ich einige CONFIG-Optionen zurücknehmen müssen, die ich im ersten, von den Debian-Tools ausgelösten "make oldconfig"-Lauf mutig aktiviert hatte. Ich habe leider nur den "entscheidenden Teil" der Optionen notiert (müssten alle dem Iptables/Nat?-Lager entstammen): talk, rtsp, quake3, conntrack rpc (udp) ipv4options, ip6t_route).

An den Start bringen: Die herausfallenden Debian-Pakete lassen sich dann auf dem Host-System, das EFW2 unter Xen ausführen soll, installieren - vorausgesetzt sie kolidieren namensmäßig nicht mit dem schon vorhandenen Kernel. Die Kernel mit den Xen-Patches trägt Debian - anders als normale - nicht in den Boot-Loader ein. Auch erzeugt es keine Initrd dafür. Letzteres muss man für Xen zu Fuß machen. Dazu sollten die initramfs-tools installiert sein; mit den Alternativen hatte ich keinen Erfolg.

Ich bin von einem VMware-Image mit EFW2 ausgegangen, habe ein Abbild der Installation in ein tar.gz-Archiv angefertigt, dass auf einem leeren Dateisystem wieder ausgepackt und in Details angepasst (etwa Passwörter neu gesetzt, mount-Punkte auf ein Dateisystem gelenkt et cetera). Außerdem müssen die Module aus dem /lib/modules-Verzeichnis des Hosts in das Xen-DomU-Dateisystem hineinkopiert werden. Dann erstellt man eine Konfigurationsdatei für die DomU, die kann zum Beispiel so aussehen (ich verwende LVM für die Dateisysteme/Platten? der DomUs, es könnten aber auch Image-Dateien sein):

kernel="/boot/vmlinuz-2.6.16-2-xen-vserver-efw2-686"
ramdisk="/boot/initrd.img-2.6.16-2-xen-vserver-efw2-686"
name="efw2"
root="/dev/sda1 ro"
disk=['phy:xenvg/efw2lv,sda1,w']
memory=64
vif=['bridge=xenbr0','bridge=dsl','bridge=xenbr2' ]

Die Netzwerkschnittstellen kommen über Bridge-Interfaces in die DomU. Beim Starten kann man Xen anweisen, die Consolen-Ausgaben beim auszugeben (efw2 ist der Name der in /etc/xen angelegten Konfigurationsdatei für die DomU-Instanz):

xm start efw2 -c 

Bei einem unbehandelten Debian-Kernel in der DomU fallen dabei Meldungen über Module auf, die nicht geladen werden konnten:

ip_conntrack_mms
ip_nat_mms
ip_proto_gre
ip_nat_gre

Nach der Behandlung des Debian-Kernels mit o.g. Patches verschwinden die ersten beiden Warnungen zu den mms-Mdulen, die letzten beiden bleiben. Haben hier die Kernel-/Iptables-Entwickler womöglich etwas umbenannt, sodass die Module gar nicht oder unter einem anderen Namen existieren?

Anpassungen des VMware-Images/tar.gz-Archivs:

Sonstige Informationen:

/usr/sbin/ethconfig wirft eine Fehlermeldung, weil via lspci über die in die DomU gebridgten NICs nichts in Erfahrung zu bringen ist. Das lässt sich verhindern, indem in der Funktion die Variablen name und businfo initialisiert:

        # get card name
        name = "Unknown"
        businfo = "Unknown"

Beim Anwenden neuerer iptables-Patches ist es wichtig, dass auch die User-Land-Werkzeuge ausgetauscht werden (/sbin/iptables und die Dateien in /lib/iptables haben genügt). Bei EFW21 war zusätzlich in /usr/local/lib ein Link iptables auf /lib/iptables zu setzen (das fehlte für 20 in der Dokumentation, war aber wohl auch dort notwendig). Ansonsten scheitern schon simple iptables-Aufruf zum Einrichten von NAT-Regeln.

Auffälligkeiten beim Betrieb in einer Xen-Umgebung: Beim Datentransfer von DomU zu DomU (EFW und mailhost auf einer Maschine in mehreren Xen-Instanzen) "stimmt" etwas mit den tcp-Prüfsummen nicht. Es kommen keine TCP-Verbindungen zustande. Die Xen-Entwickler haben hier wohl irgendwas mit der Prüfsummenberechnung optimiert. Bisher hat es genügt, auf den anderen/nicht EFW-DomUs die Prüfsummenbildung mit ethtool abzuschalten, bei Debian eine ausführbare Datei fix-xen in /etc/network/if-up.d anzulegen:

#!/bin/bash
if [ $IFACE != "lo" ] ; then
        ethtool -K $IFACE tx off
fi

In den Xen-Mailinglistenarchiven (etwa auf  http://marc.theaimsgroup.com) finden sich diverse Diskussionen zu diesem Thema.

Zweiter Anlauf mit Community 2.1

Installiert per VMware und dort als tar.gz geerntet.

Hostnamen/IP-Adressen-Anpassung auch in /etc/hosts!

Irgendwas am Web-Interface war nach der Umstellung der IP-Adresse plötzlich kaputt.

Download in other formats:

  • Plain Text

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/
http://www.ctmagazin.de/projekte/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source