Lorsqu’une seule IP publique est disponible, la configuration réseau des jails doit s’appuyer sur un réseau privé où chaque jail possède son IP tout comme l’hôte réél (eh oui). Ainsi, une nouvelle interface loopback doit être créée, en y attribuant l’adresse IP dédiée à l’hôte :

# ifconfig lo1 create
# ifconfig lo1 inet 172.16.0.254 netmask 255.255.255.0

Ici, l’interface loopback lo1 est créée et l’hôte réel y est associée par l’IP 172.16.0.254. Ensuite, les alias réseaux peuvent être ajoutés de cette façon :

# ifconfig lo1 alias 172.16.0.1 netmask 255.255.255.0

La première jail aura donc l’IP 172.16.0.1. Cette commande est évidemment à répéter pour chaque jail, en y affectant une autre IP. Une fois l’ensemble des alias créés, les jails pourront enfin être démarrées.

Pour recréer la configuration réseau au démarrage, il faut modifier rc.conf :

# network_interfaces="lo0 re0 lo1"
# ifconfig_lo1="inet 172.16.0.254 netmask 255.255.255.0 broadcast 172.16.0.255"
# ifconfig_lo1_alias0="inet 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255"

Puis, créer le fichier start_if.lo1 :

# echo '/sbin/ifconfig lo1 create' > /etc/start_if.lo1

Au niveau de votre parefeu, il faudra évidemment effectuer les redirections de port sur l’IP de la jail pour rendre le service accessible. Par exemple avec PF :

rdr pass on $ext_if proto tcp from any to port 80 -> 172.16.0.1 port 80