Outils du site


Dédier une machine virtuelle à une tâche

Vous voudrez certainement attribuer à chacune de vos machines virtuelles un rôle bien précis : l'une pour servir les sites web, une autre pour les mails… C'est bien entendu tout à fait possible, mais nécessite une configuration réseau différente de celle présentée jusqu'ici.

Ajout d'une interface virtuelle côté hôte

Sur votre serveur, créez une nouvelle interface de type “vether” (ethernet virtuel…)

# echo 'inet 10.0.0.1 255.255.255.0' > /etc/hostname.vether0
# sh /etc/netstart vether0

Ensuite, créez une interface de type bridge (qui fait le “pont” entre l'hôte et les machines virtuelles).

# echo 'add vether0' > /etc/hostname.bridge0
# sh /etc/netstart bridge0

Désormais, la redirection dans le parefeu se fait ainsi :

# match out on egress from 100.64.0.0/10 to any nat-to (egress) # ancienne ligne
match out on egress from vether0:network to any nat-to (egress)

# necessaire pour resolutions DNS
pass in quick proto { udp tcp } from vether0:network to any port domain \
    rdr-to 9.9.9.9 port domain

#pass on tap0 from 127.0.0.1 to any
#pass on tap0 from 100.64.0.0/10 to any
pass on vether0 from 127.0.0.1 to any
pass on vether0 from 10.0.0.0/24 to any
# ou pour ne pas s'embeter :
# pass on vether0

Afin de lancer une machine virtuelle, nous n'utiliserons plus l'option -L avec vmctl ni l'option local interface dans /etc/vm.conf. À la place, on configure une adresse bien précise pour chaque machine virtuelle dans le fichier /etc/vm.conf :

switch "my_switch" {
    interface bridge0
}

vm "openbsdvm" {
    memory 1G
    enable
    disk /var/vm/obsdvm.qcow2
    owner batman 
    interface { switch "my_switch" }
}

Configuration du réseau côté machine virtuelle

Sur la machine virtuelle, vous pouvez configurer une IP dans la plage 10.0.0.0/24 : c'est ce qu'on a mis dans le fichier /etc/hostname.vether0. Par exemple : “10.0.0.2”, “10.0.0.3”…

La route par défaut à indiquer est 10.0.0.1. Cela donnera :

# cat /etc/hostname.vio0
inet 10.0.0.2 255.255.255.0 10.0.0.255
# cat /etc/mygate
10.0.0.1
# cat /etc/resolv.conf
nameserver 10.0.0.1

Redirection du trafic vers les machines virtuelles

Selon la nature de la demande, vous enverrez le flux sur la machine virtuelle concernée. Prenons l'exemple suivant :

  • La machine virtuelle dont l'adresse est 10.0.0.2 sert un site web (ports 80 et 443).
  • La machine virtuelle 10.0.0.3 doit être accessible en SSH (port 22).

Sur le serveur hôte, vous configurerez le parefeu de cette façon :

pass in on egress proto tcp from any to (egress) port { 80 443 } rdr-to 10.0.0.2
pass in on egress proto tcp from any to (egress) port 22 rdr-to 10.0.0.3

Remarquez que pour plusieurs sites web, vous voudrez plutôt utiliser relayd afin de répartir la charge.