Xen e web server

Ecco la seconda parte della guida.
All’interno del domU è installato il web server è importante fare l’aggiornamento del sistema operativo applicando le patch di sicurezza e, se necessario, scaricare nuove versioni dei programmi.
Con Fedora basta usare il comando da root “yum update” mentre se si utilizza Ubuntu/Debian si può adoperare “apt-get update” e successivamente “apt-get upgrade“.
Dopo ciò è necessario scegliere la migliore configurazione di rete per la macchina virtuale.
Xen crea di default una bridge network fra il domU e il dom0 (http://www.valent-blog.eu/2008/04/19/bridged-networking/), ma è possibile anche fare in modo diverso (http://www.valent-blog.eu/2007/11/01/xen-domini-e-networking/).
Per l’uso di un web server la scelta migliore ricade sulla tipologia bridge (http://lcd.altervista.org/Getting-Xen-up.txt).
La prima cosa da fare è assegnare alla scheda di rete interna alla VM un MAC address univoco. E’ consigliato l’uso di un indirizzo MAC tra 00:16:3e:00:00:00 e 00:16:3e:FF:FF:FF in quanto gli indirizzi di questo intervallo sono stati riservati per l’uso da parte di Xen.
Bisogna fare attenzione se sul dom0 sono attivi delle regole di iptable o ipchains perchè se, si utilizza il bridge, i pacchetti destinati al domU possono essere scartati o filtrati.
In questo caso se si verificano dei problemi è opportuno disabilitare l’inoltro dei pacchetti nel dom0 (echo 0 > /proc/sys/net/ipv4/ip_forward). Naturalmente ciò non permetterà che i pacchetti con richieste di connesione al web server passino per cui non è la scelta giusta da prendere.
Ecco qua un interessante documento sul problema: http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html
Oltre all’indirizzo MAC è necessario indicare nel file di configurazione della macchina virtuale a quale bridge va collegata.
vif = [ ‘mac=00:16:3e:00:01:07, bridge=xen-br0, vifname=fed-eth’ ]
Con la linea indicata il domU viene connesso al bridge xen-br0 e l’interfaccia di rete prende il nome di fed-eth.
L’assegnazione dell’indirizzo IP avverrà in modo dinamico (DHCP). Per fare ciò è necessario che il bridge abbia il suo indirizzo IP.
Modificare lo script dei configurazione della rete (in /etc/xen/scripts/xend-config.sxp oppure si trova nella directory superiore) indicando quale script usare per la creazione e quale interfaccia sarà usata nel dom0 per il traffico in uscita dal computer.
(network-script ‘network-bridge netdev=eth3’)
Con “netdev” si è specificata l’interfaccia di uscita mentre con “network-bridge” il nome dello script di preparazione della rete. Se il nome del bridge è differente di quello preimpostato è opportuno invece attivare la riga (network-script ‘network-bridge bridge=”name”‘) dove “name” è il nome del dispositivo.
In più bisogna decomentare (vif-script vif-bridge).
Per abilitare queste modifiche si deve riavviare il domO con /etc/init.d/xend restart oppure riavviare il computer.
Per fare in modo che la macchina virtuale possa usare il dhcp inserire nel suo file di configurazione dhcp = “dhcp”.
Si può attribuire al bridge un indirizzo IP statico per semplificare le impostazioni, all’interno del file /etc/network/interfaces del domO mettere (dove xen-br0 è il nome del bridge):
# Create the backend Xen bridge
auto xen-br0
iface xen-br0 inet static
# indica a ifup e ifdown che l’interfaccia e’ un bridge
bridge_ports none
# gli attribuisce 192.168.0.254 come IP address nella net/24
address 192.168.0.254
netmask 255.255.255.0
# Risolve degli errori sul checksum (DHCP in domU fails without this)
post-up ethtool -K xen-br0 tx off

# Configura l’interfaccia di uscita dal computer con un indirizzo statico
auto eth0
iface eth0 inet static
address 192.168.11.100
netmask 255.255.255.0
gateway 192.168.11.254

Per assegnare dinamicamente l’IP address si può adoperare dnsmasq che è anche DNS server (, da installare sul dom0 o in alternativa dove si ritiene meglio. All’interno del file di configurazione del programma /etc/dnsmasq.conf si può digitare:

domain-needed
resolv-file=/etc/resolv.conf
local=/xen/
user=dnsmasq
group=daemon
domain=”domain”
dhcp-range=192.168.0.1,192.168.0.253,3d
dhcp-leasefile=/var/lib/dnsmasq/leases

“domain” va sostituito con il nome del dominio che si intende attribuire al domU e alla sottorete. dhcp-range è l’intervallo di IP address assegnabile a chi ne fa richiesta mentre /etc/resolv.conf è il file di configurazione del server DNS che il sistema usa e più precisamente è il file che configura il comportamente delle librerie del resolver, utilizzate da tutti i programmi fare query DNS.

firewallOra la rete dovrebbe essere pronta. Occorre, però, mettere in sicurezza il server web facendo anteponendo un firewall che filtri il traffico.
E’ ovvio che per poter adoperare il web server su Internet è necessario un indirizzo IP pubblico. L’ideale sarebbe attribuirlo usando la tecnica ip outside global.

Per quanto riguarda il domU che ho preparato: (http://host.xzshare.com/?d=90549D631 e http://host.xzshare.com/?d=2D7A705F1) . Non ho preparato il file di configurazione del VM perché le impostazioni variano in base al sistem operativo del dom0 e dalla versione di Xen che viene utilizzata.per esempio è necessario cambiare i percorsi dei file immagine nonchè sono da fare gli script per la gestione della rete. La virtual machine è stata aggiornata il 23 giugno 2008 alle ore 10.30. Per riassemblare il file che è stato spezzato in più parti usare il comando: cat vmfed* > vm.tar.bz2

Probabilmente, visto che la procedura è assai complicata, avrete dei problemi. Per risolverli o ottenere chiarimenti consultate i link di approfondimento e se non avete trovato soluzione lasciate pure un commento.
Altre risorse:

Prima parte della guida – Un-server-web-su-Xen

Fridu in Xen mini-ISP reference artchitecture

Creare una rete con dom0 OpenSuse

Come configurare un’interfaccia di rete su OpenSuse

Potrebbero interessarti anche...

Una risposta

  1. 23 Giugno 2008

    […] seconda parte di questo articolo verranno descritte le fasi di preparazione della rete e metterò on-line l’archivio con la […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *