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 !route add default 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.