Der folgende Artikel wird die Einrichtung einer KVM Virtualiserungsumgebung mit Bridged Networking, LVM und SELinux unter CentOS6 erklären.
Das ganze müsste so weitestgehend auch unter CentOS7 funktionieren. Wurde aber nicht getestet.
Zunächst installieren wir ein CentOS System auf einem gegeigneten Host. Wichtig ist, das dieser Hardwarevirtualiserung unterstützt. Ob euer System dies unterstütz könnt ihr unter Linux mit diesem Befehl herrausfinden.
grep flags /proc/cpuinfo
Wenn euer Host Hardwarevirtualisierung unterstütz, findet ihr in der Ausgegebenen Liste bei Intel CPUs das Flag “vmx” und bei AMD CPUs den Wert “svm”. Falls nicht, schaut noch einmal nach ob Hardwarevirtualisierung in eurem BIOS aktiviert ist.
Auch sollte der Host mind. 1GB Ram haben. Es geht auch mit weniger, macht dann aber irgendwann keinen Spaß mehr.
Beim Installieren von CentOS darauf achten das bei der Partitionierung ausreichend Platz für eine Volumegroup für die VMs frei zu halten. Es ist jedoch natürlich auch möglich die Volumegroup auf eigene Platten zu Packen.
Nun solltet ihr ein laufendes CentOS System mit > 1GB RAM und einer LVM Volumegroup mit genug Speicherplatz für die VMs haben.
Nun installieren wir mit diesem Befehl die Nötigen Pakete:
yum install kvm libvirt qemu-kvm
Um Bridged Networking zu Ermöglichen richten wir nun mindestens eine Bridge ein.
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" NM_CONTROLLED="no" BRIDGE=br0 ONBOOT="yes"
/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0" BOOTPROTO="static" DELAY=0 DNS1="xxx.xxx.xxx.xxx" GATEWAY="xxx.xxx.xxx.xxx" IPADDR="xxx.xxx.xxx.xxx" IPV6INIT="no" NETMASK="255.255.255.0" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Bridge"
Falls wir eine Art DMZ einrichten wollen, legen wir eine weitere Bridge ohne IP an. Diese vierbindet später nur die Netzwerkkarten der VMs wie ein “switch”.
/etc/sysconfig/network-scripts/ifcfg-dmz0
DEVICE="br0" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Bridge"
Zum übernehmen der Änderungen noch schnell diesen Befehl in die Konsole geschmissen:
/etc/init.d/network restart
Immer unter root zu arbeiten ist nicht nur faul sondern auch ein sicherheitsrisiko drum ändern wir das schnell
useradd libvirt
Dieser User benötigt auf einige Befehle Root rechte. Dies lösen wir am einfachsten per Eintrag im sudoers File.
%libvirt ALL = NOPASSWD: /usr/sbin/virt-install, /sbin/lvcreate, /sbin/lvdisplay
Wer jetzt versucht z.B. virsh-list auf zu rufen, wird immer eine leere Liste zu gesicht bekommen. Damit sich das ändert stellen wir noch PolicyKit ein.
/etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[libvirt Management Access] Identity=unix-group:libvirt Action=org.libvirt.unix.manage ResultAny=yes ResultInactive=yes ResultActive=yes
Jetzt noch einmal libvitd neustarten.
/etc/init.d/libvirtd restart
Fertig. Ihr solltet jetzt ein Laufendes CentOS System mit aktivem SELinux, aktivem IPTables, einer oder mehreren Bridges sowie einer oder mehrerer LVM-Volumegroup für die Virtuellen Maschienen haben.