Připojujeme QEMU do sítě

Michal Nosek 8. 6. 2006

Pokud jste si nainstalovali QEMU a do něj nějaký OS, tak ho určitě budete chtít připojit do sítě. Takže pozorně čtěte, ať o něco nepřijdete.

QEMU umožňuje dva režimy práce v síti, první a jednodušší je napojení do uživatelského stacku TCP/IP. Což, pokud neexistuje soubor /etc/qemu-ifup, o kterém si povíme více později, bude výchozí volba. Pokud soubor existuje a přesto chcete použít tento režim, přidejte do příkazového řádku volbu --user-net. Tento režim provede napojení virtuálního stroje do user stacku IP protokolu, což vám umožní přístup na Internet, ale to je asi tak všechno.

Pokud potřebujete připojit virtuální stroj přímo do sítě, např kvůli připojení do domény windows, je nutno na hostujícím OS použít virtuální síťové rozhraní TAP/TUN. Takže asi nejlepší bude začít příkazem modprobe tun. Dále budete potřebovat bridge-utils, jejichž pomocí spojíme virtuální rozhraní s fyzickým do jednoho, takže virtuální stroj bude jakoby přímo připojen do sítě, což si lze jednoduše představit jako virtuální HUB (ano HUB, ne switch). Pro nastavení bridge jsem připravil jednoduchý skript, ze kterého je snad jasný princip vytvoření a připojení fyzického rozhraní.

#!/bin/bash
#Zde nastavte síťové rozhraní, na které bude připojen virtuální stroj
et=eth0

if=/sbin/ifconfig
br=/sbin/brctl

#Nastavení bridge br0 a připojení fyzického rozhraní
$br addbr br0
$if $et down
$if $et 0.0.0.0 promisc up
$br addif br0 $et

#Pokud používáte v síti DHCP server odkomentujte následující dva řádky
#$if br0 promisc
#/sbin/dhcpcd br0

#Pokud DHCP server nepoužíváte nastavte správnou IP adresu a odkomentujte
následující řádek
#$if br0 192.168.1.150 promisc up 

Pokud chcete na svém PC používat QEMU často, je vhodné tento skript začlenit do spouštěcích skriptů. Jinak je možno ho spustit vždy jen před použitím emulátoru.

Dalším krokem je vytvoření souboru /etc/qemu-ifup s následujícím obsahem:

#!/bin/bash
if=/sbin/ifconfig
br=/sbin/brctl
$if $1 0.0.0.0 promisc up
$br addif br0 $1 

Pokud existuje tento soubor, použije QEMU při spuštění jako výchozí volbu –net tap, pokud soubor neexistuje bude výchozí volbou --user-net, přesto se mi osvědčilo vždy používat volby --net tap --net nic, které mi zaručily požadovanou funkci.

Tomuto skriptu je po spuštění QEMU, jako parametr ($1), předán název virtuálního rozhraní tun, které je následně nakonfigurováno a přidáno do bridge br0. Tím je zajištěno připojení virtuálního OS do sítě, přes naše fyzické rozhraní. Pokud byste potřebovali, aby byl zpracován jiný skript než výchozí, lze ho zadat parametrem  -n skript.

Jednotlivá tun rozhraní hostujícího OS připojená v bridge nemusí, ale mohou mít přidělenu IP adresu. Pokud si chcete ověřit nastavení bridge spusťte příkaz brctl show a budou vám vypsána všechna nakonfigurovaná rozhraní. Ve výpisu ifconfig by mělo být rozhraní br0 s platnou IP adresou.

V hostujícím operačním systému již provedeme nastavení tak, jako bychom ho připojovali přímo do naší sítě. Tudíž použijeme buď DHCP server, nebo pevnou IP adresu. V případě problémů lze opět použít konsoli QEMU, do které se přepneme pomocí CTRL-ALT-2 a na níž zadáme info network, mělo by dojít k vypsání nastavení sítové karty včetně MAC adresy. Pokud nám z nějakého důvodu nevyhovuje náhodně vytvořená MAC, lze ji zadat za parametr  -macaddr.

Pár rad na závěr

Pokud by bylo potřeba spouštět emulovaný stroj na pozadí, nejlépe po spuštění hostujícího OS, lze toho dosáhnout zadáním -nographic -monitor /dev/null -serial /dev/null. Tímto přesměrujeme jak konzoli monitoru, tak i sériovou konzoli do /dev/null a QEMU spustíme bez grafického rozhraní. Pro svou potřebu jsem si vytvořil spouštěcí skriptík, do kterého jsem zadal veškeré nutné parametry:

#!/bin/bash
qemu -hda /var/lib/qemu/winxp.iso -boot c -m 256 -net nic -net tap -nographic
-monitor /dev/null -serial /dev/null 

Tímto se mi spustí WinXP, na které se mohu připojit vzdálenou plochou po síti. Zkoušel jsem takto i Win 2003 SBS jako terminálový server, ale rychlost byla velmi mizerná.

Ohodnoťte jako ve škole:

Průměrná známka 3,02

Našli jste v článku chybu?
Zasílat nově přidané příspěvky e-mailem
Root.cz: Netflix nemá vlastní servery, běží z Amazonu

Netflix nemá vlastní servery, běží z Amazonu

Vitalia.cz: Černá ředkev: silné přírodní antibiotikum

Černá ředkev: silné přírodní antibiotikum

Lupa.cz: Google navádí, jak krást fotky, stěžuje si ČTK

Google navádí, jak krást fotky, stěžuje si ČTK

Lupa.cz: Tip: tucet užitečných shieldů pro Arduino

Tip: tucet užitečných shieldů pro Arduino

Podnikatel.cz: Daň z příjmů: online formulář

Daň z příjmů: online formulář

120na80.cz: Domácí homeopatická lékárnička

Domácí homeopatická lékárnička

DigiZone.cz: Jaká je O2 TV Air M ve volném prodeji?

Jaká je O2 TV Air M ve volném prodeji?

Měšec.cz: Bydlím v ČR, ale pracuji v zahraničí. Kde daním své příjmy?

Bydlím v ČR, ale pracuji v zahraničí. Kde daním své příjmy?

Vitalia.cz: Fuck you, rakovino

Fuck you, rakovino

Lupa.cz: Wi-Fi o vás ví mnohé. Co umí hotspot v hospodě?

Wi-Fi o vás ví mnohé. Co umí hotspot v hospodě?

Lupa.cz: Stream koupil Červeného trpaslíka a další seriály

Stream koupil Červeného trpaslíka a další seriály

Root.cz: Orange Pi Plus: malý počítač s Wi-Fi a SATA

Orange Pi Plus: malý počítač s Wi-Fi a SATA

Root.cz: Android KitKat je stále nejrozšířenější

Android KitKat je stále nejrozšířenější

Root.cz: Tails: superbezpečný systém nejen pro Snowdena

Tails: superbezpečný systém nejen pro Snowdena

Lupa.cz: Jak hackovat banky? Útočníci mají nový trik

Jak hackovat banky? Útočníci mají nový trik

Měšec.cz: Velký jističový podfuk

Velký jističový podfuk

Vitalia.cz: Nafotila svůj boj s rakovinou

Nafotila svůj boj s rakovinou

Vitalia.cz: Kouzlo generik: Jak se liší Paralen a Paralen Grip?

Kouzlo generik: Jak se liší Paralen a Paralen Grip?

Vitalia.cz: Proč si černý kašel cestu zpátky našel

Proč si černý kašel cestu zpátky našel

Vitalia.cz: Pro otrlé: 42 obrázků, které budou na cigaretách

Pro otrlé: 42 obrázků, které budou na cigaretách

Ušetřete