La configuration d’une machine virtuelle que l’on nomme « invitée » nécessite classiquement une adresse IP dans l’invitée pour se connecter par SSH. Cette IP est configurée en dur ou gérée via DHCP pour plus de souplesse ; cette méthode a l’inconvénient de nécessiter une des interfaces virtuelles de la machine invitée et son pendant côté hyperviseur ou machine hôte.
![Source : https://wiki.qemu.org/images/0/0c/Qemu-logo.png QEMU](//web.archive.org./web/20200916002427im_/https://img.linuxfr.org/img/68747470733a2f2f77696b692e71656d752e6f72672f696d616765732f302f30632f51656d752d6c6f676f2e706e67/Qemu-logo.png)
Avec les vsock créées sur qemu-kvm par Stefan Hajnoczi, les invités sont accessibles par un socket stream, donc du même type que TCP, sans passer par une interface IP.
Pour avoir un shell distant comme avec SSH, la sécurité en moins, il existe un petit programme client‐serveur qui se trouve sur GitHub :
git clone https://github.com/clownix/cloonix_vsock
Très simple d’utilisation, il peut aider à avoir un shell sans configuration vers des invités utilisant la virtualisation qemu-kvm.
Ce programme peut être testé avec des sockets INET ou UNIX, voici les trois types de sockets stream gérés :
-
s = socket(AF_INET, SOCK_STREAM, 0);
;
-
s = socket(PF_UNIX, SOCK_STREAM, 0);
;
-
s = socket(AF_VSOCK, SOCK_STREAM, 0);
.
On peut observer à nouveau la puissance d’UNIX qui permet d’ouvrir des descripteurs de fichiers vers des protocoles très différents, tout en les traitant exactement de la même façon après l’ouverture.