Also VMWare war erst mal nichts für meinen ‚alten‘ Rechner. Wie wäre es mal mit ‚vserver‚?! Die Installation ist auch nicht sehr schwer.
Ein Problem hat man dann nachher allerdings doch. Das Wirt-System hat alle IP-Adressen seiner Gäste auch an den eigenen Interfacen zu kleben. Dadurch binden sich dann die diversen Netzwerk-Dienste des Wirtes auch an den IP-Adressen des entsprechenden Gastes. Da muss man dann sicher noch etwas schrauben. Dazu aber später mehr, jetzt erst mal die Installation.:
~ # apt-get install linux-image-2.6.22-3-vserver-686 vlan util-vserver vserver-debiantools
~# reboot
...
~# apt-get install lvm2 ext2resize dmsetup
~# lvcreate -L 10G -n asmith smith
Logical volume "asmith" created
~# lvdisplay /dev/smith/asmith
--- Logical volume ---
LV Name /dev/smith/asmith
VG Name smith
LV UUID bnVx7V-Gxyo-NXVm-s908-wPlx-nms5-GSHzJz
LV Write Access read/write
LV Status available
# open 0
LV Size 10,00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:7
~# mkfs.ext3 /dev/smith/asmith
....
~# mkdir -p /vserver/asmith
~# mount -text3 /dev/smith/asmith /vserver/asmith
~# df
Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf
...
/dev/mapper/smith-asmith 10321208 154236 9642684 2% /vserver/asmith
~# echo "/dev/mapper/smith-asmith /vserver/asmith ext3 defaults 0 2" >> /etc/fstab
~# newvserver --hostname asmith --domain uweperl.de --ip 10.31.6.4/24 --vsroot /vserver
....
Asking all remaining processes to terminate...done.
Killing all remaining processes...done.
You should now adjust the configuration in /etc/vservers/asmith/
to suit your needs,
or else just go ahead and type `vserver asmith start' to start
your new virtual server. debian/rules!
~# vserver asmith start
Starting system log daemon: syslogd.
Not starting internet superserver: no services enabled.
Starting periodic command scheduler: crond.
~# vserver-stat
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME
40001 2 3.7M 1.3M 0m00s68 0m00s88 5m32s80 asmith
~# vserver asmith enter
asmith:/# ip a
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:10:22:fd:37:b3 brd ff:ff:ff:ff:ff:ff
inet 10.31.6.4/24 brd 10.31.6.255 scope global secondary eth0
asmith:/# logout
~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:10:22:fd:37:b3 brd ff:ff:ff:ff:ff:ff
inet 10.31.6.130/24 brd 10.31.6.255 scope global eth0
inet 10.31.6.4/24 brd 10.31.6.255 scope global secondary eth0
inet6 2001:6f8:104c:3105:210:22ff:fefd:37b3/64 scope global dynamic
valid_lft 2591800sec preferred_lft 604600sec
inet6 fe80::210:22ff:fefd:37b3/64 scope link
valid_lft forever preferred_lft forever

Um diesen virtuellen Server beim Starten des Wirtes mitstarten zu lassen:
~# echo default > /etc/vservers/asmith/apps/init/mark

Jetzt versuchen wir mal noch das Problem mit den angebundenen IP-Adressen zu lösen.
Den ssh-Server und die anderen Dienste auf dem Wirt binden wir einfach fest an die IP-Adressen des Wirtes:
~# lsof -i | grep LISTEN
portmap 1788 daemon 4u IPv4 6379 TCP *:sunrpc (LISTEN)
rpc.statd 1792 statd 8u IPv4 6418 TCP *:36193 (LISTEN)
sshd 2073 root 3u IPv4 7187 TCP *:ssh (LISTEN)
inetd 2258 root 4u IPv4 7408 TCP *:auth (LISTEN)
master 2316 root 11u IPv4 7521 TCP *:smtp (LISTEN)
rsync 2326 root 4u IPv6 7649 TCP *:rsync (LISTEN)
rsync 2326 root 5u IPv4 7650 TCP *:rsync (LISTEN)

  • ssh:


~# vi /etc/ssh/sshd_config


...
#ListenAddress 0.0.0.0
ListenAddress 10.31.6.130
ListenAddress 127.0.0.1
ListenAddress 2001:6f8:104c:3105:210:22ff:fefd:37b3
...

~# /etc/init.d/ssh restart
~# netstat -lanp | grep LISTEN | grep ":22 "
tcp 0 0 10.31.6.130:22 0.0.0.0:* LISTEN 2833/sshd
tcp 0 0 127.0.0.1:22 0.0.0.0:* LISTEN 2833/sshd
tcp6 0 0 2001:6f8:104c:3105:2:22 :::* LISTEN 2833/sshd
~# vserver asmith start
~# ssh root@asmith
root@asmith's password:
asmith:~# netstat -lanp | grep LISTEN | grep ":22 "
tcp 0 0 10.31.6.4:22 0.0.0.0:* LISTEN 3084/sshd

  • Postfix:

~# vi /etc/postfix/main.cf

...
inet_interfaces = 10.31.6.130, 127.0.0.1, 2001:6f8:104c:3105:210:22ff:fefd:37b3
inet_protocols = ipv4, ipv6
smtp_bind_address = 10.31.6.130
smtp_bind_address6 = 2001:6f8:104c:3105:210:22ff:fefd:37b3

~# /etc/init.d/postfix restart
~# postconf | grep "bind\|inet"
inet_interfaces = 10.31.6.130, 127.0.0.1, 2001:6f8:104c:3105:210:22ff:fefd:37b3
inet_protocols = ipv4, ipv6
lmtp_bind_address =
lmtp_bind_address6 =
local_header_rewrite_clients = permit_inet_interfaces
smtp_bind_address = 10.31.6.130
smtp_bind_address6 = 2001:6f8:104c:3105:210:22ff:fefd:37b3

  • Ident:


~# vi /etc/xinetd.d/ident

...
bind = 10.31.6.130

  • rsync:

~# vi /etc/default/rsync

...
RSYNC_OPTS='--address=10.31.6.130'

  • Portmap:
  • Hier ist das Problem nicht so einfach lösbar. Der Portmap sollte auf jeden Fall auch das local-Device abdecken. Weil ich also unbedingt die IP-Adresse bedienen will, habe ich im Startscript auch noch ein zusätzliches „/sbin/portmap -l“ zu stehen.

~# vi /etc/default/portmap

...
#OPTIONS="-l"
OPTIONS="-i 10.31.6.130"

Und schon klappt es wieder mit dem Nachbarn. Allerdings bleiben immer noch ein paar Dienste übrig, die im Wirt auf ‚*‘ lauschen. Allerdings ist es bei einigen Diensten auch egal, wichtig ist es nur bei den Diensten, die auf dem Gast von außen erreichbar sein sollen, so wie eben ssh oder auch der Apache, wenn im Gast ein Webserver laufen soll.

Fazit:
Eigentlich wollte in den Virtuellen Servern ja, wie gesagt, eine Firewall laufen lassen. Wenn man das Problem mit den IP-Adressen unter dem Gesichtspunkt Firewall betrachtet, könnten man denken, dass es besser ist eine andere Virtualisierungslösung zu verwenden. Also werde ich wohl doch noch mal mit VMWare versuchen. Aber vorher muss ich noch etwas RAM kaufen.