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.
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" } }
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
Selon la nature de la demande, vous enverrez le flux sur la machine virtuelle concernée. Prenons l'exemple suivant :
10.0.0.2
sert un site web (ports 80 et 443).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.