LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

Ho provato molte interfacce di gestione web e nessuna era abbastanza buona come virt-manager.

Sai, sono uno di quei ragazzi che avevano VMware in cui il 90% del controllo è selezionabile.

Le mie domande:

1) Esiste un'utilità CLI "interattiva" come mc (midnight commander) o qualcosa su come gestire KVM? (ON/OFF VM, aumenta la memoria, riavvia le macchine virtuali, aggiungi hardware virtuale, aggiungi nuovi dischi, ecc.)

2) Potresti consigliarmi un qualche tipo di gestione dell'interfaccia web per KVM su debian squeeze? Hai visto VMware Server 2? C'è il controllo web. So che era lento, ma va bene quando sei da qualche parte senza un terminale. (ad esempio su Android con un browser web) Ne ho provati molti, ma niente di quello che ho provato ha funzionato.

5) Come migliorare la sicurezza di KVM? Qualche interfaccia web potrebbe risolvere questo problema? (es. contabilità, gestione utenti?)

So che c'è google, wiki, c'è una lunga lista di UI per kvm, ma ho bisogno di opinioni, esperienze di esperti o utenti che usano KVM. Spero che questa non sia una domanda stupida. Grazie a tutti per aver risposto alle mie domande.

5 Soluzioni raccolgono moduli web per "KVM - Quale gestione basata sul Web dovresti usare?"

Per il gestore web KVM, puoi provare Proxmox. Le istruzioni per Debian Squeeze sono qui.

Ha strumenti da riga di comando, ma nessun menu di base basato su testo.

Dovresti creare un piccolo ambiente e provarlo. Quindi indicare l'obiettivo e implementarlo.

Non esiste una risposta esatta / tutorial per questo. La reale configurazione di un server/client KVM dipende da quante risorse (cpu/ram/archiviazione) sono disponibili.

Ancora una volta, dipende dal tuo ambiente ed è multilivello / dispositivi, ad esempio. router, firewall, tabelle IP, politica password, politica di accesso, ecc. Non conosco alcuna interfaccia grafica, webbase o meno, in grado di gestirle tutte, incluso KVM. (OK, c'è una nuvola, ma non ho esperienza in merito)

Hai provato kimchi? è l'open source più user-friendly su KVM ed è sponsorizzato da IBM.

Dichiarazione di non responsabilità: non sono affatto affiliato a Kimchi. Adoro la sua cordialità.

Gli esperti usano la CLI. Non una GUI. Questo è vero anche per gli amministratori di Windows esperti.

No, le GUI stanno ancora migliorando, ma gli script di autoscrittura sono più veloci e fanno quello che vuoi.

Migliorare le prestazioni in KVM? Buttalo via.

Questo è solo un suggerimento dell'esperto XEN-PV. Solo le soluzioni LXC (o altri contenitori) o basate su chroot sono più veloci.

La guida all'installazione di KVM potrebbe non essere molto dettagliata, ma almeno fornisce o fornisce idee sul processo di installazione e configurazione.

C'è un nuovo sistema di gestione KVM e AV/IT di livello aziendale chiamato Boxilla, che ha un centro di comando completo e centralizzato che massimizza le prestazioni, la facilità d'uso e la sicurezza.

Fornisce la possibilità di gestire KVM, KVM over IP ad alte prestazioni, endpoint virtualizzati e vari dispositivi AV/IT in un unico centro di comando centralizzato, consentendo agli amministratori di gestire implementazioni KVM e AV/IT multilivello utilizzando un Web potente e un utente comune interfaccia. Puoi trovare informazioni su questo qui: https://www.blackbox.co.uk/gb-gb/page/37929/Solutions-Industries/Technology-Products/KVM-Switching-and-Extension/Centralised-KVM-AV- Manager -Boxilla

Kimchi è un'interfaccia web basata su HTML5 per KVM. Fornisce un'interfaccia semplice e flessibile per creare e gestire macchine virtuali guest. Kimchi è installato e viene eseguito come demone sull'host KVM. Gestisce i guest KVM con l'aiuto di libvirt. L'interfaccia Kimchi supporta tutte le ultime versioni dei browser con la versione -1, supporta anche i browser mobili.

Kimchi può essere installato sull'ultima versione di RHEL, Fedora, openSUSE e Ubuntu. In questa guida, ho usato Ubuntu 14.10 come host KVM.

Prima di configurare kimchi, devi installare i seguenti pacchetti dipendenti.

$ sudo apt-get install gcc make autoconf automake gettext git python-cherrypy3 python-cheetah python-libvirt libvirt-bin python-imaging python-pam python-m2crypto python-jsonschema qemu-kvm-ip-libvirt-tool pyrpython -ldap python-lxml nfs-common open-iscsi lvm2 xsltproc python-parted nginx firewalld python-guestfs libguestfs-tools python-requests websockify novnc spice-html5 wget

Il sistema ti chiederà i seguenti dettagli durante l'installazione dei pacchetti.

1. OK sulla configurazione di Postfix.

2. Selezionare Sito Internet sul tipo generale di configurazione della posta.

3. Digitare il proprio FQDN e quindi selezionare OK.

Una volta installato, scarica l'ultima versione di kimchi da github.

$ wget https://github.com/kimchi-project/kimchi/archive/master.zip

Decomprimi il file scaricato.

$ unzip master.zip $ cd kimchi-master /

Costruisci il kimchi usando il seguente comando.

$ ./autogen.sh --system

$ make $ sudo make install # Opzionale se eseguito dall'albero dei sorgenti

$ sudo kimchid --host = 0.0.0.0

Accedi a kimchi utilizzando il browser web, https: // localhost: 8001. Ti verrà chiesto di accedere, utilizzare le credenziali di sistema che normalmente utilizzi per accedere al sistema.


Una volta effettuato l'accesso, otterrai una pagina come di seguito. Questo mostra l'elenco delle macchine virtuali guest in esecuzione sull'host corrente, sono presenti i pulsanti per eseguire lo spegnimento, il riavvio e la connessione alla console facendo clic su azione.


Per creare una nuova macchina ospite, fai clic sul segno + nell'angolo destro. Se utilizzi questa opzione per creare una macchina, verrà eseguita tramite modelli.


Puoi gestire i modelli visitando il menu dei modelli. Per creare un nuovo modello, fai clic sul segno + nell'angolo destro. Puoi creare un modello usando immagini ISO, puoi posizionare immagini iso su / var / lib / kimchi / isos o usarne una remota.


Puoi gestire lo storage pool andando al menu storage, lì puoi aggiungere un nuovo storage facendo clic sul segno +. Supporta l'aggiunta di storage NFS, iSCSI e SCSI Fiber Channel.


La rete può essere gestita andando nel menu di rete, è possibile creare una nuova rete con reti isolate, NAT e bridge.


Penso che molti si siano imbattuti negli switch KVM convenzionali. L'abbreviazione "KVM" sta per "Keyboard Video Mouse". Un dispositivo KVM consente, avendo un solo set di tastiera + monitor + mouse (KMM), di controllare più computer (unità di sistema). In altre parole, prendiamo N unità di sistema, colleghiamo le loro uscite da K.M.M. nel dispositivo KVM e collegare già un monitor, una tastiera e un mouse reali al dispositivo stesso. Passando da un computer all'altro utilizzando KVM, possiamo vedere cosa sta succedendo sullo schermo del computer selezionato, oltre a controllarlo come se fossimo collegati direttamente ad esso.

Questo è conveniente se abbiamo bisogno di più macchine per lavoro, ma non è necessario accedervi contemporaneamente. Inoltre, lo spazio viene notevolmente risparmiato: i monitor, anche quelli a cristalli liquidi, occupano una quantità abbastanza grande di spazio sul tavolo. E costano molto. E in un mucchio di tastiere e mouse sul tavolo, puoi confonderti rapidamente ...

I lettori avanzati obietteranno - perché tali difficoltà, se i computer sono molto probabilmente collegati alla stessa rete locale ed è possibile utilizzare i programmi di accesso remoto integrati nel sistema operativo (o esterni), ad esempio Servizi terminal o Radmin in Windows, VNC, ssh sotto * sistemi operativi simili a nix. Tutto è corretto, ma cosa fare se è necessario, ad esempio, entrare nel BIOS del computer o il sistema operativo ha smesso di caricarsi perché abbiamo installato qualche driver o programma sbagliato? Oppure abbiamo più sistemi operativi installati sul computer e dovevamo sceglierne uno diverso da quello che si avvia di default? In generale, tutti questi programmi sono davvero buoni, ma fino a certi limiti, purché il sistema operativo del computer sia funzionante e sia necessario accedere al computer solo dopo che questo sistema operativo è stato caricato.

Ad esempio, diamo un'occhiata ad alcuni tipici switch KVM che utilizzano come esempio i dispositivi dell'azienda.

Specifiche del dispositivo

CN-6000 supporta la separazione dei poteri tra gli utenti e consente di creare fino a 64 account amministrativi o utente, di cui fino a 16 account possono funzionare con il dispositivo contemporaneamente. Il dispositivo ha un'interfaccia WEB incorporata per l'amministrazione e le sue ridotte dimensioni consentono di posizionarlo su un tavolo o di montarlo (utilizzando una piastra speciale inclusa nel kit) sul rack laterale del rack (montabile su rack 0U). CN-6000 supporta gli aggiornamenti del firmware tramite connessione Ethernet (da interfaccia web o utility nativa). La risoluzione video massima supportata dal dispositivo è 1600x1200 pixel.

Tabella riassuntiva delle specifiche:

Requisiti hardware (cliente remoto)Pentium III 1Ghz
InterfacceConsole localeTastiera del computer1 × Mini-DIN-6 F (Viola)
video1 × HDB-15 F (blu)
Topo1 × HDB-15 F (verde)
Sistema (KVM)1 × SPHD-15 F (giallo)
Porta LAN1 × RJ-45 (F)
Alimentazione in rete (riservata)1 × DB9 (M)
Interfaccia di alimentazione1
Pulsanti/InterruttoriRipristino KVM1 × frontale semi-nascosto
Indicatorinutrizione1 × arancione
connessione utente remota1 × verde
LAN 10/100 Mbps1 × verde/arancione
Protocolli supportatiEthernet 10baseT e Ethernet veloce 100baseTX. TCP/IP
Risoluzioni videoFino a 1600 × 1200 60Hz
Portafotometallo
Dimensioni (lunghezza × larghezza × altezza)200 × 80 × 25 mm

Passiamo ai test.

Il CD in dotazione contiene quattro utilità:

  • CN6000 Client è un programma client Windows che può essere utilizzato per connettersi a un computer remoto
  • un programma client simile scritto in Java (formato jar)
  • Strumento di amministrazione CN6000 - Gestione configurazione dispositivi (per Windows)
  • server di registro - un programma che può essere configurato per ricevere e memorizzare i file di registro dal CN-6000

Inoltre, nello switch KVM è integrato un server WEB, quindi è possibile accedere al dispositivo tramite un browser WEB. Ma torneremo all'interfaccia web un po 'più tardi, prima considereremo le singole utilità.

Configurazione di CN-6000 tramite Admin Tool.

Il programma è progettato per configurare il dispositivo, impostare password di accesso, sicurezza, ecc.

Quando è stato lanciato, non è stato senza una curiosità:

La prima volta che si eseguono tutte le utilità dal disco in dotazione, è necessario inserire il numero di serie. La documentazione (anche l'ultima versione sul sito web del produttore) dice che il seriale è stampato sul fondo del case CN-6000. E c'è davvero una sorta di numero di serie stampato, solo che è molto più breve di quanto richiedono i programmi. In generale, avendo sofferto un po', inserendo il numero di serie trovato in questo modo e quello, aggiungendo zeri o spazi ad esso e non raggiungendo altro che la finestra "Numero di serie non valido", volevo già finire di testare il dispositivo quel giorno. Tirando fuori il CD dal CD-ROM (l'ho inserito prima di tutto nell'unità CD - ho dovuto installare il software), ho trovato uno strano adesivo sul disco - questo si è rivelato essere l'ambito seriale.

Naturalmente, in teoria, una persona può prestare attenzione a ciò che è scritto o incollato sul CD quando lo inserisce nell'unità. Ma quante persone prestano immediatamente attenzione a questo? :) E, ci si chiede, perché è stato necessario scrivere deliberatamente false informazioni nella documentazione? Ripeto: il sito contiene una versione più recente della documentazione e questo "errore di battitura" non è stato corretto lì. Nota che questa non è l'ultima inesattezza che appare nella documentazione, quindi a volte devi agire secondo il detto "non credere ai tuoi occhi".

L'utilità di amministrazione CN-6000 è utile in quanto consente di trovare un dispositivo in rete, anche se il suo indirizzo IP non appartiene alla sottorete in cui ci troviamo, tutto ciò che serve è che noi (il computer da cui stiamo cercando di accedere al CN-6000) erano sullo stesso segmento LAN dello switch KVM.

Dopo aver inserito nome utente e password, arriviamo al menu di configurazione del dispositivo:

ATEN ha affrontato bene il problema della sicurezza del dispositivo. Quando si entra per la prima volta nella configurazione del dispositivo, veniamo avvisati che sarebbe bello cambiare nome utente e password standard ...

Nel capitolo Rete L'indirizzamento IP del dispositivo è configurato, le porte per l'accesso remoto ai computer controllati da CN-6000 sono impostate. E anche qui puoi specificare l'indirizzo MAC della macchina su cui si trova il programma "Log Server", che memorizza i file di registro (eventi) inviati dallo switch KVM (se non lo imposti, i registri verranno memorizzati sul KVM stesso e puoi vederli dall'interfaccia web). Questa macchina (per il log-server) può essere qualsiasi computer che esegue Windows e che esegue il programma in discussione. L'unico problema è che il computer deve trovarsi sullo stesso segmento di rete (in parole povere, connesso allo stesso switch) del KVM CN-6000 stesso, quindi l'utilità di questa "funzione" è discutibile.

Nel segnalibro Sicurezza sono configurati filtri (per MAC e/o indirizzi IP) di accesso alla schermata remota dei computer amministrati, nonché un filtro per l'amministrazione del CN-6000 stesso.

Nella scheda successiva vengono impostati i nomi utente e le password, nonché i relativi diritti. È interessante notare che è possibile limitare gli accessi per configurare il CN-6000 e utilizzare il client JAVA. La lunghezza minima della password accettata dall'utilità di configurazione è di otto caratteri. È un peccato, ovviamente, che la password non sia controllata per "semplicità", ma anche il controllo della lunghezza della password indica che ATEN presta attenzione alla sicurezza.

L'ultima scheda permette di aggiornare il firmware del dispositivo, abilitare la possibilità di connessione simultanea a un computer remoto per più persone (sebbene mouse e tastiera siano sempre gli stessi, dal punto di vista del computer controllato, quindi si controlla , gli altri si guardano... o interferiscono tra loro trascinando il mouse in direzioni diverse)... La reazione ad un processo di autenticazione errato è immediatamente configurata, così come l'inclusione di varie modalità di "nascondimento" del CN-6000 (nessuna risposta al ping e il divieto di mostrarsi durante la ricerca automatica di dispositivi nella rete locale tramite il client utilità o l'utilità di amministrazione).

C'è un altro elemento nella stessa scheda - Ripristina all'uscita... Suppongo che si tratti di un ripristino delle impostazioni predefinite, ma in questo caso significa riavviare il dispositivo quando si esce dall'utilità di configurazione. In caso contrario (se non viene riavviato), le nuove impostazioni verranno ricordate, ma non verranno applicate (fino al riavvio).

A questo punto, la revisione dell'utility di configurazione può considerarsi completa (un altro aspetto sarà discusso nella sezione sul client Java).

Passiamo all'interfaccia web.

Configurazione tramite interfaccia WEB

Per accedere all'interfaccia web del dispositivo è sufficiente inserire l'indirizzo IP impostato sul CN-6000 in qualsiasi browser.

È interessante notare che il browser trasferisce immediatamente il client alla connessione tramite HTTPS: //, ad es. tutto il lavoro successivo si svolge su una connessione SSL sicura.

Dopo aver inserito login e password, le icone a sinistra e in alto dell'interfaccia web diventano attive (è possibile cliccarci sopra).

Le icone in alto aprono le sezioni relative alla configurazione del CN-6000. Per la maggior parte, tutte le opzioni sono le stesse delle opzioni nell'interfaccia dell'utilità di Windows. Strumento di amministrazione ma ci sono alcune differenze. Ad esempio, in questa finestra (configurazione indirizzi di rete) possiamo solo impostare l'indirizzo IP del dispositivo, ma non possiamo specificare la subnet mask e il gateway. Inoltre, l'impostazione dell'indirizzo IP funziona in qualche modo in modo storto: non sono mai riuscito a modificare l'indirizzo IP del dispositivo dall'interfaccia web (utilizzando l'utilità Strumenti di amministrazione, è cambiato senza problemi).

Ecco cosa puoi vedere nello strumento di amministrazione quando provi a modificare l'indirizzo tramite l'interfaccia web da 10.0.0.9 a 192.168.0.1. Per qualche motivo, la subnet mask è cambiata dallo standard 255.255.255.0 a 10.0.0.9 e il dispositivo (dopo un riavvio) risponde per 5 secondi a 192.168.0.1, quindi inizia a rispondere a 10.0.0.9 (si dimentica completamente di 192.168 .0.1). Potrebbe trattarsi di un bug nell'attuale versione del firmware (1.5.141), ma questa versione, al momento del test, era la più recente che si potesse trovare sul sito Web dell'azienda.

Durante i test non sono stati rilevati più bug relativi all'interfaccia web.

Capitolo Sicurezza ripete una sezione simile nello strumento di amministrazione.

Una situazione simile con la sezione Gestione utenti

... e sezione personalizzazione.

Icona Tronco d'albero, posto sul lato sinistro dell'interfaccia web, permette di visualizzare gli eventi avvenuti durante il funzionamento del dispositivo. In questo caso, lo screenshot riflette i registri apparsi quando il dispositivo è stato testato dal programma Nessus.

Come accennato in precedenza, i log possono essere scaricati su un server di log esterno (ma con alcune restrizioni sulla sua posizione).

Per me personalmente, è più facile pensare a KVM (Kernel-based Virtual Machine) come un tale livello di astrazione rispetto alle tecnologie di virtualizzazione hardware Intel VT-x e AMD-V. Prendiamo una macchina con un processore che supporta una di queste tecnologie, installiamo Linux su questa macchina, installiamo KVM in Linux, di conseguenza abbiamo l'opportunità di creare macchine virtuali. Questo è più o meno il modo in cui funzionano i servizi di cloud hosting, ad esempio Amazon Web Services. Insieme a KVM, a volte viene utilizzato anche Xen, ma una discussione su questa tecnologia esula dallo scopo di questo post. A differenza delle tecnologie di virtualizzazione dei container, ad esempio lo stesso Docker, KVM consente di eseguire qualsiasi OS come sistema guest, ma ha anche b oh Overhead di virtualizzazione più elevato.

Nota: I passaggi descritti di seguito sono stati da me testati su Ubuntu Linux 14.04, ma in teoria saranno in gran parte veri sia per altre versioni di Ubuntu che per altre distribuzioni Linux. Tutto dovrebbe funzionare sia sul desktop che sul server, a cui si accede tramite SSH.

Installazione di KVM

Controlla se Intel VT-x o AMD-V è supportato dal nostro processore:

grep -E "(vmx | svm)" / proc / cpuinfo

Se qualcosa si surriscalda, è supportato e puoi procedere ulteriormente.

Installa KVM:

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Cosa è consuetudine memorizzare dove:

  • /var/lib/libvirt/boot/ - immagini ISO per l'installazione dei sistemi guest;
  • /var/lib/libvirt/images/ - immagini dei dischi rigidi dei sistemi guest;
  • /var/log/libvirt/ - tutti i log devono essere cercati qui;
  • /etc/libvirt/ - directory con i file di configurazione;

Ora che KVM è installato, creiamo la nostra prima macchina virtuale.

Creazione della prima macchina virtuale

Ho scelto FreeBSD come sistema ospite. Download dell'immagine ISO del sistema:

cd/var/lib/libvirt/boot/
sudo wget http: // ftp.freebsd.org/ path / to / some-freebsd-disk.iso

Nella maggior parte dei casi, le macchine virtuali vengono gestite utilizzando l'utility virsh:

sudo virsh --help

Prima di avviare la macchina virtuale, dobbiamo raccogliere alcune informazioni aggiuntive.

Guardiamo l'elenco delle reti disponibili:

sudo virsh net-list

Visualizzazione delle informazioni su una rete specifica (denominata predefinita):

sudo virsh net-info default

Diamo un'occhiata all'elenco delle ottimizzazioni disponibili per il SO guest:

sudo virt-install --os-variant list

Quindi, ora creiamo una macchina virtuale con 1 CPU, 1 GB di RAM e 32 GB di spazio su disco, collegata alla rete predefinita:

sudo virt-install \
--virt-tipo = kvm \
--name freebsd10 \
--ram 1024 \
--vcpus = 1 \
--os-variant = freebsd8 \
--hvm\
--cdrom = /var/lib/libvirt/boot/FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--network network = default, model = virtio \
--graphics vnc \
--disk percorso = / var / lib / libvirt / images / freebsd10.img, dimensione = 32, bus = virtio

Puoi vedere:

ATTENZIONE Impossibile connettersi alla console grafica: virt-viewer not
installato. Installa il pacchetto "virt-viewer".

Installazione del dominio ancora in corso. Puoi riconnetterti alla console
per completare il processo di installazione.

Questo è normale e dovrebbe esserlo.

Quindi esaminiamo le proprietà della macchina virtuale in formato XML:

sudo virsh dumpxml freebsd10

Ecco le informazioni più complete. Ciò include, ad esempio, l'indirizzo MAC, di cui avremo bisogno in seguito. Finora, troviamo informazioni su VNC. Nel mio caso:

Con l'aiuto del tuo client preferito (io personalmente uso Rammina), andiamo su VNC, utilizzando il port forwarding SSH se necessario. Entriamo direttamente nel programma di installazione di FreeBSD. Quindi tutto è come al solito: Avanti, Avanti, Avanti, otteniamo il sistema installato.

Comandi di base

Diamo ora un'occhiata ai comandi di base per lavorare con KVM.

Ottenere un elenco di tutte le macchine virtuali:

sudo virsh list --all

Ottenere informazioni su una macchina virtuale specifica:

sudo virsh dominfo freebsd10

Avvia macchina virtuale:

sudo virsh start freebsd10

Arresta macchina virtuale:

sudo virsh arresto freebsd10

Difficile da inchiodare la macchina virtuale (nonostante il nome, questo non Elimina):

sudo virsh distruggere freebsd10

Riavvia la macchina virtuale:

sudo virsh riavvio freebsd10

Clonare una macchina virtuale:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file /var/lib/libvirt/images/freebsd10-clone.img

Abilita / disabilita l'esecuzione automatica:

sudo virsh avvio automatico freebsd10
sudo virsh autostart --disable freebsd10

Avvio di virsh in modalità di dialogo (tutti i comandi sono in modalità di dialogo - come descritto sopra):

sudo virsh

Modificando le proprietà della macchina virtuale in XML, incluso qui puoi modificare il limite sulla quantità di memoria, ecc.

sudo virsh modifica freebsd10

Importante! Sfortunatamente, i commenti dall'XML modificato vengono rimossi.

Quando la macchina virtuale viene arrestata, il disco può anche essere ridimensionato:

sudo qemu-img resize / var / lib / libvirt / images / freebsd10.img -2G
sudo qemu-img info / var / lib / libvirt / images / freebsd10.img

Importante! Molto probabilmente il tuo sistema operativo guest non apprezzerà il fatto che il disco diventi improvvisamente più grande o più piccolo. Nel migliore dei casi, si avvierà in modalità di emergenza con una proposta per ripartizionare il disco. È probabile che non dovresti volerlo fare. Potrebbe essere molto più semplice avviare una nuova macchina virtuale e migrarvi tutti i dati.

Il backup e il ripristino sono piuttosto semplici. È sufficiente salvare da qualche parte l'output dumpxml, così come l'immagine del disco, e quindi ripristinarli. Su Youtube trovato un video con una dimostrazione di questo processo, tutto è davvero semplice.

Impostazioni di rete

Una domanda interessante è come determinare quale indirizzo IP ha ricevuto la macchina virtuale dopo l'avvio? KVM lo fa in un modo complicato. Ho finito per scrivere uno script come questo in Python:

#! / usr / bin / env python3

# script virt-ip.py
# (c) 2016 Aleksander Alekseev
# http: // sito /

sistema di importazione
importare re
importare il sistema operativo
sottoprocesso di importazione
da xml .etree import ElementTree

def eprint (str):
print (str, file = sys .stderr)

se len (sys .argv)< 2 :
eprint ("UTILIZZO:" + sys .argv [0] + " " )
eprint ("Esempio:" + sys .argv [0] + "freebsd10")
sys .exit (1)

se os .geteuid()! = 0:
eprint ("ERRORE: devi essere root")
eprint ("Suggerimento: esegui` sudo "+ sys .argv [0] +" ... `");
sys .exit (1)

if subprocess .call ( "che arpa 2> & 1> / dev / null", shell = True)! = 0:
eprint ("ERRORE: arping non trovato")
stampa ( "Suggerimento: esegui` sudo apt-get install arping` ")
sys .exit (1)

Dominio = sys .argv [1]

se no ri .match ("^ * $", dominio):
stampa ( "ERRORE: caratteri non validi nel nome di dominio")
sys .exit (1)

Domout = sottoprocesso .check_output ("virsh dumpxml" + dominio + "|| true",
shell = vero)
domout = domout.decode ("utf-8") .strip ()

if domout == "":
# messaggio di errore già stampato da dumpxml
sys .exit (1)

Doc = ElementTree.fromstring (domout)

# 1. elenca tutte le interfacce di rete
# 2.esegui `arping` su ogni interfaccia in parallelo
# 3.grep risposte
cmd = "(ifconfig | cut -d" "-f 1 | grep -E". "|" + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2> & 1 |" + \
byte "grep" da ") || true"

per bambino in doc.iter ():
if child.tag == "mac":
macaddr = child.attrib ["indirizzo"]
macout = sottoprocesso .check_output (cmd .format (macaddr),
shell = vero)
stampa (macout.decode ("utf-8"))

Lo script funziona sia con la rete predefinita che con la rete bridge, la cui configurazione verrà discussa ulteriormente. Tuttavia, in pratica, è molto più conveniente configurare KVM in modo che assegni sempre gli stessi indirizzi IP ai sistemi guest. Per fare ciò, modifica le impostazioni di rete:

sudo virsh net-edit default

... qualcosa come questo:

>



>

Dopo aver apportato queste modifiche


>

... e sostituiscilo con qualcosa del tipo:




>

Riavviamo il sistema guest e controlliamo che abbia ricevuto un IP tramite DHCP dal router. Se vuoi che il guest abbia un indirizzo IP statico, questo è configurato come al solito all'interno del guest stesso.

Programma Virt-manager

Potrebbe interessarti anche il programma virt-manager:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd NOMEUTENTE

Ecco come appare la sua finestra principale:

Come puoi vedere, virt-manager non è solo una GUI per macchine virtuali in esecuzione localmente. Con il suo aiuto, puoi gestire le macchine virtuali in esecuzione su altri host, oltre a guardare bellissimi grafici in tempo reale. Personalmente trovo particolarmente conveniente in virt-manager che non sia necessario cercare nelle configurazioni su quale porta è in esecuzione il VNC di un particolare sistema guest. Basta trovare la macchina virtuale nell'elenco, fare doppio clic e si ottiene l'accesso al monitor.

È anche molto comodo usare virt-manager per fare cose che altrimenti richiederebbero una laboriosa modifica dei file XML e, in alcuni casi, comandi aggiuntivi. Ad esempio, rinominare le macchine virtuali, configurare l'affinità della CPU e simili. A proposito, l'utilizzo dell'affinità della CPU riduce significativamente l'effetto dei vicini rumorosi e l'impatto delle macchine virtuali sul sistema host. Usalo sempre quando possibile.

Se decidi di utilizzare KVM in sostituzione di VirtualBox, tieni presente che non possono condividere la virtualizzazione dell'hardware tra di loro. Affinché KVM funzioni sul tuo desktop, non dovrai solo arrestare tutte le macchine virtuali in VirtualBox e Vagrant, ma anche riavviare il sistema. Personalmente trovo KVM molto più conveniente di VirtualBox, almeno perché non richiede l'esecuzione del comando sudo / sbin / rcvboxdrv setup dopo ogni aggiornamento del kernel, funziona adeguatamente con Unity e generalmente consente di nascondere tutte le finestre.

Sto scrivendo questo post per dimostrare un'installazione e una configurazione passo passo di una macchina virtuale in Linux basata su KVM. In precedenza ho già scritto sulla virtualizzazione, dove ho usato quella meravigliosa.

Ora mi trovo di fronte alla questione di affittare un buon server con una grande quantità di RAM e un grande disco rigido. Ma non voglio eseguire progetti direttamente sulla macchina host, quindi li deliminerò in piccoli server virtuali separati con sistema operativo Linux o contenitori docker (ne parlerò in un altro articolo).

Tutti i moderni servizi di cloud hosting funzionano secondo lo stesso principio, ad es. un hoster su un buon hardware genera una serie di server virtuali, che chiamavamo VPS / VDS, e li distribuisce agli utenti o automatizza questo processo (ciao, DigitalOcean).

KVM (macchina virtuale basata su kernel) è un software Linux che utilizza hardware del processore compatibile con x86 per eseguire la tecnologia di virtualizzazione Intel VT / AMD SVM.

Installazione di KVM

Effettuerò tutte le truffe per creare una macchina virtuale su Ubuntu 16.04.1 LTS. Per verificare se i tuoi processi supportano la virtualizzazione hardware basata su Intel VT / AMD SVM, esegui:

Grep -E "(vmx | svm)" / proc / cpuinfo

Se il terminale non è vuoto, tutto è in ordine e KVM può essere installato. Ubuntu supporta ufficialmente solo l'hypervisor KVM (incluso nel kernel Linux) e consiglia di utilizzare la libreria libvirt come strumento di gestione, cosa che faremo in seguito.

Puoi anche controllare il supporto per la virtualizzazione hardware in Ubuntu tramite il comando:

In caso di successo, vedrai qualcosa del genere:

INFO: / dev / kvm esiste È possibile utilizzare l'accelerazione KVM

Installa i pacchetti per lavorare con KVM:

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Se hai accesso alla shell grafica del sistema, puoi installare il gestore della GUI di libvirt:

Sudo apt-get install virt-manager

L'uso di virt-manager è abbastanza semplice (non più difficile di VirtualBox), quindi questo articolo si concentrerà sulla versione console dell'installazione e della configurazione di un server virtuale.

Installazione e configurazione di un server virtuale

Nella versione console di installazione, configurazione e gestione del sistema, l'utility virsh (add-on alla libreria libvirt) è uno strumento indispensabile. Ha un gran numero di opzioni e parametri, una descrizione dettagliata può essere ottenuta come segue:

uomo virsh

oppure chiama lo standard "help":

Aiuto virtuale

Aderisco sempre alle seguenti regole quando lavoro con i server virtuali:

  1. Memorizzo le immagini iso del sistema operativo nella directory /var/lib/libvirt/boot
  2. Memorizzo le immagini della macchina virtuale nella directory /var/lib/libvirt/images
  3. Assegno esplicitamente a ogni nuova macchina virtuale il proprio indirizzo IP statico tramite il server DHCP dell'hypervisor.

Iniziamo l'installazione della prima macchina virtuale (server a 64 bit Ubuntu 16.04 LTS):

Cd / var / lib / libvirt / boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

Dopo aver scaricato l'immagine, avvia l'installazione:

Sudo virt-install \ --virt-type = kvm \ --name ubuntu1604 \ --ram 1024 \ --vcpus = 1 \ --os-variant = ubuntu16.04 \ --hvm \ --cdrom = / var / lib / libvirt / boot / ubuntu-16.04.1-server-amd64.iso \ --network network = default, model = virtio \ --graphics vnc \ --disk path = /var/lib/libvirt/images/ubuntu1604. img, dimensione = 20, bus = virtù

Traducendo tutti questi parametri in "linguaggio umano", si scopre che stiamo creando una macchina virtuale con sistema operativo Ubuntu 16.04, 1024 MB di RAM, 1 processore, una scheda di rete standard (la macchina virtuale andrà su Internet come se a causa di NAT), disco rigido da 20 GB.

Vale la pena prestare attenzione al parametro --os-variante, indica all'hypervisor per quale sistema operativo devono essere adattate le impostazioni.
È possibile ottenere un elenco delle opzioni del sistema operativo disponibili eseguendo il comando:

Osinfo-query os

Se non è presente tale utilità nel sistema, installare:

Sudo apt-get install libosinfo-bin

Dopo aver avviato l'installazione, nella console apparirà la seguente scritta:

Installazione del dominio ancora in corso. Puoi riconnetterti alla console per completare il processo di installazione.

Questa è una situazione normale, continueremo l'installazione tramite VNC.
Diamo un'occhiata a quale porta è stata sollevata dalla nostra macchina virtuale (nel terminale vicino, ad esempio):

Virsh dumpxml ubuntu1604... ...

Porta 5900, all'indirizzo locale 127.0.0.1. Per connettersi a VNC, è necessario utilizzare il port forwarding su ssh. Prima di fare ciò, assicurati che l'inoltro tcp sia abilitato sul demone ssh. Per fare ciò, vai alle impostazioni sshd:

Gatto / etc / ssh / sshd_config | grep AllowTcpForwarding

Se non è stato trovato nulla o vedi:

AllowTcpForwarding no

Quindi modifichiamo la configurazione su

ConsentiTcpForwarding sì

e riavvia sshd.

Configurazione del port forwarding

Eseguiamo il comando sulla macchina locale:

Ssh -fN -l login -L 127.0.0.1:5900:localhost:5900 server_ip

Qui abbiamo configurato il port forwarding ssh dalla porta locale 5900 alla porta del server 5900. Ora puoi connetterti a VNC usando qualsiasi client VNC. Preferisco UltraVNC per la sua semplicità e praticità.

Dopo una connessione riuscita, lo schermo visualizzerà una schermata di benvenuto standard per l'avvio dell'installazione di Ubuntu:

Al termine dell'installazione e al consueto riavvio, apparirà la finestra di login. Dopo aver effettuato l'accesso, determiniamo l'indirizzo IP della macchina virtuale appena creata per renderla statica in un secondo momento:

Ifconfig

Ricordiamo e andiamo alla macchina host. Tiriamo fuori l'indirizzo mac della scheda "rete" della macchina virtuale:

Virsh dumpxml ubuntu1604 | grep "indirizzo mac"

Ricordiamo il nostro indirizzo mac:

Modifica delle impostazioni di rete dell'hypervisor:

Sudo virsh net-edit predefinito

Stiamo cercando DHCP e aggiungiamo questo:

Dovresti finire con qualcosa del genere:

Affinché le impostazioni abbiano effetto, è necessario riavviare il server DHCP dell'hypervisor:

Sudo virsh net-destroy predefinito sudo virsh net-start predefinito sudo service libvirt-bin restart

Successivamente, riavviamo la macchina virtuale, ora avrà sempre l'indirizzo IP assegnato - 192.168.122.131.

Esistono altri modi per impostare un IP statico sulla macchina virtuale, ad esempio modificando direttamente le impostazioni di rete all'interno del sistema guest, ma qui è come desidera il tuo cuore. Ho appena mostrato l'opzione che io stesso preferisco usare.

Per connettersi al terminale della macchina virtuale, eseguire:

Ssh 192.168.122.131

Il veicolo è pronto per la battaglia.

Virsh: lista dei comandi

Per vedere gli host virtuali in esecuzione (tutti quelli disponibili possono essere ottenuti aggiungendo --all):

Sudo virsh list

Puoi riavviare l'host:

Sudo virsh reboot $ VM_NAME

Arresta macchina virtuale:

Sudo virsh stop $ VM_NAME

Esegui arresto:

Sudo virsh distrugge $ VM_NAME

Sudo virsh start $ VM_NAME

Disconnessione:

Chiusura di Sudo virsh $ VM_NAME

Aggiungi all'avvio automatico:

Sudo virsh avvio automatico $ VM_NAME

Molto spesso è necessario clonare il sistema per poterlo utilizzare in futuro come framework per altri sistemi operativi virtuali, per questo usano l'utility virt-clone.

Virt-clone --help

Clona una macchina virtuale esistente e modifica i dati sensibili all'host, ad esempio l'indirizzo mac. Le password, i file e altre informazioni specifiche dell'utente nel clone rimangono le stesse. Se l'indirizzo IP è stato registrato manualmente sulla macchina virtuale clonata, potrebbero esserci problemi con l'accesso SSH al clone a causa di un conflitto (2 host con lo stesso IP).

Oltre a installare una macchina virtuale tramite VNC, è possibile anche con X11Forwarding tramite l'utility virt-manager. Su Windows, ad esempio, puoi usare Xming e PuTTY per questo.

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam