Archives pour la catégorie ‘Virtualisation’

FreeBSD : activer le ping dans vos jails

Par défaut, les jails FreeBSD ne peuvent pas créer de sockets de type RAW. Celles-ci sont pourtant utilisées par certains logiciels (sniffeur réseau et cie) à commencer par la commande rudimentaire ping.

Pour pouvoir autoriser la création de telles sockets, il faut modifier un paramètre système :

# sysctl security.jail.allow_raw_sockets=1
security.jail.allow_raw_sockets: 0 -> 1

Les jails devront être redémarrés pour que cela soit effectif. Pour affiner la configuration et  limiter l’impact de sécurité octroyé, il reste votre parefeu pour limiter les flux entrants/sortants des jails concernées.

FreeBSD : configuration réseau des jails

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

FreeBSD : un MTA pratique pour les jails

Pour chaque jail, il est nécessaire de recevoir les mails (cron, periodic, etc…). Afin de préserver au mieux les ressources et éviter le recours à un vrai relais SMTP (sendmail, postfix ou autre), un MTA idéal est ssmtp (Simple SMTP Agent). Il permet de relayer tous les mails vers un SMTP, ceci par un contournement de la commande sendmail. Donc pas de démon et c’est tant mieux.

Pour l’installer :

# cd /usr/ports/mail/ssmtp
# make install
# make replace

La dernière commande va remplacer la commande sendmail par celle de ssmtp.

Au niveau de la configuration, il y a deux fichiers :

# mv /usr/local/etc/ssmtp/ssmtp.conf.sample /usr/local/etc/ssmtp/ssmtp.conf
# mv /usr/local/etc/ssmtp/revaliases.sample /usr/local/etc/ssmtp/revaliases

Pour ssmtp.conf, il faut veiller aux options suivantes :

mailhub=172.16.0.3:25
rewriteDomain=hbis.fr

La première permet d’indiquer le serveur SMTP vers qui relayer les envois de mail. Dans mon cas, c’est l’IP de ma jail SMTP. Un serveur SMTP externe peut bien sûr être utilisé  La seconde option permet de spécifier le domaine des adresses d’envoi s’il n’est pas présent,  ce qui est le cas des comptes systèmes, sous peine d’avoir un refus d’envoi.

Le second fichier revaliases permet de convertir les adresses d’envoi, bref configurer des alias, mais aussi préciser le SMTP de destination pour un mail sender donné.

Pour désactiver le démon sendmail de votre jail, n’oubliez pas de corriger votre fichier /etc/rc.conf :

sendmail_enable="NONE"

Et pour virer le nom d’utilisateur Charlie des mails envoyés par le compte root :

# pw user mod root -c ''

FreeBSD : jail PostgreSQL

Pour pouvoir exécuter un serveur PostgreSQL sous une jail FreeBSD, il est nécessaire d’autoriser le support de la mémoire partagée (SHM). Il convient d’activer le flag dans /etc/rc.conf :

jail_sysvipc_allow="YES"

Si cela n’est pas fait, l’initialisation de l’espace de stockage échoue de cette façon :

sql# /usr/local/etc/rc.d/postgresql oneinitdb
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.</p>
The database cluster will be initialized with locale C.
The default text search configuration will be set to "english".
creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 10
selecting default shared_buffers ... 400kB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... FATAL:  could not create shared memory segment: Function not implemented
DETAIL:  Failed system call was shmget(key=1, size=1622016, 03600).
child process exited with exit code 1
initdb: removing data directory "/usr/local/pgsql/data"

VMWare Fusion 2 : activer l’accès console VNC

Sous Windows et Linux, VMWare 6 intègre un serveur VNC et permet un accès console VNC aux machines virtuelles. Toutefois sur Mac, VMWare Fusion ne propose pas cette option dans l’interface graphique de configuration. Cela demeure possible, en l’activant manuellement :

– fermer VMWare Fusion.
– placez-vous dans le répertoire de stockage de vos VM (fichiers  .vmwarevm).
– cliquez droit sur votre VM et sélectionnez « Afficher le contenu du paquet ».
– ouvrez le fichier à l’extension .vmx avec un éditeur de texte.
– ajoutez-y les lignes suivantes :

RemoteDisplay.vnc.enabled = "TRUE"
RemoteDisplay.vnc.port = "5901"
RemoteDisplay.vnc.password = "mot_de_passe"

Les options sont explicites, assurez-vous que le port d’écoute soit disponible.

Pour finir, lancez la VM et votre client VNC sur vnc://127.0.0.1:5901. Pour ce qui est de l’accès distant, SSH restera comme toujours votre ami.

Remarque : deux options en plus pour faciliter l’accès au BIOS setup :

bios.forceSetupOnce = "TRUE"
bios.bootDelay = "1500"

La première option ne marche que pour le boot suivant (le flag est désactivé ensuite). BootDelay est alors utile pour augmenter le délai en millisecondes de bascule par Fn + F2.

Haut de page