Asustor Connexion à un partage en NFS ou SMB depuis un conteneur LXC proxmox (sur une autre machine)

MilesTEG

Administreur
Membre du personnel
6 Septembre 2020
3 167
750
288
Édition : Je change le titre du sujet, initialement nommé "Connexion à un partage en NFS depuis un conteneur LXC proxmox (sur une autre machine) : erreur mount(2): Operation not permitted", pour refléter le changement de perspective qui est le choix du NFS ou du SMB pour monter un partage réseau dans un conteneur LXC.



Bonsoir
Je suis en train de tenter de monter en NFS un dossier partagé de mon AS6704T dans un conteneur LXC unprivileged sur un NUC avec Proxmox 8.2 installé.

Dans le LXC j'ai installé nfs-common et je tente de monter avec cette commande :
Bash:
mount -v -o nfsvers=3 -t nfs 192.168.2.203:/volume3/Mon-Partage /data/Mon-Partage/
Mais ça abouti à cette erreur :
Code:
mount.nfs: timeout set for Sun May  5 23:14:19 2024
mount.nfs: trying text-based options 'nfsvers=3,addr=192.168.2.203'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.2.203 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.2.203 prog 100005 vers 3 prot UDP port 2195
mount.nfs: mount(2): Operation not permitted
mount.nfs: Operation not permitted

J'ai bien configuré le partage dans ADM avec l'IP du conteneur LXC :
1714943843195.png

Bref, je ne suis pas assez calé en NFS pour réussir ce qui semble simple de première abord.

Merci de votre aide :)
 
Dernière édition:
Bonsoir,

Pas pro non plus mais il me semble:
  • depuis le client NFS (donc ton container), il faut t'assurer que le NAS a bien exporter son chemin NFS avec sudo showmount -e <@ip ou nom du VHS> Tu notes le retour, par exemple:
    Code:
    Export list for <xxx>:
    /data_raid/data/datausr/public 192.168.2.59
  • Ensuite, toujours sur le client, il faut créer un dossier pour «recevoir» les données du partage: par exemple sudo mkdir /nfs/NASAsustorNFS
  • Pour un montage automatique, il suffit de modifier le fichier `/etc/fstab` dans le container pour y ajouter sur une seule ligne à la fin:
    Code:
    # Ajout  2024.05.06 - Montage automatique vers le NAS (client NFS)
    <@IP ou nom du NAS>:/data_raid/data/datausr/public/  /nfs/NASAsustorNFS  nfs  defaults,user,auto,noatime,rsize=16384,wsize=16384  0  0
La commande suivante va permettre de (re)monter tout ce qui dans le fichier fstab qu'on vient de modifier (et qui est traité au démarrage/reboot): sudo mount -a

Normalement... A adapter à ton environnement ;)

@+
 
Bonsoir,

Pas pro non plus mais il me semble:
  • depuis le client NFS (donc ton container), il faut t'assurer que le NAS a bien exporter son chemin NFS avec sudo showmount -e <@ip ou nom du VHS> Tu notes le retour, par exemple:
    Code:
    Export list for <xxx>:
    /data_raid/data/datausr/public 192.168.2.59
  • Ensuite, toujours sur le client, il faut créer un dossier pour «recevoir» les données du partage: par exemple sudo mkdir /nfs/NASAsustorNFS
  • Pour un montage automatique, il suffit de modifier le fichier `/etc/fstab` dans le container pour y ajouter sur une seule ligne à la fin:
    Code:
    # Ajout  2024.05.06 - Montage automatique vers le NAS (client NFS)
    <@IP ou nom du NAS>:/data_raid/data/datausr/public/  /nfs/NASAsustorNFS  nfs  defaults,user,auto,noatime,rsize=16384,wsize=16384  0  0
La commande suivante va permettre de (re)monter tout ce qui dans le fichier fstab qu'on vient de modifier (et qui est traité au démarrage/reboot): sudo mount -a

Normalement... A adapter à ton environnement ;)

@+
Bonjour @Cram28
Le souci est que le mount ne se fait pas !
J’avais d’abord essayé de placer l’entrée dans le fstab mais j’avais la même erreur donc pour essayer de faire que ça fonctionne je suis passé par la commande shell que j’ai donnée dans mon message initial.

Le conteneur lxc ping sans souci le nas donc ça communique bien entre les deux.

Mais la connexion nfs est refusée pour je ne sais quelle raison.

Quand j’aurais un moment je testerais une connexion nfs avec le Synology pour voir si ça fonctionne.

quelqu’un sait où se trouve le fichier de configuration du nfs dans l’asustor que je vois comment c’est configuré ?


@Dami1 pourrais-tu m’aider ?
 
Hello bonjour,

Je tente des questions complémentaires... :
- la commande sudo showmount -e <NAS> retourne quoi ?
- Dans ton NAS, à quoi correspond l'adresse que tu paramètres dans la copie d'écran ? Celle de ton host NUC ou bine celle de ton container LXC exposé sur le LAN ?
- Ton container est bien exposé sur le LAN ? Ou bien il n'est connu que du HOST (pas exposé): dans ce cas ça se complique: pare-feu sur le host ? NAT des ports ?

@+
 
Alors :
- la commande sudo showmount -e <NAS> retourne quoi ?
Ça me donne ceci :
Code:
Export list for 192.168.2.203:
/volume3/Mon-Partage 192.168.2.59
Si je comprends ce que donne cette commande, elle affiche les partages NFS donnés par le NAS.
- Dans ton NAS, à quoi correspond l'adresse que tu paramètres dans la copie d'écran ? Celle de ton host NUC ou bine celle de ton container LXC exposé sur le LAN ?
L'adresse IP 192.168.2.59 est celle du conteneur LXC, pas celle de son hôte proxmox qui est donc différente.
L'adresse IP 192.168.2.203 est celle du NAS.

- Ton container est bien exposé sur le LAN ? Ou bien il n'est connu que du HOST (pas exposé): dans ce cas ça se complique: pare-feu sur le host ? NAT des ports ?
Non, pas de pare-feu sur l'hôte proxmox, ou ailleurs.
Celui du NAS est bien configuré pour laisser passer les flux des IP LAN, j'ai vérifié avec le ping fonctionnel.
Le conteneur LXC est bien visible depuis le NAS, le ping passe aussi.

Pour répondre à une autre question que tu as posée précédemment, j'ai bien entendu créé les dossiers adéquats dans le conteneur LXC :
Code:
root@plex-lxc:~# ls -la /data/
total 28
drwxrwxrwx  7 root root 4096  5 mai   22:19 .
drwxr-xr-x 19 root root 4096  5 mai   22:19 ..
drwxrwxrwx  2 root root 4096  5 mai   22:19 Mon-Partage
 
hello,

un conteneur LXC unprivileged sur un NUC

le problème vient de la, cela ne fonctionnera pas dans ce type de conteneurs ==> pas les droits pour.

pour faire du mount NFS ou SMB il faut un conteneur privileged.

- solution la plus rapide, faire un backup du lxc, arret et restore en priviliged.

- sinon il faut faire le point de montage sur les host ==> promox et monter ce dossier dans le conteneur.

suivre la méthode 3 de ce tuto.

il y a d'autre façons de faire mais c'est la plus propre.

voila ;)

edit : sinon les droits sur asutor me semble correct.
 
Oui, c'est bien ce qu'indique la commade <showmount>: c'est bien pratique (y)

Du coup, dans /etc/fstab du container, je proposerais bien (je suis moins à l'aise avec mount direct):
Code:
# Ajout  2024.05.06 - Montage automatique vers le NAS (client NFS)
192.168.2.203:/volume3/Mon-Partage/  /data/Mon-Partage  nfs  defaults,user,auto,noatime,rsize=16384,wsize=16384  0  0

Sinon, tenter un positionnement des "/" pas tout à fait pareil sur ta commande mount:
Code:
mount -v -o nfsvers=3 -t nfs 192.168.2.203:/volume3/Mon-Partage/ /data/Mon-Partage

:unsure:
@+
Message automatiquement fusionné :

Ah ben voui PackTu, j'avais pas fait attention: unprivileged !
Sinon, faire un partage NFS sur le NUC et un bind dans le container...
 
Dernière édition:
@PackTu @Cram28
Merci pour vos interventions.
J'ai voulu suivre les conseils et faire un LXC unprivileged.
Honnêtement, je pense que c'est un plus niveau sécurité, mais je ne sais pas vraiment ce que ça implique derrière :ROFLMAO:

La seule solution est donc de faire un montage sur l'hôte proxmox, et ensuite de faire du bind-mount dans le LXC.
Ce n'est pas trop ce que j'avais envisagé, mais bon, je n'ai pas vraiment envie de refaire la création du LXC en privileged...

Je vais donc suivre la méthode n°3 du guide que vous avez donnés en lien, et que j'avais repéré sur mon smartphone :)

PS : un montage SMB, c'est aussi impossible dans le LXC ?
C'est aussi performant qu'un NFS ? (je ne me rends pas compte...)
 
Honnêtement, je pense que c'est un plus niveau sécurité, mais je ne sais pas vraiment ce que ça implique derrière

Conteneurs privilégiés :

Un conteneur privilégié a un accès complet au système hôte.
Le processus racine du conteneur est le même que celui du système hôte.
Si un conteneur privilégié est compromis, l’attaquant peut potentiellement accéder au système hôte.

Conteneurs non privilégiés :

Les conteneurs non privilégiés ont des restrictions d’accès au système hôte.
Ils utilisent des ID d’utilisateur (UID) et des ID de groupe (GID) différents de ceux du système hôte.
Si un conteneur non privilégié est compromis, l’attaquant a un accès limité au système hôte.
Les conteneurs non privilégiés sont plus sûrs en termes de sécurité, mais certaines fonctionnalités peuvent être restreintes.).

Sécuriser un conteneur LXC privilégié :

Isolation du réseau :
Ne reliez pas directement un conteneur privilégié à Internet.
Utilisez un réseau interne ou un réseau privé virtuel (VPN) pour limiter l’exposition.

Accès utilisateur restreint :
Évitez d’utiliser le compte root dans le conteneur privilégié.
Créez un utilisateur non privilégié avec des droits limités.

Réduisez les privilèges :
Désactivez les fonctionnalités inutiles dans le conteneur.
Limitez l’accès aux ressources système essentielles.
Surveillance et journalisation :
Surveillez l’activité du conteneur.
Enregistrez les journaux pour détecter toute activité suspecte.

Mises à jour régulières :
Maintenez à jour le système d’exploitation du conteneur.
Appliquez les correctifs de sécurité.

Sécurité en profondeur :
Sécurisez également le système hôte.
Utilisez des pare-feux pour contrôler les flux de données.

En résumé, bien que les conteneurs privilégiés puissent être utiles pour certains cas d’utilisation, il est essentiel de prendre des mesures pour minimiser les risques de sécurité.

credits: microsoft Copilot.

Après moi les seul LXC privileged que j'ai sont pour Plex et emby (le plus simple pour avoir HW transcodage) qui ne sont accessible depuis extérieur qu'à travers nginx proxy manager en docker (avec plage IP restreinte pour accès depuis internet) ou le vpn wireguard du routeur, j'ai changer le port SSH, installé fail2ban qui supervise les connexions de npm et du port SSH du lxc docker unprivilied, crée un utilisateur, bloquer utillisateur root et au niveau firewall du routeur que 2 ports rediriger 80, 443 vers le npm.


Ce n'est pas trop ce que j'avais envisagé, mais bon, je n'ai pas vraiment envie de refaire la création du LXC en privileged...

pas besoin de le refaire :

backup.png

et voila lxc transformé en privileged.


PS : un montage SMB, c'est aussi impossible dans le LXC ?
C'est aussi performant qu'un NFS ? (je ne me rends pas compte...)


NFS, SMB même combat pas possible dans un lxc unpriviliged.

Niveau perfs j'avais plex en NFS et Emby en SMB je ne vois aucune différence, faudrait faire des tests.

Perso maintenant je fait du SMB car beaucoup plus souple niveau droits, et ont peut faire du SMB3 pour booster le débit. j'ai crée un utilisateur spécifique sur le syno pour restreindre les droits d'accès.

voila. :)
 
Dernière édition:
Bon bon... et bien c'est monté sur l'hôte proxmox.
J'ai du ajuster le propriétaire sur certains dossiers, mais tout est accessible.

En revanche pour un point de montage NFS sur le Synology, il a fallu que je mette l'utilisateur "admin" de DSM en accès sur le dossier partagé, alors que ce dernier est désactivé et sans aucune permission.

Bref, le NFS, c'est la misère... je n'ai jamais galéré autant avec le SMB...

NFS, SMB même combat pas possible dans un lxc unpriviliged.

Niveau perfs j'avais plex en NFS et Emby en SMB je ne vois aucune différence, faudrait faire des tests.

Perso maintenant je fait du SMB car beaucoup plus souple niveau droits, et ont peut faire du SMB3 pour booster le débit. j'ai crée un utilisateur spécifique sur le syno pour restreindre les droits d'accès.
Je vais probablement passer sur le SMB. Ce sera à mon avis plus simple pour les permissions, et pas moins performant.

pas besoin de le refaire :

backup.png

et voila lxc transformé en privileged.
Ha ! Intéressant ça :)
Je pense que je vais le passer en privileged, mon accès via internet passe par le reverse proxy SWAG avec Fail2ban et Crowdsec, avec filtrage d'IP autorisant seulement les IP FR. Et mon routeur filtre aussi le traffic.
Niveau sécurité c'est mieux qu'un accès libre ^^
J'ajouterais mon LXC à ma liste de serveur à mettre à jour régulièrement :)


PS : merci pour les informations sur les deux modes de LXC.
 
Niveau sécurité c'est mieux qu'un accès libre ^^
Oui la sécurité est a un bon niveau (y)


Pour le SMB dans un LXC privileged j’ai procéder comme ça :

Cocher option :

SMB.png


Création d’un fichier dans le dossier /root qui contiendra les infos de connexion au serveur SMB.

Bash:
nano /root/.smb
username=mon_utilisateur
password=mon_password

Installer le service CIFS dans le conteneur LXC:

Bash:
apt update && apt install cifs-utils

Création du point de montage et modification du fichier fstab :

Bash:
mkdir -p /mnt/Films4K
mkdir -p /mnt/Enreg_TV
nano /etc/fstab
#acces read-only
//192.168.10.210/Films4K /mnt/Films4K cifs ro,auto,credentials=/root/.smb 0 0
#access read-write bien sûrs il faut que le dossier sur le nas soit aussi rw
//192.168.10.210/Enreg_TV /mnt/Enreg_TV cifs rw,users,credentials=/root/.smb,dir_mode=0777,file_mode=0777 0 0

ou 192.168.10.210 est ip du nas.

On monte et on test :

Bash:
mount -a
ls -l /mnt/Films4K

Création crontab pour montage après délais après un reboot car des fois pas montage lors du reboot, et ajout aussi d’une vérification du montage toutes les 30 minutes

Bash:
crontab -e
@reboot sleep 30 && mount -a
*/30 * * * * /opt/plex/nas_check.sh

.Creation du repertoire et du fichier

Bash:
cd /opt
mkdir plex
nano /opt/plex/nas_check.sh

On le rend exécutable

Bash:
chmod +x /opt/plex/nas_check.sh

voila ;)
 

Pièces jointes

  • nas_check.sh
    401 bytes · Affichages: 2
Dernière édition:
J’évite au maximum les containers privileged. J'en ai qu'un seul (Jellyfin), mais il est dans mon LAN. Je monte les partages NFS de mes médias directement depuis le container LXD (c'est avec un serveur Incus)...

Sinon, bien galère les partages NFS depuis un Syno.... obliger de passer par le profil 'mapper les utilisateurs sur admin'.... sinon trop galère à gérer avec plusieurs UID clients différents 😅
 
@PackTu
J'ai regardé ton script, et je me demande comment le modifier pour faire en sorte que ça teste plusieurs points de montage, car j'en ai plusieurs. Voir autre message plus bas, j'ai modifié le script.

Il me faudra aussi vérifier que Plex peut accéder aux médias.

J'ai utilisé ceci dans mon fstab :
Code:
//192.168.2.201/Musiques            /data/musics                cifs    auto,defaults,ro,vers=3.0,noatime,nofail,uid=plex,credentials=/root/.plex-smbcredentials-synology,iocharset=utf8    0    0
//192.168.2.203/Plex-Medias            /data/Plex-Medias           cifs    auto,defaults,ro,vers=3.0,noatime,nofail,uid=plex,credentials=/root/.plex-smbcredentials-asustor,iocharset=utf8        0    0
//192.168.2.203/Livres-Audio        /data/audio-books           cifs    auto,defaults,ro,vers=3.0,noatime,nofail,uid=plex,credentials=/root/.plex-smbcredentials-asustor,iocharset=utf8        0    0
//192.168.2.203/Videos              /data/videos                cifs    auto,defaults,rw,vers=3.0,noatime,nofail,uid=plex,credentials=/root/.plex-smbcredentials-asustor,iocharset=utf8        0    0
//192.168.2.203/Plex-Optimisations  /data/Plex-Optimisations    cifs    auto,defaults,rw,vers=3.0,noatime,nofail,uid=plex,credentials=/root/.plex-smbcredentials-asustor,iocharset=utf8        0    0


@Bambusa29
Je ne compte pas faire beaucoup de LXC, et encore moins des privileged. Peut-être un autre pour Jellyfin, en secours.
Sinon, bien galère les partages NFS depuis un Syno.... obliger de passer par le profil 'mapper les utilisateurs sur admin'.... sinon trop galère à gérer avec plusieurs UID clients différents 😅
haha ! C'est donc aussi la misère avec un Syno pour le NFS...
Je ne regrette pas le choix du SMB ^^ Je peux gérer plus finement les droits d'accès en créant un utilisateur dédié dans les NAS.
 
Dernière édition:
@PackTu
J'ai codé un peu ce soir, et voilà le résultat, probablement perfectible :
Bash:
#!/bin/bash

# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour vérifier les montages SMB pour le serveur Plex               ║
# ╚══════════════════════════════════════════════════════════════════════════╝
#
# Sources :
#   - https://www.derekseaman.com/2023/04/migration-guide-plex-on-synology-to-proxmox-lxc.html
#   - https://www.forum-nas.fr/threads/connexion-%C3%A0-un-partage-en-nfs-ou-smb-depuis-un-conteneur-lxc-proxmox-sur-une-autre-machine.22686/#post-150689
#   - https://superuser.com/a/593404

# mount_list=$(find /data/ -mindepth 1 -maxdepth 1 -type d \( ! -iname ".*" \) | sed 's|^/data/||g')
# mount_list=( $(find /data/ -mindepth 1 -maxdepth 1 -type d \( ! -iname ".*" \)) )

# Où doivent se situer les points de montages SMB :
mount_path="/data/"

mount_list=()
mapfile -t mount_list < <(find "${mount_path}" -mindepth 1 -maxdepth 1 -type d \( ! -iname ".*" \))

printf "\nVérification des montages SMB suivants :\n"
printf "\t-  %s\n" "${mount_list[@]}"
printf "\n"

text_to_print=""
for item in "${mount_list[@]}"; do
if [ "$(command -v command)" ]; then
    echo "command \"command\" exists on system"
fi

    if mountpoint -q "${item}"; then
        # logger -f /var/log/smb_nas_check.log -t $0 It\'s mounted.
        # printf "%s is mounted.\n" "${item}"
        text_to_print+="\n${item} is mounted\n"
    else
        # logger -f /var/log/smb_nas_check.log -t $0 It\'s not mounted.
        # printf "%s is not mounted.\n" "${item}"
        text_to_print+="\n${item} is not mounted!"
        mount -t cifs "${item}"
        if [ $? -eq 0 ]; then
            # logger -t $0 Mount sucess!
            text_to_print+="   But it's now mounted successfully!\n"
        else
            # logger -t $0 Something went wrong with the mount...
            text_to_print+="   And something went wrong with the mount... Check the mountpoint (fstab)!\n"
        fi
        
    fi
done
printf "${text_to_print}" | column -t -o " "


Résultat si les points de montages sont montés :
1715116623144.png

Et si ils ne sont pas montés, ça donne ceci :
1715116681019.png
Et si un point ne veut pas se monter : (dossier /data/toto qui n'est pas dans le fstab)
1715116782249.png

Bon maintenant que les fichiers semblent accessibles, me faut copier la configuration de mon PMS actuel :)
 
hello,

J’évite au maximum les containers privileged. J'en ai qu'un seul (Jellyfin), mais il est dans mon LAN. Je monte les partages NFS de mes médias directement depuis le container LXD (c'est avec un serveur Incus)...

je suis assez serein avec les lxc privileged en plus de la sécurisation local proxmox, le plus principal est fait au niveau de mon routeur, mon architecture réseau est séparé en plusieurs VLANS :

un pour le LAN == accès total.
un pour les IOT == accès restreint.
un pour les guests == accès restreint.
un pour la livebox == accès au lan ( je bypass la livebox pour ne pas avoir de double NAT)
un pour le serveur Promox == accès a certaines machines du lan et accès total IOT.

Je télécharge une fois par jour les listes IP de firehol_level1_ipv4 et .abuseipdb free qui sont injecté dans le firewall du routeur, a cela j'ajoute en dur dans le firewall les IP que Fai2ban me remonte.

Donc tout est bloqué au niveau du routeur et n'arrive pas sur le serveur promox. ;)


@PackTu
Tu pourrais me dire où est le log qu'écrit la commande logger ?

Dans /var/log/syslog, car je vais mettre en place un graylog ou autre qui récupérera les logs de toutes les machines pour m'envoyer les alertes nécessaires.

@PackTu
J'ai codé un peu ce soir, et voilà le résultat, probablement perfectible :

Moi aussi je monte plusieurs dossiers mais je suis parti du principe que si un n'est pas monté il n'y a aucune raison que les autres le soit.
je surement le récupérer pour mettre a jour le mien , beau boulot.(y)

Bon maintenant que les fichiers semblent accessibles, me faut copier la configuration de mon PMS actuel :)

Les fichiers sont montés donc accessible pas de problème, par contre moi j'ai refait toute la configuration de zéro pour m'évité tout soucis, c'est plus long mais c'est plus propre.
Je pense que le transfert de PMS comme décrit ici devrait aussi bien fonctionner. good luck. :)
 
Je pense que le transfert de PMS comme décrit ici devrait aussi bien fonctionner. good luck. :)
C’est effectivement ce guide que je suis.
Merci pour ton aide et les infos😊


Pour ta structure réseau, je ne touche plus aux vlan, c’est trop galère pour moi, surtout quand les constructeurs n’utilisent pas la même nomenclature voir ne documentent pas vraiment leur produits.

Cependant je suis curieux sur ton bypass pour ta livebox : je n’ai pas bien compris de quoi il s’agissait.
Moi aussi je monte plusieurs dossiers mais je suis parti du principe que si un n'est pas monté il n'y a aucune raison que les autres le soit.
je surement le récupérer pour mettre a jour le mien , beau boulot.(y)
merci 🙏🏻
Seul bémol avec mon script : il faut que tous les dossiers partagés soient montés dans le même dossier , et s’il y en a d’autres dedans non dédiés à Plex ou autre , ils seront inclus aussi.

j’ai plusieurs partages sur le même nas et un sur un autre nas.
Dans /var/log/syslog, car je vais mettre en place un graylog ou autre qui récupérera les logs de toutes les machines pour m'envoyer les alertes nécessaires.
Ok j’avais bien regardé au bon endroit mais le syslog était vide.
J’ai commenté les lignes. Je vais mettre en place un système de log perso ou bien faut trouver comment faire en sorte que ça fonctionne.