[Résolu] Utiliser l'IP locale quand on est sur le réseau local (nextcloud, webdav, davfs2)

J’ai un yunohost installé sur le disque dur USB d’un Pi sur mon réseau local. Nextcloud tourne dessus et mon plan c’est de déposer toute ma musique dessus (~40Go) et d’y accéder depuis mon ordi en webdav via un dossier monté en lecture seule.

Après avoir installé davfs2 et édité les fichiers /etc/fstab et ~/.davfs2/secrets avec mon nom de domaine, tout ça fonctionne très bien. Je peux écouter ma musique depuis mon ordi, alors que les fichiers sont sur le Pi.

Le hic, c’est que tout ça passe par internet, alors que tout est local. J’aimerais faire en sorte que si je suis sur le réseau local, les requêtes ne passent pas par internet. J’ai essayé en ajoutant l’IP locale dans /etc/hosts (192.168.0.236 mon.domaine.com) sur mon ordi mais le webdav a cessé de fonctionner (même le client nextcloud a cessé de fonctionner il me semble).

Comment faire?
Merci d’avance

Bon ben ça fonctionne en fait, je ne comprends pas ce qui s’est passé.
Pour ceux que ça intéresse, voici comment procéder:

Pour le montage de dossier webdav, suivez le mode d’emploi sur https://docs.nextcloud.com/server/12/user_manual/files/access_webdav.html#creating-webdav-mounts-on-the-linux-command-line

Pour le mettre en lecture seule, utilisez ro au lieu de rw dans la commande de fstab. Par exemple:
mon.domaine.com/nextcloud/remote.php/dav/files/utilisateur/ /home/utilisateurOrdi/nextcloudMirror davfs user,ro,noauto 0 0

Si vous êtes en réseau local, ajoutez cette ligne dans /etc/hosts:
192.168.0.236 mon.domaine.com

(remplacez 192.168.0.236 par l’IP locale de votre yunohost et mon.domaine.com par le vôtre.)

Qu’est ce qui te fait dire ça? Sur le réseau local, derrière ma Freebox, ma Freebox sait que si une machine local demande l’IP publique correspondant à Yunohost, elle doit rediriger le trafic vers mon Yunohost. OK la Freebox fait une redirection NAT en interne, mais ça “ne sort” pas sur Internet.

Pour le vérifier, fait depuis ton réseau local un
“traceroute tondomaine.xx” et tu verras que tu ne sors pas du routeur qu’est la Freebox. :wink:

Sinon, ta solution marche mais si ta machine sors du réseau local, faut penser à enlever la ligne de /etc/hosts.

2 Likes

merci pour la réponse, je ne savais pas comment vérifier ça.

Si je retire la ligne dans /etc/hosts et lance traceroute mon.domaine.net, l’IP qui est affichée est mon IP ‘globale’, pas celle en 192.168.0.236.

Mon router ne me permet pas de faire cette manip: https://yunohost.org/#/dns_local_network_fr malheureusement.

1 Like

Normal, car on prend les IP publique des routeur. La redirection NAT ne redirige pas le traceroute (le traceroute, c’est une série de ping vers les différents routeurs jusqu’au dernier qui mène à ta machine).

Je complète et je remettrai tout ça dans un billet de blog

Sur le réseau local, derrière ma Freebox, ma Freebox sait que si une machine local demande l’IP publique correspondant à Yunohost, elle doit rediriger le trafic vers mon Yunohost. La Freebox fait une redirection NAT en interne, mais ça “ne sort” pas sur Internet.

Est-ce qu’on perd du temps?
Si je fais
ping IP locale, j’ai

64 bytes from IP Locale: icmp_seq=1 ttl=64 time=0.303 ms
64 bytes from IP Locale: icmp_seq=2 ttl=64 time=0.314 ms
64 bytes from IP Locale: icmp_seq=3 ttl=64 time=0.306 ms
64 bytes from IP Locale: icmp_seq=4 ttl=64 time=0.273 ms
64 bytes from IP Locale: icmp_seq=5 ttl=64 time=0.269 ms

Soit 289 ms de moyenne.

64 bytes from IP Publique: icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from IP Publique: icmp_seq=2 ttl=64 time=0.488 ms
64 bytes from IP Publique: icmp_seq=3 ttl=64 time=0.488 ms
64 bytes from IP Publique: icmp_seq=4 ttl=64 time=0.253 ms


Soit 370 ms de moyenne.

C’est effectivement “un peu plus lent” (vu qu’on fait le routage et la redirection NAT avec l’IP publique), mais ce n’est pas suffisament sensible.

1 Like

Intéressant. Ça voudrait dire que je n’ai besoin ni d’éditer /etc/hosts ni d’un nouveau routeur?

En effet, avec ping (x 10) (et sans /etc/hosts ), les requêtes avec IP locale, IP publique ou nom de domaine sont toutes dans un mouchoir de poche. Ça a donc l’air d’être le cas que la redirection se fasse déjà toute seule, c’était juste une idée fausse de ma part.

Je ne suis pas sur freebox (ni en France d’ailleurs). Je vais essayer de trouver de la doc sur mon routeur pour vérifier que c’est bien le cas.

1 Like

Si tu as bien associé ton IP publique à ton nom de domaine, que ton routeur / modem ADSL-fibre est bien configuré (je parle de Freebox car c’est ce que j’ai, à toi d’adapter à ta configuration) et que ça marche, test un

“traceroute tondomaine.xx” et tu verras que tu n’as une réponse, avec l’IP de ton accès Internet. Si c’est bon, tout marche comme tu veux (ça va pas “sur Internet”).

1 Like

En effet, c’est bien le cas: une seule réponse.

Excellent, merci bien! J’ai donc passé deux jours à résoudre un problème qui n’existait pas :slight_smile: Heureusement que c’est les vacances.

Merci encore!

1 Like

Merci à toi, ça permet de faire un tuto / explication qui sera utile à d’autres qui se poseront la question.(Moi je m’étais jamais posé la question et j’ai la réponse comme ça ;))

Bonjour,

Je ne suis pas sûr que le problème n’existe pas vraiment.
Pour ma part (livebox avec un routeur derrière) j’ai du utilisé l’option DNSMasq de mon routeur pour pouvoir accéder à mon serveur avec le nom de domaine.
Sans ça, je crois que je tombais sur la console d’admin de la box car l’ip publique redirige là-dessus et la livebox ne sais pas gérer ce cas.

Pour info donc avec un routeur fonctionnant sur dd-wrt il faut configurer de la sorte:

DNSMasq Enabled
Additional DNSMask options
     address=/my_domain_name.org/192.168.x.y

avec my_domain_name.org = le nom de domaine et 192.168.x.y = l’IP du serveur yunohost sur le LAN

Dans tous les cas ça ne passe pas vraiment par internet non à part si on décide d’utiliser un VPN extérieur par exemple pour réellement tester l’accès depuis l’extérieur.