Neue Xen Anleitung - eure Hilfe ist gefragt!

IPFire als Gast oder Hypervisor (Xen, Qemu, KVM)
Post Reply
Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » December 31st, 2010, 1:00 pm

Hallo Community,
da die Stimmen nach einer neuen Anleitung in unseren Wiki nach einer aktuellen Anleitung wie man Xen als Dom0 aufsetzt und darin Ipfire paravirtualisiert laufen lassen kann immer lauter werden, fange ich  hier an. Da ich auch nur ein Entwickler bin und daher manche Sachen als bekannt annehme, möchte ich das Howto erst einmal hier erstellen, damit jeder noch seinen Senf dazu abgeben kann und evtl. Probleme im Vorfeld ausgeräumt werden können - soll heißen, wer noch eine Ergänzung, Idee, Probleme, Unklarheiten mit dem Howto hat, her damit!

1. Installation von Debian Squeeze

Auf die Grundinstallation von Debian 6.0 (Squeeze) gehe ich nicht weiter ein, dazu gibt es die Debian Doku. Es ist sehr zu empfehlen eine 64 bit Version zu installieren, da diese wesentlich besser und stabiler läuft als eine 32 bit.

2. Anpassen der Quellen

Vorweg, ich beschreibe hier, wie mein System aufgesetzt wurde und bei mir seit einigen Monaten treue Dienste leistet. Alle Kommandos werden als root ausgeführt.

nano /etc/apt/sources.list

Code: Select all

deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://volatile.debian.org/debian-volatile stable/volatile main
deb-src http://volatile.debian.org/debian-volatile stable/volatile main
deb http://ftp.debian.org/debian/ testing main contrib non-free


Quellen aktualisieren:
aptitude update

--> evtl fehlen hier noch keyrings!

3. Notwendige Pakete installieren

aptitude install xen-hypervisor-4.0-amd64 linux-image-xen-amd64 xen-qemu-dm-4.0 bridge-utils ethertool

4. Anpassen von Grub2

Code: Select all

mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2


5. Anpassen von xendomains

nano /etc/default/xendomains

Code: Select all

XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""


6. Anpassen von xend-config

nano /etc/xen/xend-config.sxp

Code: Select all

(vif-script vif-bridge)
#(vif-script     vif-route)
#(vif-script     vif-nat)


7. Verhindern, dass die Bridges in Promisc Mode gestartet werden

Die Schnittstellen im Promisc Mode zu betreiben macht nur Sinn, wenn man entsprechende Debuginformationen sammeln möchte. Ich betreibe einen Fileserver als DomU und im Promisc-Mode laufen die Bridges "als Hub". D.h. jede DomU, die an der Bridge hängt bekommt immer alle Informationen/Dateien geschickt sobald an irgend eine etwas geschickt wird. Dies führt zu unnötigen Traffic im Netzwerk und theoretisch könnte eine DomU die andere Domu (inkl. Dom0) abhören. Daher Promisc aus.

nano /etc/xen/scripts/vif-bridge

Rote Zeile einfügen:

Code: Select all

case "$command" in
  online)
      setup_bridge_port "$vif"
      add_to_bridge "$bridge" "$vif"
      ip link set "$vif" promisc off      # DIESE ZEILE EINFÜGEN!
      ;;

  offline)
      do_without_error brctl delif "$bridge" "$vif"
      do_without_error ifconfig "$vif" down
      ;;
esac


8. Netzwerk konfigurieren

nano /etc/network/interfaces[/i

Code: Select all

auto lo eth0
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
up ifconfig eth0

# intern is the interface to the internal lan
auto xenbrI
iface xenbrI inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.10
        dns-nameservers 127.0.0.1
        bridge_ports eth0
        bridge_stp off
        post-up ethtool -K xenbrI tx off
        post-up ip link set xenbrI promisc off

# dmz
auto xenbrD
iface xenbrD inet manual
        pre-up brctl addbr xenbrD
        up ifconfig xenbrD 0.0.0.0
        bridge_stp off
        post-up ethtool -K xenbrD tx off
        post-up ip link set xenbrD promisc off
        post-up ip link set xenbrD address 00:23:24:25:26:27
        down ifconfig xenbrD down
        post-down brctl delbr xenbrD


Jede Ip-Adresse darf nur einmal im Netzwerk auftauchen! Die Bridge ist wie ein Switch zu betrachten, wo sich die einzelnen Virtuellen Maschinen einstecken. D.h. Ipfire und Dom0 dürfen niemals die gleich Ip haben!

Optionale Ergänzung: Red

Ich habe, die Netzwerkkarte an die Ipfire DomU gereicht, aber nicht alle werden das machen können. Daher muss man dann eine Bridge für Red anlegen.
Ein Codebeispiel für eine Ergänzung der /etc/network/interfaces kann wie folgt aussehen:

Code: Select all

# eth1 -> extern
auto eth1
iface eth1 inet static
   up ifconfig eth1 0.0.0.0
   auto xenbrE
   iface xenbrE inet manual
   bridge_ports eth1
   bridge_stp off
   post-up ethtool -K xenbrE tx off


Optionale Ergänzung: Blue

Möchte man ein Wlannetz mit aufbauen, hat man zwei Möglichkeiten. Entweder man lässt in der Dom0 die Karte als Accesspoint laufen, oder man reicht sie an die Ipfire-domu per pci-passthrough. Bei mir läuft sie direkt im Ipfire, daher taucht sie nicht in meiner Network-config auf. Wer sie nicht durchreichen möchte/kann der kann sich in der Dom0 das Packet "hostapd" (aptitude install hostapd) installieren. In der Configfile (nano /etc/hostapd/hostapd.conf) muss als interface eine Brdige angegeben sein, z.B. xenBrB. XenbrB muss vorher in der Networkconfig ebenso erstellt werden wie die vobn mir beschriebene DMZ. Hostapd fügt das wlan interface dann selbstständige zur Bridge hinzu.

9. Grub-config überprüfen

[i]nano /boot/grub/grub.cfg


Code: Select all

menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
        insmod part_msdos
        insmod ext2
        set root='(/dev/sda,msdos1)'
        search --no-floppy --fs-uuid --set 5872ac7f-d362-4bc0-a5ff-f25556655cca
        echo    'Loading Linux 2.6.32-5-xen-amd64 ...'
        multiboot       /xen.gz dom0_mem=1024M cpufreq=xen cpuidle iommu=on iommu=pv
        module  /vmlinuz-2.6.32-5-xen-amd64 root=UUID=3b47db40-e398-4f4a-ac6b-440e579f06f5 ro earlyprintk=xen xen-pciback.permissive xen-pciback.hide=(08:06.0)(03:00.0) reassign_resources
        echo    'Loading initial ramdisk ...'
        module  /initrd.img-2.6.32-5-xen-amd64
}


Erklärung:
Ich habe Hardware, die IOMMU unterstützt, daher ist das bei mit aktiviert. Wenn ihr keine Hardware habt, die diese Unterstützung hat, dann bitte die entsprechenden Stellen löschen. dom0_mem=1024M ist ein guter Wert für eine Dom0. Laut Xen Mailingliste tauchen damit am wenigsten Probleme auf. xen-pciback.hide=(08:06.0)(03:00.0) versteckt die beiden Devices, damit man sie später in eine DomU reichen kann.

Nun viel Spass mit dem neuen Xen System!

edit:
03.01.2011
- Erklärung zu Promisc hinzugefügt
- Blue-Netzwerk optional hinzugefügt
- Red-Netzwerk optional hinuigefügt
Last edited by Trikolon on January 3rd, 2011, 7:24 pm, edited 1 time in total.

max4fw
Posts: 76
Joined: December 23rd, 2010, 10:33 pm

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by max4fw » January 3rd, 2011, 2:14 pm

Hallo Trikolon,

finde ich klasse, dass Du diese Anleitung verfasst hast! Mir hätte es über die Feiertage bestimmt ein paar Tage Frust erspart... Aber andererseits habe ich natürlich auch viel durch die eigenen Fehler gelernt und kenne jetzt das System ein bisschen besser als es sonst der Fall wäre ;-)

Ein paar Kleinigkeiten sind mir aufgefallen, die Du bei Gelegenheit vielleicht noch verbessern könntest:

1. In der /etc/network/interfaces würde ich auch noch die entsprechenden Zeilen für die xenbrW (BLUE) angeben (wenn sie denn stimmen ???), damit sämtliche interfaces einsetzbar werden, welche durch die IPFire unterstützt werden (auch wenn Du keine BLUE benutzt und ich keine ORANGE - aber ein dritter benötigt vielleicht alle vier):

Code: Select all

#wlan
auto xenbrW
iface xenbrW inet manual
pre-up brctl addbr xenbrW
up ifconfig xenbrW 0.0.0.0 promisc up
bridge_fd 1
bridge_stp off
bridge_hello 1
post-up ethtool -K xenbrW tx off
down ifconfig xenbrD down
post-down brctl delbr xenbrW


2.) Nur ein Hinweis: In der Anweisung zum Ausschalten des Promiscuous Mode der bridges funktionert anscheinend die Hervorhebung durch die rote Farbe nicht und könnte für Verwirrung sorgen, wenn das jemand einfach nur kopiert... By the way, warum möchtest Du die bridges promisc off haben? In den obigen Zeilen werden sie doch bewusst auf promisc gesetzt - ich vermute mal, damit das IDS schnüffeln kann, oder nicht? Vielleicht hier auch ein kurzer Hinweis über das Warum, damit man das nachvollziehen kann.

3.) Könntest Du noch etwas dazu sagen, wieviel RAM man für die domU IPFire reservieren sollte? Ich habe 128 MB vorgesehen und stelle bislang bei den Systemauslastungsgraphiken der IPFire fest, dass das reicht, aber vermutlich korreliert das auch mit dem Netzaufkommen, den Einstellungen und mit der Zahl der Interfaces?!

4.) Ein Hinweis zum built-in Domainnameserver(-Proxy) wäre für weniger Versierte vermutlich auch wünschenswert - ich habe mir, wie Dir nicht entgangen ist, unnötige Probleme eingehandelt, weil ich das nicht sauber hinbekommen habe.

Ansonsten ganz herzlichen Dank! Für mich kommt der Hinweis auf Debian Squeeze leider zu spät (ich habe Lenny aufgesetzt), aber beim nächsten Upgrade halte ich mich ganz bestimmt daran!

Herzliche Grüße
max4fw
Image

Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » January 3rd, 2011, 4:29 pm

Danke für die Hinweise. Einige Ergänzungen haben den Weg ins Howto gefunden!

Gruß

rowie
Mentor
Mentor
Posts: 1196
Joined: April 9th, 2006, 3:33 pm
Location: Oberoesterreich
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by rowie » January 3rd, 2011, 5:31 pm

Hi Ben,

Dickes Lob für die Anleitung!

Was mir aufgefallen ist das gewisse Dinge wie ..
--> evtl fehlen hier noch keyrings!
einen nicht so versierten Benutzer vor Hindernisse stellen die zwar mit goggle lösbar sind aber naja ... Ich versuche Anleitungen immer so zu verfassen das sie:

- mit copypaste einfach zum handhaben sind
- und durch kurze kommentare auch noch leicht verständlich sind.

Ist dir definitiv  gelungen und drumm BITTE weiter so!   ;)

Werd das bei mir bald mal nachstellen und dann gibts hoffe ich mehr zu Berichten....


Lg,
rowie

PS: Es wäre warsch. besser gleich im Wiki zu beginnen (kein syntax aufs wiki anpassen), aber da würde es warsch. nicht so viele Kommentare wie hier im Forum geben ... schade ..
Last edited by rowie on January 3rd, 2011, 5:34 pm, edited 1 time in total.
Image

max4fw
Posts: 76
Joined: December 23rd, 2010, 10:33 pm

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by max4fw » January 3rd, 2011, 5:47 pm

Hallo Trikolon,

mir ist noch etwas aufgefallen, was mich irritiert: Du hast in der /etc/network/interfaces keine xenbrE definiert. Heisst das, dass Du das entsprechende Interface ebenfalls an die domU des IPFire übergibst? Ich habe meine interfaces nach einer älteren Anleitung aus der Wiki übernommen und entsprechend folgende Zeilen darin stehen:

Code: Select all

# eth1 -> extern
iface eth1 inet static
        up ifconfig eth1 0.0.0.0

auto xenbrE
iface xenbrE inet manual
        bridge_ports eth1
        bridge_fd 1
        bridge_stp off
        bridge_hello 1
        post-up ethtool -K xenbrE tx off
        post-up ip link set xenbrE promisc off


(Anm.: Die Zeile mit "promisc off" habe ich gemäß Deiner Anleitung erst jetzt angefügt.)

Zwei Fragen daher:

1.) Was machst Du mit RED, warum definierst Du keine bridge in /etc/network/interfaces? Oder geht es nicht auch so wie oben? Bei mir funktioniert es ja, aber womöglich trotzdem falsch bzw. unsicher aufgesetzt...

2.) Braucht denn der IPFire für IDS usw. nicht Netzwerkarten im "promisc"-Modus, um den Traffic mitverfolgen zu können? Bei einem Switch geht das bekanntlich ja auch nur dann, wenn er gemanaged bzw. in den "promisc"-Mode versetzt ist (im Unterschied zum Hub, wie Du mit Recht erwähnst, wo man sowieso den ganzen Traffic mitverfolgen kann).

LG max4fw
Last edited by max4fw on January 3rd, 2011, 5:49 pm, edited 1 time in total.
Image

Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » January 3rd, 2011, 7:27 pm

1.) Was machst Du mit RED, warum definierst Du keine bridge in /etc/network/interfaces? Oder geht es nicht auch so wie oben? Bei mir funktioniert es ja, aber womöglich trotzdem falsch bzw. unsicher aufgesetzt...


hinzugefügt!

2.) Braucht denn der IPFire für IDS usw. nicht Netzwerkarten im "promisc"-Modus, um den Traffic mitverfolgen zu können? Bei einem Switch geht das bekanntlich ja auch nur dann, wenn er gemanaged bzw. in den "promisc"-Mode versetzt ist (im Unterschied zum Hub, wie Du mit Recht erwähnst, wo man sowieso den ganzen Traffic mitverfolgen kann).


da bin ich nun überfragt! Micha kannst du das etwas erörtern?

--> evtl fehlen hier noch keyrings!


rowie hast du den befehl eben zur hand wie das nochmal ging? ich google das immer nach dem entsprechenden key dann..

Gruß

User avatar
MichaelTremer
Core Developer
Core Developer
Posts: 5640
Joined: August 11th, 2005, 9:02 am

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by MichaelTremer » January 4th, 2011, 12:01 am

max4fw wrote:2.) Braucht denn der IPFire für IDS usw. nicht Netzwerkarten im "promisc"-Modus, um den Traffic mitverfolgen zu können? Bei einem Switch geht das bekanntlich ja auch nur dann, wenn er gemanaged bzw. in den "promisc"-Mode versetzt ist (im Unterschied zum Hub, wie Du mit Recht erwähnst, wo man sowieso den ganzen Traffic mitverfolgen kann).


Nein, im Gegenteil ist dies hier eine zusätzliche Gefahr. Der Promisc-Modus wird hier nicht in allen Fällen zwingend benötigt und schon garnich für das IDS.

Switches haben keinen "promisc"-Mode. Die nehmen immer alle Pakete an.
Support the project with our Donation Challenge!

Get Commercial Support for IPFire and more from Lightning Wire Labs!

Image

User avatar
m.a.d
Community Developer
Community Developer
Posts: 374
Joined: August 24th, 2009, 11:05 am
Location: Bruck an der Leitha

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by m.a.d » January 6th, 2011, 7:57 pm

Hello Trikolon

Super Anleitung und vielen Dank für deine Mühe dass so zusammenzufassen.

Bei der Netzwerk Konfig habe ich noch ein kleines Vertändnisproblem denn ich sehe und verstehe nicht wie bzw wo die xenbrI Bridge definiert wird bevor sie im Interface File benutzt wird.

Ich hätte auch noch 2 kleine Anmerkungen zu machen.

1.) Ich habe XEN unter Debian Squeeze mittels des Metapacket xen-linux-system-2.6.32-5-xen-amd64 installiert, damit fehlt dann nur noch der qemu.

Daher sollte mit

Code: Select all

aptitude install xen-linux-system-2.6.32-5-xen-amd64 xen-qemu-dm-4.0

alles erforderliche installiert werden.


2.) Das Problem wenn man bei Grub2 /boot/grub/grub.cfg editiert ist dass beim nächsten update-grub die Änderungen leider verloren gehen.
Ich glaube man sollte besser das Script 20_linux_xen in /etc/grub.d anpassen.

vlg und nochmals Danke

m.a.d
OpenVPN net2net

Image

Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » January 7th, 2011, 7:37 am

Bei der Netzwerk Konfig habe ich noch ein kleines Vertändnisproblem denn ich sehe und verstehe nicht wie bzw wo die xenbrI Bridge definiert wird bevor sie im Interface File benutzt wird.


Naja eine Bridge ist quasi wie ein Switch. Die kann man einfach so erstellen und das passiert durch das Einstellen der /etc/network/interfaces. Zu einer Bridge kann man dann keine oder mehrere physikalischen Schnittstellen hinzufügen. DMZ hat zb kein physikalisches Interface bei mir.

aptitude install xen-linux-system-2.6.32-5-xen-amd64 xen-qemu-dm-4.0

bewirkt fast das gleiche wie das was ich geschrieben habe. xen-linux-system ist nur ein metapaket - es enthält keine dateien!

User avatar
MichaelTremer
Core Developer
Core Developer
Posts: 5640
Joined: August 11th, 2005, 9:02 am

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by MichaelTremer » January 7th, 2011, 10:51 am

Gibt es eigentlich eine Nomensklatur für die Benennung der Bridges? Also was bedeuten xenbrI, xenbrB usw.?
Support the project with our Donation Challenge!

Get Commercial Support for IPFire and more from Lightning Wire Labs!

Image

Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » January 7th, 2011, 12:37 pm

der name kann ansich willkürlich gesetzt werden I = Intern, B = Blue, D = DMZ. aber kannst auch bridge1..2..3 oder was auch immer verwenden. musst das nur eben auch in deiner domU config berücksichtigen.
gruß

User avatar
m.a.d
Community Developer
Community Developer
Posts: 374
Joined: August 24th, 2009, 11:05 am
Location: Bruck an der Leitha

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by m.a.d » January 7th, 2011, 3:05 pm

Naja eine Bridge ist quasi wie ein Switch. Die kann man einfach so erstellen und das passiert durch das Einstellen der /etc/network/interfaces


Mich verwirrt nur das bei den Bridges xenbrW und xenbrB in der /etc/network/interfaces folgendes steht :

pre-up brctl addbr xenbrW

bzw
post-down brctl delbr xenbrW

und bei der xenbrI nicht.

Mir ist durchaus bewusst das man mit brctl Bridges adden deleten u.s.w kann, das es noch einen anderen Weg über /etc/network/interfaces gibt war mir nicht bewusst. Man lernt nie aus.

der name kann ansich willkürlich gesetzt werden I = Intern, B = Blue, D = DMZ. aber kannst auch bridge1..2..3 oder was auch immer verwenden. musst das nur eben auch in deiner domU config berücksichtigen.


Allerdings mußte ich bei der Installation bei Debian Lenny feststellen das beim adden der Bridges über die Xen Scripts (nicht über /etc/network/interfaces) keine anderen Names der Bridges ausser eth0 eth1 u.s.w. funktioniert haben. Ein kleiner Test auf meiner Squeeze zeigte das selbe Verhalten als ich versucht habe die Bridge fürs Green Interface der Fire mit green zu bezeichnen.

m.a.d
Last edited by m.a.d on January 7th, 2011, 3:10 pm, edited 1 time in total.
OpenVPN net2net

Image

max4fw
Posts: 76
Joined: December 23rd, 2010, 10:33 pm

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by max4fw » January 7th, 2011, 3:13 pm

Hallo,

aus der Sicht des Laien stellt sich mir die übliche Nomenklatur wie folgt dar:

xenbrI = Intern = GREEN
xenbrE = Extern = RED
xenbrW = WLAN = BLUE
xenbrD= DMZ = ORANGE

Wie man sehen kann, gehen die Abkürzungen von der Funktionszuschreibung aus und nicht von der Zonenfarbe.

Wenn ich mich nicht irre, so wird in xen-Anleitungen wird aber auch gerne folgende Nomenklatur verwendet:

xenbr0
xenbr1
xenbr2   usw.

Das erleichtert die Zuordnung zu einem physikalischen Interface eth0, eth1, eth2 usw., erschwert aber Laien evtl. das Verständnis im Hinblick auf den IPFire. Beim Einrichten der entsprechenden Netzwerke hat das dann aber wieder den Vorteil, weil man xenbr0 die 192.168.0.0/24, xenbr1 die 192.168.1.0/24 und xenbr2 die 192.168.2.0/24 vergeben kann, so dass alles einer konsistenten Zahlenlogik entspricht.

LG max4fw
Image

Trikolon
Community Developer
Community Developer
Posts: 552
Joined: October 16th, 2008, 6:21 am
Location: Erlangen
Contact:

Re: Neue Xen Anleitung - eure Hilfe ist gefragt!

Post by Trikolon » January 18th, 2011, 11:02 am

Wenn es keine weiteren Probleme oder Änderungswünsche gibt, dann werde ich das HOWTO in den nächsten Tagen ins Wiki stellen.

Gruß Ben

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest