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.

widgety

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á.

Našli jste v článku chybu?
Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

DigiZone.cz: Slovensko: startuje sportovní TV 213

Slovensko: startuje sportovní TV 213

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Podnikatel.cz: ČSSZ posílá přehled o důchodovém kontě

ČSSZ posílá přehled o důchodovém kontě

Podnikatel.cz: Tyto pojmy k #EET byste měli znát

Tyto pojmy k #EET byste měli znát

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB

Lupa.cz: Cimrman má hry na YouTube i vlastní doodle

Cimrman má hry na YouTube i vlastní doodle

120na80.cz: Nejsilnější alergeny jsou pryč

Nejsilnější alergeny jsou pryč

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT