kvm
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| kvm [2020-11-25 15:50:42] – [Beispiel-VM starten] manfred | kvm [2020-11-26 15:41:06] (aktuell) – [Beispiel-VM starten] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== KVM ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Bei Linux-basierten Betriebssystemen, | ||
| + | |||
| + | **//Im Grunde genommen, wird beim Aufruf von '' | ||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Ubuntu 20.04.1 LTS | ||
| + | > apt install qemu-kvm | ||
| + | |||
| + | |||
| + | ===== Beispiel-VM starten ===== | ||
| + | |||
| + | In diesem Beispiel hat die VM eine Festplatte (disk01.qcow2, | ||
| + | |||
| + | auf dem Server einloggen, alle folgenden Kommandos funktionieren nur dann, wenn ein derartiger Login funktioniert: | ||
| + | > ssh -X server | ||
| + | [root@server ~]# | ||
| + | |||
| + | Laufwerke vorbereiten: | ||
| + | [root@server ~]# qemu-img create -f qcow2 disk01.qcow2 10G | ||
| + | Formatting ' | ||
| + | | ||
| + | [root@server ~]# wget http:// | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Netzwerk vorbereiten FIXME //(eine Bridge wird vermutlich nicht benötigt)//: | ||
| + | < | ||
| + | < | ||
| + | [root@server ~]# sysctl -w net.ipv4.ip_forward=1 | ||
| + | [root@server ~]# vi / | ||
| + | |||
| + | VM starten: | ||
| + | [root@server ~]# kvm -hda disk01.qcow2 -cdrom ubuntu-20.04.1-legacy-server-amd64.iso -m 2048 -smp cpus=2, | ||
| + | [root@server ~]# sleep 10 | ||
| + | |||
| + | //Wenn man die Ausgabe nicht per VNC ausgeben will, | ||
| + | dann kann man statt der Option '' | ||
| + | in dem Fall wird die Ausgabe auf eine System-Console umgeleitet. | ||
| + | __Wichtig ist hierbei auch, dass ein VNC-Port niemals mehrfach vergeben werden darf__, | ||
| + | denn dann startet die zweite VM, die den gleichen VNC-Port konfiguriert bekommen hat, nicht.// | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Es müssen noch zwei Routen gesetzt werden, | ||
| + | |||
| + | ...diese auf dem Host-System: | ||
| + | [root@server ~]# ip route add ${IPADR_GAST} dev tap12001 scope link | ||
| + | [root@server ~]# ip route | ||
| + | |||
| + | ...diese auf dem Gast-System (wenn Host- und Gast-System __**nicht im**__ selben Sub-Net sind): | ||
| + | [root@gast ~]# ip route add ${IPADR_HOST} dev eth0 | ||
| + | [root@gast ~]# ip route add default via ${IPADR_HOST} dev eth0 | ||
| + | [root@gast ~]# ip route | ||
| + | |||
| + | ...alte Syntax: < | ||
| + | |||
| + | oder | ||
| + | |||
| + | ...diese auf dem Gast-System (wenn Host- und Gast-System __**im**__ selben Sub-Net sind): | ||
| + | [root@gast ~]# ip route add default via ${IPADR_HOST} dev eth0 | ||
| + | [root@gast ~]# ip route | ||
| + | |||
| + | iptables-NAT-Regeln setzen: | ||
| + | [root@server ~]# iptables -t nat -A PREROUTING -d ${IP_HOST} -j DNAT --to-destination ${IP_RUMPF}${IP_ENDUNG} | ||
| + | [root@server ~]# iptables -t nat -A POSTROUTING -s ${IP_RUMPF}${IP_ENDUNG} -j SNAT --to-source ${IP_HOST} | ||
| + | |||
| + | iptables-NAT-Regeln ausgeben: | ||
| + | [root@server ~]# iptables -L -n -t nat | ||
| + | |||
| + | iptables-NAT-Regeln löschen: | ||
| + | [root@server ~]# iptables -t nat -D PREROUTING -d ${IP_HOST} -j DNAT --to-destination ${IP_RUMPF}${IP_ENDUNG} | ||
| + | [root@server ~]# iptables -t nat -D POSTROUTING -s ${IP_RUMPF}${IP_ENDUNG} -j SNAT --to-source ${IP_HOST} | ||
| + | |||
| + | Um die Ausgabe dann sehen zu können, kann man beispielsweise eines der folgenden beiden Kommandos eingeben: | ||
| + | > vncviewer -AutoSelect=0 -FullColour server: | ||
| + | > gvncviewer server: | ||
| + | |||
| + | [root@server ~]# iptables -L -n -t nat | ||
| + | |||
| + | |||
| + | ==== Zugriff ==== | ||
| + | |||
| + | |||
| + | === SSH === | ||
| + | |||
| + | Wenn das Betriebssystem in der KVM-VM eine IP hat und dort ein SSHD läuft, | ||
| + | dann kann man sich prima per SSH dort einloggen: | ||
| + | # ssh root@[IP des OS in der KVM-VM] | ||
| + | |||
| + | |||
| + | === VNC === | ||
| + | |||
| + | VNC-Client installieren: | ||
| + | # aptitude install xvnc4viewer | ||
| + | |||
| + | Mit dem VNC-Port kann man sich so verbinden (auf den Port muss man immer 5900 drauf rechnen): | ||
| + | # # vncviewer -AutoSelect=0 -FullColour 192.168.1.42: | ||
| + | |||
| + | |||
| + | ==== Netzwerk-Konfiguration ==== | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | # loopback-IF | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | | ||
| + | # 1. NIC | ||
| + | auto eth0 | ||
| + | iface eth0 inet manual | ||
| + | bond-master bond0 | ||
| + | # | ||
| + | | ||
| + | # 2. NIC | ||
| + | auto eth1 | ||
| + | iface eth1 inet manual | ||
| + | bond-master bond0 | ||
| + | # | ||
| + | | ||
| + | # Bonding über beide NICs | ||
| + | auto bond0 | ||
| + | iface bond0 inet manual | ||
| + | slaves none | ||
| + | bond_mode 1 | ||
| + | bond_miimon 100 | ||
| + | bond_updelay 200 | ||
| + | bond_downdelay 200 | ||
| + | pre-up / | ||
| + | post-up /bin/sleep 5 | ||
| + | | ||
| + | # Brücke auf dem Bond-IF | ||
| + | # damit KVM seine VMs daran hängen kann | ||
| + | auto br0 | ||
| + | iface br0 inet static | ||
| + | address 192.168.1.42 | ||
| + | netmask 255.255.255.0 | ||
| + | network 192.168.1.0 | ||
| + | broadcast 192.168.1.255 | ||
| + | bridge_ports bond0 | ||
| + | post-up /bin/sleep 10 | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | #!/bin/sh | ||
| + | | ||
| + | BRUECKE=" | ||
| + | | ||
| + | / | ||
| + | #/ | ||
| + | / | ||
| + | sleep 2 | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | #!/bin/sh | ||
| + | | ||
| + | BRUECKE=" | ||
| + | | ||
| + | / | ||
| + | #/ | ||
| + | / | ||
| + | sleep 2 | ||
| + | |||
