Accès au réseau pour toutes les machines virtuelles

Par défaut, les machines virtuelles sont "enfermées" sur le serveur. Si vous souhaitez leur autoriser un accès à internet, quelques manipulations sont à réaliser.

Tout d'abord, ajoutez ceci dans la configuration du parefeu (/etc/pf.conf) pour autoriser le flux sortant des machines virtuelles:

# utilisation d'un resolveur DNS public
pass in quick proto { tcp udp } from 100.64.0.0/10 to any port domain \
    rdr-to 9.9.9.9 port domain
match out on egress from 100.64.0.0/10 to any nat-to (egress)

Ici, on utilise un résolveur DNS public pour les machines virtuelles.

Vous voudrez sans doute modifier cette partie, notamment "9.9.9.9" par un résolveur qui vous convient peut-être davantage.

Dans le cas où vous avez configuré le résolveur unwind sur l'hôte (et c'est une excellente idée 😎), vous pouvez faire en sorte que les machines virtuelles puissent s'en servir plutôt que d'utiliser le résolveur précédent :

# Utilisation du résolveur unwind(8) de l'hôte pour les VM
pass in proto { tcp udp } from 100.64.0.0/10 to any port domain \
    rdr-to localhost port domain
match out on egress from 100.64.0.0/10 to any nat-to (egress)

Si vous avez configuré votre parefeu de façon à ce qu'il bloque tout par défaut, vous devrez ajouter ceci afin d'autoriser l'interface servant à communiquer avec les machines virtuelles :

pass on tap0 from 127.0.0.1 to any
pass on tap0 from 100.64.0.0/10 to any

Dans tous les cas, il faudra activer l'"ip forwarding" dans le fichier "/etc/sysctl.conf" :

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

Ainsi, les requêtes sont correctement redirigées vers (ou depuis) les machines virtuelles.

Après avoir pris en compte ces modifications, c'est tout bon 😊.