La Fibre

Télécom => Logiciels et systèmes d'exploitation => Linux Linux (usage serveur) => Discussion démarrée par: DamienC le 01 avril 2020 à 18:19:55

Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 01 avril 2020 à 18:19:55
Hello à tous,

Voilà le contexte: J'ai un serveur SMB sous Debian chez un hébergeur X et un client SMB chez un hébergeur Y.
Afin de faire le partage SMB, je monte un VPN entre les deux.
La connexion des VPN se fait de manière automatique après le démarrage du système, donc après /etc/fstab...

De ce fait, lorsque je reboot le client, celui-ci n'arrive pas à monter le partage CIFS que j'ai défini dans mon /etc/fstab:
//192.168.30.1/partage /srv/smb/partage/ cifs credentials=/srv/smb/creds 0 0En soit c'est logique.

J'aimerai soit trouver une solution pour faire délayer le mount de ce partage dans le fstab après le boot (j'ai trouvé l'option _netdev, mais ne semble pas passé sous Debian 10)
ou alors faire un script qui ferai par exemple un "sudo mount -a" après genre 15 secondes du boot.

Vous pourriez m'aider?

Cordialement,
DamienC

Titre: Mount CIFS après qu'un VPN soit établi
Posté par: lechercheur123 le 02 avril 2020 à 09:11:59
@reboot dans crontab ferait l'affaire ?

@reboot monscript.sh
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: mirtouf le 02 avril 2020 à 12:06:18
Est-ce qu'un service systemd avec un timer est une solution envisageable ?
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 02 avril 2020 à 12:08:04
@reboot dans crontab ferait l'affaire ?

@reboot monscript.sh
Je ne connais pas cette solution de @reboot dans le crontab, je vais creuser, merci  ;)
En gros il effectue l'action "monscript.sh" une fois le système boot?

Est-ce qu'un service systemd avec un timer est une solution envisageable ?
Oui tout à fait mais je n'ai pas trouvé comment faire ce fameux timer?
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: lechercheur123 le 02 avril 2020 à 13:25:54
Je ne connais pas cette solution de @reboot dans le crontab, je vais creuser, merci  ;)
En gros il effectue l'action "monscript.sh" une fois le système boot?

Il le fait après chaque reboot. Je ne suis pas sûr qu'il le fasse après un démarrage à froid (mais à tester). Je ne sais pas non plus après combien de temps (peut-être rajouter 'sleep 200 &&' avant la commande à exécuter)

Oui, ça fonctionne comme crontab normal, où on remplace juste le choix de la récurrence par @reboot. Et c'est plutôt "sh /path/to/script/script.sh" et non "monscript .sh" :)
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: mirtouf le 02 avril 2020 à 13:53:18
Par exemple: https://www.linux.com/topic/desktop/setting-timer-systemd-linux/
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: kazyor le 02 avril 2020 à 14:08:47
Question bête, pourquoi CIFS over VPN et pas sshfs ?
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: Thornhill le 02 avril 2020 à 14:15:08
Question bête, pourquoi CIFS over VPN et pas sshfs ?

sshfs c'est quand même bien goret : mapper des accès Posix en commandes SFTP quelle horreur.
Sans compter l'implémentation plus que douteuse des erreurs systèmes entre le serveur et le client Fuse avec un souvent un mapping générique empêchant tout diagnostic sérieux (exemple : EMFILE côté serveur mappée en EPERM côté client).
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 02 avril 2020 à 15:25:29
Question bête, pourquoi CIFS over VPN et pas sshfs ?
Car super simple à config et à maintenir!
Et surtout pour l'usage que j'en ai... Un serveur avec bcp de stockage et des gros fichiers, et un autre chez un autre provider avec plein de puissance de calcul; juste un besoin de lecture en direct via le VPN, en RO...
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: kgersen le 02 avril 2020 à 17:51:01
Est-ce qu'un service systemd avec un timer est une solution envisageable ?

pas besoin de timer. on peut établir une dépendance dans systemd pour faire le mount apres l'établissement du vpn.

on peut meme mettre la dépendance directement dans fstab avec x-systemd.requires:

//192.168.30.1/partage /srv/smb/partage/ x-systemd.requires=network-online.target,cifs credentials=/srv/smb/creds 0 0

ainsi ce montage ne se fera qu'apres que "network-online.target" soit terminé.

alternativement on peut se passer de fstab et creer un mount systemd avec le dépendance dedans. voir: https://www.freedesktop.org/software/systemd/man/systemd.mount.html
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: kgersen le 02 avril 2020 à 18:03:28
pour coller a la question la réponse complete serait d'ajouter:

x-systemd.requires=sys-devices-virtual-net-tun0.device,x-systemd.after=sys-devices-virtual-net-tun0.device

dans la ligne fstab du mount.

donc un truc du genre:

//192.168.30.1/partage /srv/smb/partage/ x-systemd.requires=sys-devices-virtual-net-tun0.device,x-systemd.after=sys-devices-virtual-net-tun0.device,,cifs credentials=/srv/smb/creds 0 0

adapter la valeur "tun0" au nom de l'interface du VPN ( ca peut varier suivant les config).

pour la trouver:
sudo systemctl status sys-devices-virtual-net*
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 03 avril 2020 à 09:34:22
Hello,

Merci pour votre aide, j'ai appliqué le fstab proposé par kgersen, mon instance ne démarre plus du tout, et j'ai pas de console rescue... lol
Je pense qu'il wait à l'infini quelque chose qui n'arrivera pas...
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 03 avril 2020 à 09:37:18
J'ai réussi à choper des logs par le serial virtuel:
[    3.768489] CIFS VFS: Error connecting to socket. Aborting operation.
[    3.771362] CIFS VFS: cifs_mount failed w/return code = -101
[FAILED] Failed to mount /srv/smb/partage.
See 'systemctl status srv-smb-partage.mount' for details.
[DEPEND] Dependency failed for Local File Systems.

Puis il passe en rescue mode
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: kgersen le 03 avril 2020 à 13:20:40
C'est normal ce mount fait partit des 'local file system' donc tout ce qui en dépend ne continue pas s'il monte pas.

ajoute "nofail" dans la ligne fstab de ce mount.

Citer
nofail

With nofail, this mount will be only wanted, not required, by local-fs.target or remote-fs.target. This means that the boot will continue even if this mount point is not mounted successfully.
(source: https://manpages.debian.org/stretch/systemd/systemd.mount.5.en.html )

un truc du genre donc:
//192.168.30.1/partage /srv/smb/partage/ x-systemd.requires=sys-devices-virtual-net-tun0.device,x-systemd.after=sys-devices-virtual-net-tun0.device,nofail,cifs credentials=/srv/smb/creds 0 0
apres si ca ne monte pas y'a un souci avec le nom de l'interface vpn peut-etre ? c'est bien 'tun0' ?
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: DamienC le 03 avril 2020 à 13:40:09
Hello Kgersen,

J'ai bien vérifié le nom de l'interface virtuelle propre au tunnel;
● sys-devices-virtual-net-vpncloud0.device - /sys/devices/virtual/net/vpncloud0
   Loaded: loaded
   Active: active (plugged) since Fri 2020-04-03 13:16:10 EEST; 1h 22min ago
   Device: /sys/devices/virtual/net/vpncloud0
Je vais retester tout à l'heure ;) merci
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: Thornhill le 03 avril 2020 à 13:46:30
un truc du genre donc:
//192.168.30.1/partage /srv/smb/partage/ x-systemd.requires=sys-devices-virtual-net-tun0.device,x-systemd.after=sys-devices-virtual-net-tun0.device,nofail,cifs credentials=/srv/smb/creds 0 0

j'ai l'impression que les arguments (cifs notamment) ne sont pas dans le bon ordre, ne serait-ce pas plutôt :

//192.168.30.1/partage /srv/smb/partage cifs  x-systemd.requires=sys-devices-virtual-net-tun0.device,x-systemd.after=sys-devices-virtual-net-tun0.device,nofail,credentials=/srv/smb/creds 0 0
Un conseil DamienC : quand tu ajoutes une entrée fstab, teste immédiatement un montage manuel avec juste le point de montage en argument (mount /srv/smb/partage) pour valider, ça permet d'éviter les mauvaises surprises au reboot.
Titre: Mount CIFS après qu'un VPN soit établi
Posté par: kgersen le 03 avril 2020 à 14:06:41
j'ai l'impression que les arguments (cifs notamment) ne sont pas dans le bon ordre, ne serait-ce pas plutôt :

ah oui bien vu, j'ai fait un *trop* rapide copier/coller  ;)