Pour l'ensemble des opérations présentées dans cette section, on utilise indifféremment les solutions KVM (et|ou) QEMU. Les configurations réseaux sont valables dans les deux cas.
Le mode utilisateur est la solution par défaut ; celle utilisée
lors de la phase d'installation d'une nouvelle instance de machine virtuelle
(Voir Section 7.2, « Installation d'une machine virtuelle QEMU »). Il correspond à
l'utilisation d'une pile de protocoles réseau en mode utilisateur.
L'avantage, c'est que cette configuration réseau automatisée ne nécessite
aucune opération système avec les droits super-utilisateur. L'inconvénient,
c'est qu'aucune communication depuis un hôte réseau réel vers la machine
virtuelle n'est possible. Il est cependant possible de communiquer depuis le
système hôte vers la machine virtuelle en mode utilisateur à l'aide de
l'option redir.
La documentation officielle se trouve à la page Using the user mode network stack
Selon les termes de cette documentation, la machine virtuelle se comporte comme un hôte réseau situé derrière un pare-feu qui bloque les connexions entrantes. La topologie de la connexion et des services se présente sous la forme suivante :
QEMU VLAN <------> Firewall/DHCP server <-----> Internet
| (10.0.2.2)
|
----> DNS server (10.0.2.3)
|
----> SMB server (10.0.2.4)
Ce mode de fonctionnement intégré à la solution de virtualisation reproduit les services traditionnellement offerts par un routeur domestique ADSL : traduction d'adresses IP (NAT), configuration réseau cliente dynamique (DHCP) et résolution des noms de domaines (DNS).
Le serveur virtuel attribue dynamiquement les adresses IP à partir de
10.0.2.15 aux interfaces réseau de
la machine virtuelle.
On commence par lancer l'instance de machine virtuelle.
$qemu -hda vm0-debian-i386-X11.qcow -m 384 -redir tcp:5555::23![]()
|
L'option |
Une fois la machine virtuelle lancée, on installe les paquets nécessaires et on configure le service telnet.
Côté système hôte ou client telnet, on vérifie que le paquet
telnet-ssl est bien installé.
$ dpkg -l telnet-ssl |grep ^ii ii telnet-ssl 0.17.24+0.1-20 The telnet client with SSL encryption support
Côté machine virtuelle ou serveur telnet, on vérifie que le paquet
telnetd-ssl est bien installé.
$ dpkg -l telnetd-ssl |grep ^ii ii telnetd-ssl 0.17.24+0.1-20 The telnet server with SSL encryption support
Pour faire simple, on autorise toutes les connexions entrantes sur le service telnet et on vérifie que le service est ouvert.
#echo "in.telnetd: ALL" >>/etc/hosts.allow#tcpdchk -v Using network configuration file: /etc/inetd.conf >>> Rule /etc/hosts.allow line 14: daemons: in.telnetd clients: ALL access: granted
Il ne reste plus qu'à ouvrir une connexion telnet depuis le système hôte.
:~$ telnet localhost 5555 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. Debian GNU/Linux lenny/sid vm0 login: etu Password: Last login: Wed May 14 17:00:13 CEST 2008 from 10.0.2.2 on pts/2 Linux vm0 2.6.24-1-686 #1 SMP Sat Apr 19 00:37:55 UTC 2008 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. etu@vm0:~$ w 17:36:47 up 1:06, 2 users, load average: 0,04, 0,01, 0,00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT etu pts/1 10.0.2.2 17:36 0.00s 0.44s 0.06s w
Du point de vue configuration réseau, l'interface Ethernet de la machine virtuelle a été configurée via le service DHCP intégré à l'émulateur.
# lspci | grep -i ethernet 00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS) # cat /var/log/syslog |grep -i dhcp vm0 dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 vm0 dhclient: DHCPOFFER from 10.0.2.2 vm0 dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67 vm0 dhclient: DHCPACK from 10.0.2.2 vm0 dhclient: bound to 10.0.2.15 -- renewal in 40347 seconds.
La configuration réseau obtenue est la suivante :
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56
inet adr:10.0.2.15 Bcast:10.0.2.255 Masque:255.255.255.0
adr inet6: fe80::5054:ff:fe12:3456/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1879 errors:0 dropped:0 overruns:0 frame:0
TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1292554 (1.2 MiB) TX bytes:169257 (165.2 KiB)
Interruption:10 Adresse de base:0xc100
vm0:/home/etu# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
Les informations relevées dans les copies d'écran ci-dessus montrent que ce sont les fonctions intégrées de l'émulateur qui ont servi à la configuration de l'interface réseau Ethernet émulée.
Vous êtes ici :