
Tag: Bash, Virtualizzazione, Virtualization, kvm.Visto 2298 volte.
Virtualizzando con Qemu e Kvm può risultare difficoltoso creare delle nuove
macchine virtuali con le schede di rete bridgiate (bridged) alla rete lan/dmz principale.
Seguendo i passaggi qui sotto creeremo una macchina virtuale che sarà visibile da tutta la rete come se fosse una macchina fisica.
La guida è testata per Fedora/CentOS, funziona facilmente anche per Ubuntu/Debian con piccoli cambiamenti.
In particolare lo script kvent (il principale) non dovrebbe richiedere cambiamenti.
Preparazione dell'ambiente
Da questo punto in poi si assume di avere i privilegi di root per tutti i comandi eseguiti.
Code:
o
sudo -s
yum groupinstall virtualization
yum install tunctl
Installato tutto il necessario possiamo procedere:
Code:
Lo script qui sotto crea un bridge (br0) ed aggiunge un scheda di rete virtuale.
Configuriamo anche la variabile PR_ETH inserendo la nostra scheda di rete che già utilizziamo per navigare e sulla quale vogliamo creare il bridge.
Inoltre per potere accedere verso internet configuriamo il gateway e opzionalmente dns diversi: rispettivamente le variabili GW e DNS
Code:
NUM_OF_DEVICES="1"
KVMNET_GID=$(grep kvm /etc/group | cut -d ':' -f 3)
BR_NAME="br0"
BR_IP="192.168.1.110"
BR_NETMASK="255.255.255.0"
IF_NAME="kvmnet"
PR_ETH="eth0"
GW="192.168.1.1"
DNS="$GW"
case $1 in
start)
modprobe tun
brctl addbr "$BR_NAME"
ifconfig "$BR_NAME" "$BR_IP" netmask "$BR_NETMASK" up
/sbin/route add default gw "$GW"
#echo "nameserver $DNS" >> /etc/resolv.conf
for ((i=0; i < $NUM_OF_DEVICES ; i++)); do
echo "configuring "$IF_NAME"$i"
tunctl -b -g ${KVMNET_GID} -t "$IF_NAME"$i
brctl addif "$BR_NAME" "$IF_NAME"$i
ifconfig "$IF_NAME"$i up 0.0.0.0 promisc
done
brctl addif "$BR_NAME" "$PR_ETH"
ifconfig "$PR_ETH" up 0.0.0.0 promisc
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
;;
stop)
for ((i=0; i < $NUM_OF_DEVICES ; i++)); do
ifconfig "$IF_NAME"$i down
brctl delif "$BR_NAME" "$IF_NAME"$i
tunctl -d "$IF_NAME"$i
done
brctl delif "$BR_NAME" "$PR_ETH"
ifconfig "$BR_NAME" down
brctl delbr "$BR_NAME"
/etc/init.d/iptables stop
#ifup "$PR_ETH"
;;
*)
echo "Usage: $(basename $0) (start|stop)"
;;
esac
Eseguiamo ora lo script che può essere scaricato da qui
Code:
Verifichiamo con ifconfig e route -n che tutto sia andato a buon fine e proseguiamo con l'installazione della macchina.
Lo script qemu-kvm crea una macchina virtuale attraverso qemu e kvm
Prima di lanciare lo script creiamo un file da utilizzare come disco: in questo esempio viene creato un file da 10GB con dd
Code:
Configuriamo nelle rispettive variabili RAM, CPU, path del file dell'hard-disc e file iso da utilizzare come cdrom.
Attenzione: la variabile IFNAME deve contenere il nome di un interfaccia creata con lo script precedente.
Code:
RAM="1024"
CPU="1"
DISK="/home/egidio/virtimage/fedora.img"
CDROM="/home/ftp/pub/iso/Fedora-14-i686-Live-Desktop.iso"
IFNAME="kvmnet0"
MACADDR=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)
#echo $MACADDR
qemu-kvm "$DISK"
-net nic,model=rtl8139,macaddr="$MACADDR"
-net tap,ifname="$IFNAME",script=no
-m "$RAM"
-smp "$CPU"
-usb
-cdrom "$CDROM"
--boot order=dc
-localtime
Eseguiamo lo script che può essere scaricato da qui
Code:
Se è attivo un server dhcp, la macchina virtuale sarà già connessa alla rete e raggiungibile attraverso l'ip al pari di qualsiasi altro computer.
Per qualsiasi informazione contattaci.
Tags
API Apache Bash Elastix Firewall Firma digitale Geolocazione Grafica Informatica Internet Java Linux OpenMoko PHP Programmazione Python Reti Ricetta SEO Sicurezza Sistemi Operativi Varie Virtualization Virtualizzazione VoIP kvm
Blog CodiceASbarre.Net di CodiceASbarre.Net sotto licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia License.
Lavoro basato su www.codiceasbarre.net.
Ulteriori permessi in merito questa licenza possono essere richiesti a info@codiceasbarre.net.
Link ad altri blog:
