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 dans
l'espace mémoire 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 réseau de type service Internet depuis un
hôte réel vers la machine virtuelle n'est possible. Il est
cependant possible d'accéder à la «console» d'une machine virtuelle
en mode utilisateur depuis le système hôte à 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 \ -name telnet-access-example \ -m $memory \ -rtc base=localtime,clock=host \ -drive file=vm0-debian-stable-x86.raw,if=virtio,media=disk,boot=on \ -k fr \ -usb -usbdevice tablet \ -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-sslest 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-sslest 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: grantedIl 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) # grep -i dhcp /var/log/syslog 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 de l'hôte virtuel.