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

Našli jste v článku chybu?
120na80.cz: Jaké plavecké pomůcky vaše dítě ochrání?

Jaké plavecké pomůcky vaše dítě ochrání?

DigiZone.cz: DAB už i z Košic. A překvapivě!

DAB už i z Košic. A překvapivě!

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

Lupa.cz: Tudy proudí váš hlas i data. V zákulisí CETINu

Tudy proudí váš hlas i data. V zákulisí CETINu

DigiZone.cz: RRTV: Zabiják Joe za tři sta tisíc

RRTV: Zabiják Joe za tři sta tisíc

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

DigiZone.cz: Android TV: s jakým pracuje rozlišením?

Android TV: s jakým pracuje rozlišením?

Vitalia.cz: Klíšťata letos řádí, skvrna se udělá jen někomu

Klíšťata letos řádí, skvrna se udělá jen někomu

DigiZone.cz: Sázka na e-sporty stanici Prima vychází

Sázka na e-sporty stanici Prima vychází

120na80.cz: SOS aneb spálená pokožka

SOS aneb spálená pokožka

DigiZone.cz: Skylink o půlnoci vypnul 12 525

Skylink o půlnoci vypnul 12 525

Root.cz: Bitcoin začal vyplácet jen půlku odměn

Bitcoin začal vyplácet jen půlku odměn

DigiZone.cz: Žhavé novinky u IPTV operátorů

Žhavé novinky u IPTV operátorů

Vitalia.cz: Jak může být v uzenině 150 % masa?

Jak může být v uzenině 150 % masa?

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

Lupa.cz: Seznam.cz sleduje stisky kláves, aby odhalil roboty

Seznam.cz sleduje stisky kláves, aby odhalil roboty

120na80.cz: Tipy pro odvodnění organismu

Tipy pro odvodnění organismu

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí vaše karta

Do ostravské MHD bez jízdenky. Stačí vaše karta

Podnikatel.cz: Tahle praktika stála šmejdy přes milion

Tahle praktika stála šmejdy přes milion