Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
navody:vps:kvm [2016/12/03 10:09] – [KVM na Debian 8: - drobné doplnění textu rene.la | navody:vps:kvm [2023/07/31 14:50] – Aktualizace pro vpsAdminOS, odstraneny stare-nekompatibilni distribuce Aither | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== Používání KVM a na vpsFree.cz | + | < |
+ | ====== Používání KVM na vpsFree.cz | ||
+ | VPS jsou [[informace: | ||
+ | mezi všemi VPS. Pokud z nějakého důvodu potřebuješ vlastní kernel, nebo chceš provozovat jiný operační | ||
+ | systém, můžeš si ve VPS spouštět vlastní plnohodnotné virtuály pomocí QEMU/KVM. | ||
- | Tato info stránka obsahuje návody pro zprovoznění KVM na Alpine Linux 3.4+, CentOS 7 a Debian 8. | + | ===== Konfigurace ===== |
+ | Nejprve je potřeba ve vpsAdminu v detailu VPS zapnout následující vlastnosti: | ||
- | Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, zapnout následující vlastnosti: | + | |
- | + | ||
- | | + | |
- | * iptables – povolí použití iptables, které jsou potřeba pro nastavení IP maškarády, | + | |
* KVM – povolí použití KVM (pro HW podporu virtualizace). | * KVM – povolí použití KVM (pro HW podporu virtualizace). | ||
- | Na vpsFree není jiná možnost než mít disky pro KVM virtuály v souborech (images). Doporučujeme k tomu vytvořit nový (sub)dataset, | + | Na vpsFree není jiná možnost než mít disky pro KVM virtuály v souborech (images). Doporučujeme k tomu vytvořit nový (sub)dataset, |
+ | ===== libvirt ===== | ||
+ | Virtuály můžeš spravovat pomocí [[https:// | ||
+ | a připojit se k němu přes [[https:// | ||
===== KVM na Alpine Linuxu | ===== KVM na Alpine Linuxu | ||
+ | |||
+ | Připravu hypervizoru lze provést automatizovaně pomocí [[http:// | ||
+ | |||
+ | [[https:// | ||
+ | * [[navody: | ||
+ | * [[navody: | ||
+ | |||
+ | ==== Instalace balíčků a konfigurace hypervizoru ==== | ||
Nainstalujte potřebné balíčky (ip6tables je volitelný): | Nainstalujte potřebné balíčky (ip6tables je volitelný): | ||
Řádek 19: | Řádek 32: | ||
apk update | apk update | ||
apk add qemu-system-x86_64 qemu-openrc qemu-img bridge iptables ip6tables | apk add qemu-system-x86_64 qemu-openrc qemu-img bridge iptables ip6tables | ||
+ | </ | ||
+ | |||
+ | Nastavte potřebná práva pro přístup ke KVM a TUN (do skupin //kvm// a //netdev// by měl patřit uživatel //qemu//, pod kterým bude běžet vytvořený virtuál): | ||
+ | |||
+ | <code shell> | ||
+ | chown :kvm /dev/kvm | ||
+ | chmod g+rw /dev/kvm | ||
+ | chown :netdev / | ||
+ | chmod g+rw / | ||
</ | </ | ||
Řádek 63: | Řádek 85: | ||
<code shell> | <code shell> | ||
mkdir -p / | mkdir -p / | ||
- | qemu-img create -f raw / | + | qemu-img create -f raw / |
- | chown qemu:qemu / | + | chown qemu:qemu / |
- | chmod 0600 / | + | chmod 0600 / |
</ | </ | ||
Řádek 72: | Řádek 94: | ||
<code shell> | <code shell> | ||
cd /etc/conf.d | cd /etc/conf.d | ||
- | cp qemu qemu.jarvis | + | cp qemu qemu.myvirt |
- | vi qemu.jarvis | + | vi qemu.myvirt |
</ | </ | ||
Řádek 98: | Řádek 120: | ||
</ | </ | ||
+ | <note important> | ||
+ | Pokud máte problémy s tím, že při větším provozu na síťové kartě spadne ve virtuálu sít, zkuste použít driver e1000 místo výchozího virtio-net-pci: | ||
+ | |||
+ | <code shell> | ||
+ | |||
+ | stabilitu je možno otestovat iperf-em, na testovanem stroji: | ||
+ | |||
+ | <code shell> | ||
+ | |||
+ | na hostiteli pak: | ||
+ | <code shell> | ||
+ | iperf -c 172.17.1.X -P 20 | ||
+ | </ | ||
+ | </ | ||
==== Nastavení iptables ==== | ==== Nastavení iptables ==== | ||
Řádek 107: | Řádek 143: | ||
<code shell> | <code shell> | ||
rmdir / | rmdir / | ||
- | wget -O / | + | wget -O / |
</ | </ | ||
Řádek 141: | Řádek 177: | ||
</ | </ | ||
- | |||
- | ===== KVM na CentOS 7 ===== | ||
- | |||
- | <note warning> | ||
- | Tento návod platí pouze pro CentOS 7.1. Na CentOS 7.2 aktuálně nefunguje interní síť mezi VPS a VM. Použijte buď CentOS 7.1 nebo Debian 8, než bude tento problém vyřešen. | ||
- | </ | ||
- | |||
- | KVM používám prostřednictvím libvirt na aktualizovaném CentOS 7. | ||
- | |||
- | Doporučuju CentOS 7 plně aktualizovat, | ||
- | |||
- | <code shell> | ||
- | yum group install virtualization-host-environment | ||
- | yum install virt-manager xauth | ||
- | systemctl enable libvirtd | ||
- | systemctl disable firewalld | ||
- | reboot | ||
- | </ | ||
- | |||
- | ==== Vytvoření virtuálu pomocí virt-manager na straně serveru ==== | ||
- | |||
- | Motivace: Když pracujete na pomalém připojení (což O2 ADSL na vsi bezpochyby je), potřebujete minimalizovat datové toky přes váš pracovní počítač. Lokální virt-manager by stahoval minimálně kernel a initramdisk po relativně pomalém downloadu a typicky po ukrutně pomalém uploadu nahrával na hostitelský kontejner. | ||
- | |||
- | <code shell> | ||
- | ssh root@your-host-name -Y virt-manager | ||
- | </ | ||
- | |||
- | Na vzdáleně spuštěné instanci lze zahájit instalaci, ale nefunguje mi zobrazení instalátoru pomocí výchozího spice. Protože mi přijde krajně nepraktické přepínat libvirt na VNC, takže doporučuju pro instalaci a další používání spustit virt-manager lokálně a přidat cestu k serveru. | ||
- | |||
- | |||
- | ===== KVM na Debian 8 ===== | ||
- | |||
- | Tento návod je prováděn na Debianu 8. Měl by být plně funkční také na CentOS (s jinými příkazy viz. výše). Pokoušel jsem se KVM rozchodit i na Ubuntu 14.04, ale tam bohužel marně. | ||
- | |||
- | Pokud používáte Windows, je potřeba nainstalovat a zapnout XMing (pokud budete chtít minimálně virtuál nainstalovat a nastavit skrz grafické rozhraní jako já). Poté zapneme putty (nezapomeňte si zapnout XMing a zaškrtnout „Enable X11 forwarding“) a můžeme kouzlit. Stačí také přes "apt install xrdp" na server nainstalovat podporu remote desktop a od té doby už se z Windows připojovat nativním klientem Remote desktop (mstsc). | ||
- | |||
- | Začneme klasikou: | ||
- | |||
- | <code shell> | ||
- | apt-get update | ||
- | apt-get upgrade | ||
- | </ | ||
- | |||
- | Poté nainstalujeme libvirt knihovnu: | ||
- | <code shell> | ||
- | apt-get install qemu-kvm libvirt-bin | ||
- | apt-get install virt-manager | ||
- | </ | ||
- | Celkově mají tyto dva balíčky asi 320 MB. Dále je potřeba si někam na disk stáhnout image distribuce, kterou chcete do virtuálu nainstalovat. Já jsem instaloval Ubuntu server 14.04. Vyberte si adresář, do kterého chcete image stáhnout, a pomocí '' | ||
- | <code shell> | ||
- | cd /home | ||
- | wget http:// | ||
- | </ | ||
- | Zapněte virt-managera. | ||
- | <code shell> | ||
- | virt-manager | ||
- | </ | ||
- | Díky XMingu můžete teď na dálku z Windows nastavit a spustit instalaci virtuálního serveru uvnitř své VPS. Upozorňuji, | ||
- | < | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | </ | ||
- | |||
- | Pokud nechcete pokaždé zadávat přepínač -c pro příkazy virsh a používáte pouze lokální hypervisor, je potřeba v tomto souboru / | ||
- | <code shell> | ||
- | uri_default = " | ||
- | </ | ||
- | |||
- | Poté příkazy virsh dále používáme již bez přepínače -c nedy následně: | ||
- | <code shell> | ||
- | virsh net-start default | ||
- | virsh net-autostart default | ||
- | virsh net-list --all | ||
- | virsh list | ||
- | </ | ||
- | |||
- | ==== Konfigurace sítě KVM na Debian 8 ==== | ||
- | === * Routování veřejné IPv4 do KVM virtuálu === | ||
- | |||
- | Máme veřejnou IPv4 adresu a tu přidělíme KVM virtuálu a síťový provoz plně směrujeme pro danou veřejnou IPv4 adresu z VPS přes privátní / lokální IPv4 na danou veřejnou IPv4 adresu KVM virtuálu. Kromě portu 1022, aby byla VPS přes SSH na IPv4 i nadále dostupná. KVM virtuál má plnou konektivitu z / do internetu přes IPv4 (kromě portu 1022 na IPv4). | ||
- | |||
- | VPS má pouze privátní / lokální IPv4 a je z pohledu internetu za NATem v rámci sítě vpsfree.cz a není z internetu dostupná, kromě výše zmíněného portu 1022 pro přístup na SSH dané VPS. Pokud má VPS privátní IPv4 (rozsah v rámci sítě vpsfree.cz), | ||
- | |||
- | Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, ke vlastnostem Bridge, iptables a KVM také zapnout vlastnost: | ||
- | |||
- | * TUN/TAP - povolí možnost vytvoření virtuálního síťového rozhraní TUN/TAP. | ||
- | |||
- | Dále nakonfigurujte bridge br0 pro KVM virtuál na straně VPS. Jelikož OpenVZ přepisuje soubor / | ||
- | Vytvořte tedy soubor / | ||
- | <code shell> | ||
- | auto br0 | ||
- | iface br0 inet static | ||
- | address 172.16.20.12 | ||
- | netmask 255.255.255.255 | ||
- | mtu 1280 | ||
- | bridge_ports venet0:0 | ||
- | bridge_stp on | ||
- | bridge_fd 0.0 | ||
- | dad-attempts 0 | ||
- | accept_ra 0 | ||
- | </ | ||
- | |||
- | Vzhledem k tomu že OpenVZ již po této úpravě nevloží konfiguraci pro veřejnou IPv4 adresu, vložíme ještě na konec souboru dočasně konfiguraci pro veřejnou IPv4 adresu (tu budeme v průběhu návodu mazat, takže na to pamatovat): | ||
- | <code shell> | ||
- | < | ||
- | iface venet0:0 inet static | ||
- | address 185.8.164.43 | ||
- | netmask 255.255.255.255</ | ||
- | </ | ||
- | |||
- | Soubor / | ||
- | |||
- | Pomocí virt-manager vytvoříme KVM virtuál a nakonfigurujeme síťové rozhraní směřující na bridge br0 (důležité vybrat bridge br0) dané VPS, s těmito parametry (privátní IPv4 adresu KVM virtuálu zvolíte z aktuální konfigurace ve vpsAdminu, lokální IPv4 adresu KVM virtuálu si samozřejmě můžete zvolit libovolnou z lokálního rozsahu. Já jsem použil privátní IPv4 adresu pro KVM virtuál v rámci sítě vpsfree.cz, kde brána je IPv4 pro VPS tedy OpenVZ kontejner): | ||
- | <code shell> | ||
- | IP adresa: 172.16.20.13 | ||
- | Maska sítě: | ||
- | Brána: | ||
- | DNS servery: | ||
- | </ | ||
- | |||
- | A k danému rozhraní ještě přidáme veřejnou IPv4 adresu: | ||
- | <code shell> | ||
- | IP adresa: | ||
- | Maska sítě: | ||
- | </ | ||
- | |||
- | Vrátíme se ke konfiguraci souboru / | ||
- | < | ||
- | auto venet0:0 | ||
- | iface venet0:0 inet static | ||
- | address 185.8.164.43 | ||
- | netmask 255.255.255.255 | ||
- | </ | ||
- | |||
- | Místo toho do souboru / | ||
- | <code shell> | ||
- | up ip route add 172.16.20.0/ | ||
- | down ip route del 172.16.20.0/ | ||
- | </ | ||
- | |||
- | Přidáme routování pro privátní / lokální IPv4 adresu KVM virtuálu na daný bridge tedy br0 a routování pro veřejnou IPv4 adresu KVM virtuálu na daný bridge br0. Do souboru / | ||
- | <code shell> | ||
- | up ip route add 172.16.20.13 dev br0 | ||
- | down ip route del 172.16.20.13 dev br0 | ||
- | up ip route add 185.8.164.43 dev br0 | ||
- | down ip route del 185.8.164.43 dev br0 | ||
- | </ | ||
- | |||
- | Povolíme předávání datagramů z jednoho síťového rozhraní na druhé (ip_forward/ | ||
- | <code shell> | ||
- | post-up echo 1 > / | ||
- | post-up echo 1 > / | ||
- | dns-nameservers | ||
- | </ | ||
- | |||
- | Nastavíme směrování portu 1022 pro SSH VPS (nezapomeňte nastavit také port 1022 u samotné služby SSH na VPS), abychom neztratili přístup k SSH u VPS, vhledem k tomu že síťový provoz bude zcela směrován jen na veřejnou IPv4 adresu KVM virtuálu. Do souboru / | ||
- | <code shell> | ||
- | up iptables -t nat -A PREROUTING -p tcp --dport 1022 -d 185.8.164.43 -j DNAT --to 172.16.20.12 | ||
- | up iptables -t nat -A POSTROUTING -p tcp --sport 1022 -d 172.16.20.12 -j SNAT --to 185.8.164.43 | ||
- | down iptables -t nat -D PREROUTING -p tcp --dport 1022 -d 185.8.164.43 -j DNAT --to 172.16.20.12 | ||
- | down iptables -t nat -D POSTROUTING -p tcp --sport 1022 -d 172.16.20.12 -j SNAT --to 185.8.164.43 | ||
- | </ | ||
- | |||
- | Soubor / | ||
- | |||
- | === * Routování veřejné IPv6 do KVM virtuálu === | ||
- | |||
- | Máme veřejnou IPv6 adresu a tu přidělíme KVM virtuálu a síťový provoz pro danou IPv6 adresu přímo směrujeme z VPS na danou veřejnou IPv6 adresu KVM virtuálu. KVM virtuál má plnou konektivitu z / do internetu přes IPv6. | ||
- | |||
- | VPS má vlastní veřejnou IPv6 a má plnou konektivitu z / do internetu přes IPv6. | ||
- | |||
- | <code shell> | ||
- | …… daný návod teprve bude zveřejněn. | ||
- | </ | ||
- | |||
- | === * Lokální IPv4 adresa KVM virtuálu za NATem, veřejná IPv4 u VPS === | ||
- | |||
- | Máme lokální IPv4 adresu (rozsah v rámci sítě VPS <=> KVM virtuál) za NATem dané VPS a na tuto lokální IPv4 adresu směrujeme jednotlivé porty pro jednotlivé dané služby běžící na KVM virtuálu. KVM virtuál má plnou konektivitu pouze do internetu přes IPv4, směrem z internetu jsou dostupné pouze předem dané porty služeb běžících na KVM virtuálu a to přes veřejnou IPv4 adresu VPS. | ||
- | |||
- | VPS má vlastní veřejnou IPv4 a má plnou konektivitu z / do internetu přes IPv4 (kromě portů směrovaných na KVM virtuál). | ||
- | |||
- | <code shell> | ||
- | …… daný návod teprve bude zveřejněn. | ||
- | </ | ||
===== Kontakty ===== | ===== Kontakty ===== | ||
- | * [[: | + | < |
- | * [[: | + | jirutka (Alpine Linux) |
+ | </ |