Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:xen_gentoo2008

XeN Server auf Gentoo

Author: sledge0303

Version 1.0.1
Stand: 07.11.2008

Ich werde in diesem Howto die Installation und Konfiguration eines Xen Systems erklären. Es wird zu 90% ein reines Copy'n'Paste Howto werden, allerdings sind im gewissen Rahmen erweiterte Grundkenntnisse in Sachen Linux und Administration von Servern erforderlich.
Meine Empfehlung, schaut Euch jeden Schritt genau an der getätigt werden muss und vergesst eines nicht:
LESEN - DENKEN - LOSLEGEN
getestet wurde es auf einem OVH Server der Kimsufi 2008 Serie.
Wichtig: die meisten Hoster wie OVH lassen nur ein Routing per Network-NAT oder Network-Route zu. Standardkonfiguration in XeN ist Network-Bridge. Eine XeN Konfiguration per Bridge würde die kurzfristige Sperrung deines Servers durch den Switch des Anbieters zur Folge haben. Des weiteren werde ich nicht erklären, wo der Unterschied - sowie Vorteile- beim Routing per NAT oder Route liegt. So viel Grundlagenwissen setze ich voraus, ggf. musst du dich bei google.de durchlesen.

1. Partitionierung HDD

Wir versetzen unseren Server in den Rescue Modus und nach Erhalt des Passworts partitionieren wir die Festplatte.

cfdisk

Ich schlage folgendes Schema vor:

Device MountpointsBootflagFilesystemGröße
sda1 / ja ext3 10GB
sda2 swap swap 1GB
sda3 /home ext3 7GB
sda5 /var ext3 15GB
sda6 /usr ext3 5GB
sda7 LVM Rest

Bootflag nicht vergessen!

2. Gentoo 2008 from scratch installieren

Nachdem die Partitionierung abgeschlossen wurde, erstellen wir die Dateisysteme und mounten die Partitionen

mkfs.ext3 /dev/sda1
mkfs.ext3 /dev/sda3
mkfs.ext3 /dev/sda5
mkfs.ext3 /dev/sda6

mkswap /dev/sda2
swapon /dev/sda2

mkdir -p /mnt/gentoo
mount -t ext3 -o noatime /dev/sda1 /mnt/gentoo
mkdir -p /mnt/gentoo/home
mount -t ext3 -o noatime /dev/sda3 /mnt/gentoo/home
mkdir -p /mnt/gentoo/var
mount -t ext3 -o noatime /dev/sda5 /mnt/gentoo/var
mkdir -p /mnt/gentoo/usr
mount -t ext3 -o noatime /dev/sda6 /mnt/gentoo/usr

2.1 Installation Gentoo 2008

wget -q -O - http://gentoo.osuosl.org/releases/x86/2008.0/stages/stage3-i686-2008.0.tar.bz2 | tar xpjvf - -C /mnt/gentoo/


cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
mount -t tmpfs none /mnt/gentoo/tmp

chroot /mnt/gentoo /bin/bash

Im Chroot führen wir ein paar Befehle aus und erstellen das Rootpasswort sowie einen User

env-update
source /etc/profile

cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
grep -v rootfs /proc/mounts > /etc/mtab

passwd
adduser $username

Wir laden uns den Portage-Tree herunter und aktualisieren diesen anschließend

wget -q -O - http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2 | tar xvjpf - -C /usr/

2.2 Konfiguration des Systems

Die Datei make.conf ist für ein 386 Betriebssystem ausgelegt ohne Virtualisierung von Windows.
FIXME ←- Anpassung von Windows kommt später, wenn es mit der neusten Version getestet wurde

cat > /etc/make.conf << "EOF"
CFLAGS="-O2 -march=i686 -pipe -mno-tls-direct-seg-refs"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"

USE="-X -gtk -gtk2 -qt3 -qt4 -gnome -kde -ipv6 nptonly"
FEATURES="${FEATURES} buildpkg"
EOF

Die Option „-mno-tls-direct-seg-refs“ ist wichtig, da XeN kein TLS unterstützt. Aus diesem Grund müssen wir später das komplette System neu kompilieren.

/etc/fstab

cat > /etc/fstab << "EOF"
/dev/sda1 /         ext3    noatime                                0 1
/dev/sda2 none      swap    sw                                     0 0
/dev/sda3 /home     ext3    noatime,nodev,noexec,nosuid            1 2
/dev/sda5 /var      ext3    noatime                                1 2
/dev/sda6 /usr      ext3    noatime                                1 2



tempfs    /tmp      tmpfs   nodev,noexec,nosuid,mode=1777          0 0
devshm    /dev/shm  tmpfs   nodev,noexec,nosuid                    0 0
EOF

Host und Hostname bitte anpassen

cat > /etc/hosts << "EOF"
127.0.0.1        localhost.localdomain localhost
123.123.123.123  meinedomain.tld
EOF

cat > /etc/hostname << "EOF"
meinedomain.tld
EOF

sed 's@^CLOCK=.*@CLOCK="local"@' -i /etc/conf.d/clock
sed 's@^#TIMEZONE=.*@TIMEZONE="Europe/Berlin"@' -i /etc/conf.d/clock

cat > /etc/locale.gen << "EOF"
de_DE@euro ISO-8859-15
en_GB ISO-8859-1
EOF

cat > /etc/env.d/02locale << "EOF"
LANG=de_DE@euro
EOF

locale-gen -c /etc/locale.gen

Damit SSHd allgemein nach dem ersten Reboot zur Verfügung steht:

rc-update add sshd default

Wer möchte, kann seinen SSHd Dienst anpassen, Port ändern etc pp…

nano /etc/ssh/sshd_config

3.0 Rekompilieren von Gentoo

Zuerst aber aktualisieren wir den Portage-Tree

emerge --sync

Damit XeN funktioniert, darf nichts in Sachen TLS zurückbleiben und wir kompilieren das System neu mit den Angaben aus der make.conf
Der Vorgang kann je nach Prozessor und verfügbaren RAM einige Stunden dauern, beim Kimsufi 2008 waren es etwa 4 Stunden.

emerge -C mktemp com_err ss e2fsprogs
emerge -1 portage e2fsprogs

emerge -De system

Man kann natürlich auch unbeobachtet den Vorgang über Nacht laufen lassen, indem wir den Parameter „nohub“ davor setzen (empfohlen)

emerge -C mktemp com_err ss e2fsprogs
emerge -1 portage e2fsprogs

nohup emerge -De system

Nachdem das System kompiliert wurde

emerge syslog-ng logrotate vixie-cron iproute2 dhcpcd gentoolkit traceroute whois screen grub

Runlevel für die Logger erstellen

rc-update add syslog-ng default
rc-update add vixie-cron default

source /etc/profile

3.1 Bootloader schreiben

cat > /boot/grub/device.map << "EOF"
(hd0)  /dev/sda
EOF

grub --no-floppy
root (hd0,0)
setup (hd0)
quit

cat > /boot/grub/grub.conf << "EOF"
timeout 5
default 0

title=Gentoo Linux
  root (hd0,0)
  kernel /boot/xen.gz dom0_mem=128M
  module /boot/vmlinuz-2.6.18-xen0 root=/dev/sda1 max_loop=255
EOF

4.0 XeN installieren

cat > /etc/portage/package.keywords << "EOF"
app-emulation/xen
app-emulation/xen-tools
sys-kernel/xen-sources
EOF

emerge xen xen-tools usermode-utilities

rc-update add xend default
rc-update add xendomains default

4.1 Kernel installieren

4.1.1 dom0 Kernel

cd /usr/src/linux-2.6.18-xen-r12
alias make0="mkdir -p _dom0 && make O=_dom0"

make0 menuconfig

Die dom0 ist das Wirtsystem, d.h. es macht nichts anderes als den Server zu starten und die VServer verwalten.
Für den Wirt gibt es keine weiteren Funktionen und daher kann man im Kernel auf den Modulsupport verzichten. Die folgenden Einstellungen sind notwendig. Deine verwendete Hardware muss sinngemäß in den Kernelsourcen aktiviert und später einkompiliert werden. Für diesen Schritt gibt es kein gesondertes Tutorial.

Loadable Module support ---> [ ] Enable loadable module support 
 
Block Layer ---> [*] Support for Large Block Devices 
 
Processor type and features  ---> Subarchitecture Type (Xen-compatible)  <--- auswählen!
 
 
 
Device Drivers ---> Network device support ---> <*> Dummy net driver support ---> [*] Universal TUN/TAP device driver support 
 
 
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <*> Netfilter Xtables support (required for ip_tables) ---> alles darunter aktivieren
 
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <*> IP tables support (required for filtering/masq/NAT) ---> alles darunter aktivieren
 
File systems ---> 
[*] Second extended fs support
[*]   Ext2 extended attributes
[*] Ext3 journalling file system support
[*]   Ext3 extended attributes
... wer Reiser usw aktivieren möchte, kann es gerne tun ...
 
[*] Quota support
  <*> Old quota format support
  <*> Quota format v2 support
[*] Kernel automounter support
[*] Kernel automounter version 4 support (also supports v3)
 
XEN  ---> [*] Privileged Guest (domain 0)

Wenn du die komplette Hardware eingebaut, die genannten Funktionen implementiert, hast, können wir zur Tat schreiten und den Kernel kompilieren. Es kann je nach Prozessor eine Weile dauern.

make0 all

4.1.2 domU Kernel

Wir kompilieren den Kernel für das Gastsystem. Hier sind nicht ganz so viele Einstellungen vorgeschrieben, allerdings kann man je nach Verwendung Funktionen implementieren. Die Einbindung von GRSEC ist leider noch nicht möglich.

alias makeU="mkdir -p _domU && make O=_domU"

makeU menuconfig

Hier sind die vorgeschriebenen Einstellungen

Processor type and features  ---> Subarchitecture Type (Xen-compatible)  <--- auswählen!
 
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <*> Netfilter Xtables support (required for ip_tables)
 
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <*> IP tables support (required for filtering/masq/NAT)
 
File systems ---> 
[*] Ext3 journalling file system support
[*]   Ext3 extended attributes
[*] Quota support
  <*> Old quota format support
  <*> Quota format v2 support
[*] Kernel automounter support
[*] Kernel automounter version 4 support (also supports v3)
 
XEN  ---> [ ] Privileged Guest (domain 0) <--- WICHTIG!!!

Anschließend kompilieren wir den Kernel

makeU

Falls Modulsupprt aktiviert:
makeU modules_install


Wir kopieren die Kernel nach /boot

cp _domU/vmlinux /boot/vmlinuz-2.6.18-xenU
cp _dom0/vmlinux /boot/vmlinuz-2.6.18-xen0

5.0 XEN konfigurieren

Wir installieren erstmal ein paar Pakete, incl. IP-Tables

emerge gamin gnupg libaio re2c expect bind-tools ed pciutils xfsprogs libutempter lsof lynx iptables

rc-update add iptables default

sed 's@^#net.ipv4@net.ipv4@' -i /etc/sysctl.conf

cat >> /etc/conf.d/rc << "EOF"
RC_PLUG_SERVICES="!net.*"
EOF

5.1 XEN-Konfiguration: Routing per Network-NAT

Ich empfehle schon alleine aus Gründen der Sicherheit NAT.

mv /etc/xen/xend-config.sxp /etc/xen/xend-config.OLD

cat > /etc/xen/xend-config.sxp << "EOF"
# -*- sh -*-

(xend-relocation-server yes)
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
(network-script network-nat)
(vif-script     vif-nat)
(dom0-min-mem 128)
(enable-dom0-ballooning yes)
(dom0-cpus 0)
(vncpasswd '')
EOF

5.2 XEN-Konfiguration: Routing per Network-Route

Wer statt NAT die „Netzwerk Route“ benutzen möchte:
Diese Form des Routings macht allerdings nur dann Sinn, wenn man mindestens 2 FailoverIPs besitzt. Der Vorteil vom Routing ist halt, man kann die domU so händeln wie einen „normalen“ Server ohne manuella Freigabe von Ports usw.

mv /etc/xen/xend-config.sxp /etc/xen/xend-config.OLD

cat > /etc/xen/xend-config.sxp << "EOF"
# -*- sh -*-

(xend-unix-server yes)
(xend-relocation-server no)
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
(network-script 'network-route netdev=eth0')
(vif-script     vif-route)
(dom0-min-mem 128)
(enable-dom0-ballooning yes)
(dom0-cpus 0)
(vncpasswd '')
EOF

6.0 Netzwerkeinstellungen konfigurieren

Wir erreichen den fast wichtigsten Abschnitt der Konfiguration des Hostsystem: der Netzwerkkonfiguration. Mit ihr steht oder fällt der komplette Server. Wenn du dich für NAT entschlossen hast, dann ist Punkt 6.1 für dich zutreffend. Es müssen alle verfügbaren FoIP Adressen in die /etc/conf.d/net eingetragen werden, sonst können diese per NAT nicht genutzt werden

Anders sieht es bei der Network-Route aus. In der /etc/conf.d/net darf nur die IP Adresse der dom0 eingetragen sein und keine FoIP.

6.1 Netzwerkeinstellung für Routing per Network-NAT

123 entspricht der IP des Servers, bitte entsprechend anpassen.
124 steht sinngemäß für deine FailoverIP(s)

Wichtig: default gw entspricht immer dem der Server-/dom0 IP.

cat > /etc/conf.d/net << "EOF"
modules=( "iproute2" )

config_eth0=(
   "123.123.123.123 netmask 255.255.255.0 brd 123.123.123.255"
   "124.124.124.124 netmask 255.255.255.255 brd 124.124.124.255"
)

routes_eth0=(
   "default gw 123.123.123.254"
)
EOF

Damit die Schnittstelle eth0 bei Systemstart aktiviert wird, müssen wir diese im Runlevel aktivieren.

rc-update add net.eth0 boot

6.2 Netzwerkeinstellung für Routing per Network-Route

123 entspricht der IP des Servers, bitte entsprechend anpassen.

cat > /etc/conf.d/net << "EOF"
modules=( "iproute2" )

config_eth0=(
   "123.123.123.123 netmask 255.255.255.0 brd 123.123.123.255"
)

routes_eth0=(
   "default gw 123.123.123.254"
)
EOF

Damit die Schnittstelle eth0 bei Systemstart aktiviert wird, müssen wir diese im Runlevel aktivieren.

rc-update add net.eth0 boot

7.0 Reboot des Servers

Bei OVH beachte bitte die Einstellungen im Manager, d.h. es muss unter Netboot HD/SDA1 eingestellt sein.

exit

reboot

Jetzt ist beten und hoffen in deine Fähigkeiten angesagt… gehen wir mal von aus, der Kasten kommt ohne Probleme wieder hoch.

8.0 domU's / Gastsysteme

Wir können jetzt mit der Installation unserer Gastsysteme beginnen. Ich stelle hier Gentoo sowie Debian als Gast vor. Als erstes installieren wir LVM und Debootstrap

emerge lvm2 debootstrap

rc-update add lvm boot

8.1 LVM Device erstellen

Benennen wir das LVM Device „lvmxen“.

pvcreate /dev/sda7
vgcreate lvmxen /dev/sda7

8.2 V-Server erstellen (Debian)

Wir erstellen ein LVM Device für Debian und eines für dessen Auslagerungsspeicher SWAP. Die zugeordnete Größe beträgt 30GB bzw 512MB.

lvcreate -L30G -n test lvmxen
lvcreate -L512M -n test-swap lvmxen

Erstellen das ext3 Dateisystem und mounten es anschließend nach /mnt

mkfs.ext3 /dev/lvmxen/test
mkswap /dev/lvmxen/test-swap

mount /dev/lvmxen/test /mnt

Per Debootstrap installieren wir nun Debian Etch

debootstrap --arch i386 etch /mnt/ http://ftp2.de.debian.org/debian

Das nimmt einen kleinen Moment in Anspruch bevor wir uns in das frische Debian einloggen können

chroot /mnt /bin/bash

Als erstes vergeben wir das Rootpasswort und erstellen einen User

passwd

adduser $username

Wenn die Adressauflösung per Network-NAT erfolgen soll

cat > /etc/network/interfaces << "EOF"
auto lo
iface lo inet loopback
        address 127.0.0.1
        netmask 255.0.0.0
 
auto eth0
iface eth0 inet static
   address 10.0.0.1
   netmask 255.0.0.0
   broadcast 10.0.0.255
   network 10.0.0.0
   gateway 10.0.0.254
EOF
 
cat > /etc/hosts << "EOF"
127.0.0.1         localhost.localdomain localhost 
10.0.0.1          $deinedomain
EOF

Wenn die Adressauflösung per Network-Route erfolgen soll

cat > /etc/network/interfaces << "EOF"
auto lo
iface lo inet loopback
        address 127.0.0.1
        netmask 255.0.0.0
 
auto eth0
iface eth0 inet static
    address hier.deine.foip.rein       
    netmask 255.255.255.255
    post-up /sbin/ip route add default dev eth0
EOF
 
cat > /etc/hosts << "EOF"
127.0.0.1         localhost.localdomain localhost 
123.123.123.123   $deinedomain
EOF

Wir konfigurieren nun das Betriebssystem

echo 'deb http://ftp2.de.debian.org/debian etch main contrib non-free' > /etc/apt/sources.list &&
echo 'deb-src http://ftp2.de.debian.org/debian etch main contrib non-free' >> /etc/apt/sources.list &&
echo 'deb http://ftp2.de.debian.org/debian-security etch/updates main contrib non-free' >> /etc/apt/sources.list &&
apt-get update

apt-get install -y locales ssh make bzip2 automake && dpkg-reconfigure locales libc6-xen

echo '$hostname' > /etc/hostname 

cat > /etc/fstab << "EOF"
/dev/sda1               /               ext3    defaults        1       2
/dev/sda2               swap            swap    sw            0       0
none                    /dev/shm        tmpfs   defaults     0       0
EOF

In der inittab muss noch eine Änderung vorgenommen werden

nano /etc/inittab

...
...
1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

Jetzt bitte den Port anpassen bzw. SSHd konfigurieren. Als Beispiel für das Routing nehmen wir Port 50000

nano /etc/ssh/sshd_config

Port 50000

Damit die Uhrzeit stündlich abgeglichen wird:

apt-get install ntpdate &&
ntpdate ptbtime1.ptb.de

crontab -e
0 1 * * * /usr/sbin/ntpdate-debian

Wir können jetzt das chroot verlassen, aber vorher bereinigen wir noch den Speicher von aptitude

apt-get clean

exit

Die nächsten Schritte sind wichtig, damit die domU korrekt gestartet werden kann. TLS deaktivieren:

mv /mnt/lib/tls /mnt/lib/tls.disabled

Falls du Modulsupport für den domU Kernel aktiviert hast:

cp -dpR /lib/modules/2.6.18-xen-r12 /mnt/lib/modules/

Auch hier ist wieder die Version zu beachten.

Bevor wir das Device aushängen können, muss der User korrekt ausgeloggt werden

fuser -k /mnt
umount /mnt

8.2.1 Initskript für Network-NAT

Die domU erhält folgende Informationen:
lokale IP Adresse: 10.0.0.1 / 255.0.0.0 / 10.0.0.254
zugewiesenen RAM Speicher: 256 MB

cat > /etc/xen/test.sxp << "EOF"
name="test"
kernel="/boot/vmlinuz-2.6.18-xenU"
root="/dev/sda1"
memory=256
disk = ['phy:/dev/lvmxen/test,sda1,w','phy:/dev/lvmxen/test-swap,sda2,w']

vif=[ 'ip=10.0.0.1' ]
hostname="test"
ip="10.0.0.1"
netmask="255.0.0.0"
gateway="10.0.0.254"

extra="console=xvc0 xencons=tty"
EOF

xm create -c /etc/xen/test.sxp

8.2.2 Initskript für Network-Route

name="test"
kernel="/boot/vmlinuz-2.6.18-xenU"
root="/dev/sda1"
memory=256
disk = ['phy:/dev/lvmxen/test,sda1,w','phy:/dev/lvmxen/test-swap,sda2,w']

vif = [ 'ip=XYZ' ]  #deine FoIP hier eintragen
netmask = "255.255.255.0"
gateway = "XYZ"     #den Gateway von der Server/dom0 IP hier eintragen

extra="console=xvc0 xencons=tty"

gestartet wird die Domain mit

xm create -c /etc/xen/test.sxp

Damit diese domU nach einem reboot der dom0 automatisch gestartet wird, verlinken wir dieses Skript

ln -s /etc/xen/test.sxp /etc/xen/auto/

8.3 Gentoo domU

Wir erstellen ein LVM Device für Gentoo und eines für dessen Auslagerungsspeicher SWAP. Die zugeordnete Größe beträgt 30GB bzw 512MB.

lvcreate -L30G -n test lvmxen
lvcreate -L512M -n test-swap lvmxen

Erstellen das ext3 Dateisystem und mounten es anschließend nach /mnt

mkfs.ext3 /dev/lvmxen/test
mkswap /dev/lvmxen/test-swap

mount /dev/lvmxen/test /mnt

Installieren Gentoo 2008 Stage3 Tarball in das Chroot und kopieren anschließend den Portage Tree, die make.conf und resolv.conf in das Chroot und loggen uns danach dort ein.

wget -q -O - http://gentoo.osuosl.org/releases/x86/2008.0/stages/stage3-i686-2008.0.tar.bz2 | tar xpjvf - -C /mnt/

cp -dpR /usr/portage/ /mnt/usr/
cp /etc/make.conf /mnt/etc/
cp /etc/resolv.conf /mnt/etc/

Loggen und anschließend in das Chroot ein

chroot /mnt /bin/bash

passwd
adduser $username
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime


env-update
source /etc/profile

Konfigurieren die Umgebung und re-kompilieren anschließend alle Pakete neu.

cat > /etc/fstab << "EOF"
/dev/sda1               /               ext3    defaults        1       2
/dev/sda2               swap            swap    sw            0       0
none                    /dev/shm        tmpfs   defaults     0       0
EOF

cat > /etc/make.conf << "EOF"
CFLAGS="-O2 -march=i686 -pipe -mno-tls-direct-seg-refs"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"

USE="-X -gtk -gtk2 -qt3 -qt4 -gnome -kde -ipv6 nptonly"
EOF


cat > /etc/locale.gen << "EOF"
de_DE@euro ISO-8859-15
EOF

cat > /etc/env.d/02locale << "EOF"
LANG=de_DE@euro
EOF

locale-gen -c /etc/locale.gen

cat > /etc/conf.d/hostname << "EOF"
HOSTNAME="meinedomain.tld"
EOF


cat > /etc/conf.d/domainname << "EOF"
DNSDOMAIN="meinedomain.tld"
EOF

rc-update add sshd default

Konfiguration des SSHd Dienst nicht vergessen

nano /etc/ssh/sshd_config

Weil TLS nicht in XEN aktiviert sein darf, müssen wir die domU re-kompilieren. Wie bereits oben beschrieben empfehle ich dies mit dem Paramter „nohup“ zu tun. Der Vorgang nimmt je nach Prozessor eine gewisse Zeit in Anspruch. Ich empfehle nach Abschluss der Arbeiten die geschaffene Gentoo domU als Image abzulegen, dann braucht man diesen Prozess nicht so oft durchmachen…
Da es in der Vergangenheit ein Problem mit den Paketen e2fsprogs und mktemp, sowie dessen Abhängigen, gab, werden wir dieses vorher deinstallieren und mit einem anderen Parameter erneut installieren.

emerge -C mktemp com_err ss e2fsprogs
emerge -1 portage baselayout e2fsprogs

Wer den Kompiler bei seiner Arbeit beobachten möchte, muss „nohup“ entfernen.

nohup emerge -De system

Wir installieren und konfigurieren noch das Grundsystem

emerge logrotate vixie-cron iproute2 gamin gnupg libaio re2c expect bind-tools ntp ed lsof lynx gentoolkit

rc-update add syslog-ng default
rc-update add vixie-cron default

sed 's@^CLOCK=.*@CLOCK="local"@' -i /etc/conf.d/clock
sed 's@^#TIMEZONE=.*@TIMEZONE="Europe/Berlin"@' -i /etc/conf.d/clock

cat > /etc/cron.hourly/ntpdate << "EOF"
#!/bin/sh

/usr/sbin/ntpdate -b -s -p 4 -t 0.1 ptbtime1.ptb.de
EOF

chmod 755 /etc/cron.hourly/ntpdate

rc-update add ntp-client default

8.3.1 Auflösung per Network-NAT

cat > /etc/conf.d/net << "EOF"
config_eth0=( "10.0.0.1 netmask 255.0.0.0 broadcast 10.0.0.255" )
routes_eth0=( "default gw 10.0.0.254" )
EOF

rc-update add eth0 default

8.3.2 Auflösung per Network-Route

cat > /etc/conf.d/net << "EOF"
config_eth0=( "123.123.123.123 netmask 255.255.255.255 broadcast 123.123.123.255" )
postup() {
   route add default dev eth0
}
EOF

rc-update add eth0 default

Anschließend können wir uns aus dem chroot ausloggen, umount und anschließend die Gentoo domU hochfahren

9.0 IPTABLES für Network-NAT

Ausführliche Dokumentation zum Thema Network-NAT findest du hier.

Der Syntax für NAT auf Gentoo ist sehr einfach. Wir nehmen wieder unsere Demo-IP 123.123.123.123 und die IP Adresse für die domU „test“ mit der IP Adresse 10.0.0.1
Wenn wir jetzt den V-Server hochfahren, ist dieser zwar funktionsfähig, kann aber noch nicht mit dem Rest der Welt kommunizieren. Installiert haben wir den Dienst SSHd, dieser lauscht wie im Howto beschrieben auf Port 50000. Wir müssen jetzt dem Xen-Server (dom0)erklären, in welche domU er die entsprechende Anfrage routen soll. Dafür sind 2 Schritte notwendig:

9.1 Kommunikation domU NAT ausgehend

iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j SNAT --to 123.123.123.123

Dieser Befehl besagt, die IP Adresse des lokalen Netzwerks 10.0.0.1 versendet alle ausgehenden Datenpakete über die IP Adresse 123.123.123.123

9.2 Kommunikation dom0 NAT eingehend

iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 50000 -i eth0 -j DNAT --to-destination 10.0.0.1:50000

Dieser Befehl besagt, Anfragen die entweder auf die IP Adresse 123.123.123.123:50000 eingehen, werden in die lokale domU mit der IP Adresse 10.0.0.1 geroutet.
Gesetzt den Fall, der DNS der Domain „www.schlagmichtot.com“ löst sich auf dies IP 123.123.123.123 auf, wird ebenfalls in die domU mit der IP 10.0.0.1 geroutet.
Möchtest du HTTPd Anfragen in die domU routen, wäre statt 50000 die 80 der passende Eintrag… usw usw usw…

Wenn man die ganze Geschichte versucht logisch zu betrachten, dürfte an dieser Stelle jedes weitere Wort zum Network-NAT überflüssig sein :-)

Einen Hinweis habe ich noch, richtig wichtig und kann nicht oft genug wiederholt werden: alle IP Adressen müssen bei NAT durch die dom0 initialisiert werden (Eintrag in der /etc/conf.d/net).

9.3 IPTABLES sichern

/etc/init.d/iptables save

Damit speicherst du die aktuellen Einträge ab, damit diese nach einem reboot des Systems wieder zur Verfügung stehen.


Zurück zum Index

howto/xen_gentoo2008.txt · Zuletzt geändert: 2022/10/11 10:55 (Externe Bearbeitung)

Seiten-Werkzeuge