Cette série d’articles sur la mise en place des jails de FreeBSD 10.1 a commencé par la mise en place de l’architecture et la création d’une première jail de test. Puis nous avons vu, dans l’article précédent comment ajouter le réseau à notre jail. IL est temps de voir comment joindre notre jail depuis l’extérieur, c’est à dire sans passer (ou si peu) par l’intermédiaire de l’hôte. Nous allons apprendre dans cet article comment ajouter le réseau à notre jail.
Une jail joignable depuis l’extérieur
Il est temps d’aller plus loin dans notre exploration en faisant en sorte que notre jail soit joignable de l’extérieur, sans passer par une connexion sur l’hôte.
Il est nécessaire de changer la configuration de pf
, puis de configurer sshd dans la jail pour ce que celui-ci écoute sur un port spécifique (différent de celui de l’hôte).
Configuration de pf
Nous allons commencer par compléter la définition de notre jail. Nous ferrons en sorte que sshd
sur notre jail écoute sur le port 4242 :
|
|
Et nous devons mettre en place la traduction d’adresse (le NAT) pour notre jail.
|
|
Ajoutons également une règle pour autoriser l’accès ssh
sur le port d’écoute de la jail depuis l’extérieur (la première règle autorise l’accès ssh
sur
le port d’écoute de l’hôte).
|
|
Il ne faut pas oublier de tester la syntaxe du fichier pf.conf
avant de l’activer.
|
|
on me souffle dans l’oreillette que le script /etc/rc.d/pf
fait une vérification avant d’appliquer les nouvelles règles. Il est donc inutiles de faire le test.
Configuration de ssh
dans la jail
La suite de la configuration se fait sur la jail. Nous allons installer le serveur ssh
et le configurer pour qu’il écoute sur le port 4242
.
Tout comme sur l’hôte, le fichier de configuration est /etc/ssh/sshd_config. Nous allons faire plus simple que sur l’hôte en indiquant simplement le port d’écoute. Nous allons également permettre la connexion de l’utilisateur root
.
Attention : cette permission est provisoire et ne doit servir que pour notre test. Il est impératif de changer ce paramètre dès que nous avons prouvé que la connexion fonctionne.
|
|
Et nous redémarrons le service ssh
:
dans la même oreillette on me signale que si cette façon de faire est parfaitement correcte, en cas de mise à jour, le fichier /etc/ssh/sshd\_config
pourrait être écrasé. En revanche le fichier /etc/rc.conf
est garanti de ne point l’être. C’est pourquoi il est préférable de mettre dans celui-ci les options de démarrage de sshd
:
|
|
Ceci est valable pour les jails, mais également pour l’hôte.
|
|
sur ma jail ssh
était présent, mais il manquait les hosts keys (les clefs du host). Il a fallu que je les génère avec les commandes suivantes :
|
|
mon oreillette experte m’indique que les clefs en question doivent être crées automatiquement par le script /etc/rc.d/sshd
.1
Il est possible de vérifier que notre ssh
écoute bien sur le port que nous avons désigné avec la commande sockstat -4 :
|
|
Test de la connexion depuis l’extérieur
Nous devons maintenant tester, depuis une machine externe, la connexion sur notre jail. Nous allons donc utiliser l’adresse IP de l’hôte et le port ssh de la jail. C’est la configuration de pf
qui va faire le travail.
|
|
Si vous arrivez là, c’est gagné, nous allons pouvoir aller plus loin.
Partager un dataset entre l’hôte et la jail
Nous allons maintenant partager un dataset ZFS existant (donc présent sur l’hôte) avec notre Jail.
Le travail se fait principalement sur l’hôte.
Il existe un fichier /etc/fstab.jailname (dans notre cas, fstab.sshtest. Celui-ci contient déjà le partage du dataset de la basejail. Nous allons y ajouter le partage d’un nouveau dataset.
j’ai créé pour cela un dataset zroot/usr/local/www/test
, mais vous pouvez partager un dataset existant.
|
|
On indique :
- le chemin du partage (le point de montage du dataset) ;
- le chemin vers la jail et le point de montage dans celle-ci ;
- le type de système de ficbier, ici nullfs ;
- le mode de montage, ici lecture-écritre (rw) 2 ;
- les options de montage classique,
dump
etPass
.
Pour que les modifications prennent effet, nous devons arrêter et redémarrer notre jail :
|
|
Connectons-nous sur la jail (utilisez le moyen que vous préférez, j’utilise la connexion ssh
maintenant qu’elle fonctionne).
|
|
Retournons sur l’hôte, dans le même répertoire.
|
|
Il semble que nous puissions écrire dans ce système de fichier depuis la jail et que les modifications sont bien visibles sur l’hôte. Et lycée de Versailles !
Conclusion
Nous approchons du but, mais de nombreuses questions restent à résoudre.