[Tuto] Résoudre le problème de hairpinning Orange avec le DHCP/DNS de YunoHost

fr

#8

Mhhhhh :thinking: je viens justement de vérifier et non, pas d’erreurs lorsque je tap directement la commande. Peut être y a-t-il eu souci avec mon code pour récupérer l’ip (problème de connexion avec ma requête curl sur checkip.dyndns.org)?

Par souci d’écologie, il m’arrive d’éteindre mon raspberry pi et ma box la nuit, il suffit que quand je redémarre mon raspberry pi, la box n’ait pas encore fini de charger pour que le code ne marche plus, j’ai rajouter “sleep 5m;” avant pour être sur que la connexion internet soit active lorsque la commande est lancée. Je n’ai plus reçu l’email, mais si j’ai de nouveau le souci, je préviendrai ici :wink:


#9

Dac ça marche.

De mon coté je viens (enfin) d’intégrer ta méthode à mon YunoHost, voici mon script fake_loopback.sh au cas ou :

#!/usr/bin/env bash

public_ip=`dig +short myip.opendns.com @resolver1.opendns.com`
/sbin/iptables -t nat -A OUTPUT -d "$public_ip" -j DNAT --to-destination 192.168.1.2

et mon entrée crontab (bien faire sudo crontab -e et pas crontab -e pour être sûr d’étirer le crontab de root et pas de l’user)

@reboot /home/admin/fake_loopback.sh

#10

Bonsoir à tous,

Petit up pour signaler que j’ai amélioré le tutoriel en ajoutant un script permettant de vérifier si l’IP publique change et ainsi modifier la redirection d’IP de ma règle Iptables. Tout ça pour faire fonctionner le renouvellement automatique des certificats Let’s Encrypt par YunoHost avec le problème de loopback de la Livebox d’Orange.

Si un dev YunoHost passe par là ; je me demande à quel point on pourrait améliorer/populariser cette technique car je pense que beaucoup de personnes sont victime de ce problème non ? Et personnellement je trouve assez chiant le fait que sans ça le certificat ne se renouvelle pas automatiquement.

Merci d’avance :wink:


#11

Hmoui en effet, en regardant en diagonale ça a l’air séduisant … d’un autre côté, ça reste un peu “touchy” dans le sens où désactiver le DHCP de sa livebox, ça veut dire que l’on devient dépendant du serveur pour gérer le DHCP, et que si jamais il arrive un problème dessus ou que la personne laisse tomber l’autohebergement, il faut qu’elle pense a réactiver ce paramètre …

Mais on pourrait tout de même imaginer avoir un tuto “officiel” dans la doc, ou inclure un mécanisme pour configurer dnsmasq automatiquement dans ce mode.


#12

Bonsoir Aleks,

Merci pour ton retour.

Oui c’est certain que tout le monde ne va pas désactiver le DHCP de sa box, et effectivement si YunoHost tombe alors plus d’internet pour aucun appareil du réseau local … (obligé de passer en IP fixe sur son appareil sans oublier d’ajouter un DNS pour s’en sortir …).

Par contre il y a un point que je ne comprends pas : pourquoi lors d’une demande d’un certificat Let’s Encrypt il y a ce test d’accès par l’IP publique qui est fait par YunoHost ? Je veux dire ; le problème de hairpinning n’empêche en rien de demander un certificat non ?
Ou bien c’est simplement un test pour s’assurer que le serveur YNH est opérationnel avant de demander un certificat “pour rien” ?


#13

Oui :wink:


#14

Hello,

Joli partage et belle initiative, GG !

martoni


#15

Merci pour le tuto! Je suis en train de te lire avec beaucoup d’intérêt car je suis aussi chez Orange (que j’ai un peu moins envie de saluer par contre…).

J’en suis à l’étape:

Si j’ai bien compris on peut demander à une machine cliente de se voir attribuer une ip locale par le nouveau serveur et pas par la box (dont le serveur est toujours actif à ce moment de ton tuto)?

Question de débutant donc: comment spécifier à un client quel serveur contacter lors du renouvellement de ce bail? As-tu un exemple de commande (gnu/linux) en tête ou une doc à suggérer?

Merci beaucoup encore en tout cas d’avoir pris le temps de rédiger ce post!


#16

Bonjour Tufek et merci pour ton message :wink:

Alors oui, tu peux normalement spécifier à une machine l’adresse IP du serveur DHCP à contacter afin de se voir attribuer une adresse IP.

Cependant je ne connais malheureusement pas la procédure sous un Linux car j’ai effectué le test depuis mon Mac.

Mais sinon cette étape ne sert vraiment pas à grand chose, car logiquement tu verras vite si ton serveur DHCP YunoHost fonctionne une fois que tu auras désactivé celui de la LiveBox :wink:

Si besoin n’hésite pas !!

Edit: Pour voir si quelque chose se passe du coté de ton DNSmasq n’hésites pas à garder un oeil sur tes logs avec cette commande : sudo tail -f /var/log/syslog|grep dnsmasq.

Par exemple voici ce que j’ai :

Dec 19 19:25:22 dnsmasq-dhcp[717]: DHCPREQUEST(enp0s31f6) 192.168.1.125 ac:1f:74:88:c2:**
Dec 19 19:25:22 dnsmasq-dhcp[717]: DHCPACK(enp0s31f6) 192.168.1.125 ac:1f:74:88:c2:** iPhonedeSylvain
Dec 19 19:28:10 dnsmasq-dhcp[717]: DHCPREQUEST(enp0s31f6) 192.168.1.144 c4:b3:01:d6:3d:**
Dec 19 19:28:10 dnsmasq-dhcp[717]: DHCPACK(enp0s31f6) 192.168.1.144 c4:b3:01:d6:3d:** MBP-sylvain

#17

Ah yes merci pour la commande, j’y avais pas pensé…

Comme je ne suis pas chez moi, je comptais vérifier le fonctionnement du dhcp plus tard, par contre, pour une raison que j’ignore encore, je suis parvenu à renouveler mon certificat après ton étape 5 avec un

sudo yunohost domain cert-install mon.domaine.me --force --no-checks

(sans conviction puisque ça ne fonctionnait pas jusqu’à présent) en ssh derrière une autre box, sans désactiver le dhcp de la box du coup :thinking:

Je trouve ça encore un peu obscur, mais si jamais ça pouvait fonctionner chez quelqu’un d’autre de façon plus ou moins hasardeuse je préfère laisser ça là!


#18

Bonjour,
tout d’abord, merci pour le partage de ce tuto. Récemment fibré chez orange, je me suis retrouvé confronté à ce problème… j’ai donc suivi ce tuto pas à pas… malheureusement, sans réussite…
En re-fouinant sur le forum, je me suis rappelé que pi-hole faisait la même chose… avec une interface graphique en plus… je me suis ré-empressé de ré-installer cette appli et en effet… plus problème de hairpinning…
Sachant que tu as mis ce tuto en place, je me suis demandé du coup quel pouvait être le loup avec pi-hole?

merci de ta/tes réponses.


#19

Bonjour,

Je ne connaissais pas du tout le projet pi-hole et je viens de regarder tout ça ; le truc à l’air bien sympathique !

Si je comprends bien Pi-hole n’est rien de plus qu’un petit serveur DNS qui contient une blacklist des IPs utilisées pour de la PUB et Pi-hole, à la volée, ne résout pas les domaines utilisés par les PUB.

Au final le résultat est le même qu’avec le tutoriel que je propose à l’exception de la fonctionnalité “anti-pub” ; je n’ai pas regardé en détail mais j’imagine que Pi-hole fait office de serveur DHCP/DNS.

Infos que j’ai trouvé : https://www.minimachines.net/actu/pi-hole-68134

Donc logiquement : Pi-hole ou bien DNSmasq directement sur le serveur YNH devrait donner les memes résultats pour le problème de hairpinning :wink:


#20

Hello,
de ce que j’en ai compris c’est exactement ça… avec une interface graphique en plus ce qui est grandement NAF (le pendant de WAF mais pour les noob…:rofl:)
Et effectivement, plus de problème de hairpinning depuis que je l’ai mis en place ce matin.
EDIT: Pi-hole qui est dans les dépots YNH


#21

Il y a aussi une autre solution : prendre un vieil ordi avec deux cartes réseau et y installer un pfsense ou opensense. Après configuration du routeur firewall A LA PLACE de la box orange, vos problèmes seront résolus. Plus de box, rien que le routeur branché sur le WAN… elle est pas belle la vie ?


#22

Bonjour, merci pour ce tuto génialissime !
Je ne suis pas encore utilisateur de Yunohost car le problème de hairpinning m’avait dissuadé d’utiliser une machine en tant que serveur auquel l’accès serait impossible ou du moins compliqué depuis le réseau local…
Après avoir lu ce topic, j’ai tout de même quelques questions :

  • Si le serveur tombe en panne, n’y a-t-il pas un risque de ne plus avoir accès à internet? Comment faire dans ce cas?
  • Sinon, tu avais brièvement mentionné Pihole… As tu un tuto avec ce software qui permette de résoudre le problème de hairpinning, tout en coupant les pubs?
    Sinon merci encore !

#23

Hello Jungack,

Alors pour répondre à tes questions :

  • En effet, si le serveur tombe en panne il y a un risque que tes autres machines sur ton réseau local n’est plus d’accès internet car c’est ton serveur qui fait office de resolver DNS. La solution temporaire est alors d’activer à nouveau le DHCP de la LiveBox et de renouveler l’IP de tes machines afin que la LiveBox délivre une IP et que ta machine utilise les DNS de la live box. Autre solution : Sur chaque machine tu donnes manuellement l’IP du serveur DNS à utiliser.
    Bon après logiquement ton serveur YNH n’est pas sensé tomber en panne. Personnellement ça fait déjà plus d’un an que je tourne comme ça chez moi et mon serveur YNH tourne H24 sans problème.
  • Pour Pihole je ne peux pas t’aider car je ne l’ai jamais utilisé. C’est fidoboulettes qui avait mentionné ce soft :wink:

#24

Merci beaucoup pour ta réponse ! Il ne reste plus qu’à mettre tout ça en place !


#25

J’ai eu le même souci avec le script. J’ai une ipv6, et

dig +short myip.opendns.com @resolver1.opendns.com

ne fonctionne pas, il faut préciser “-4”:

dig +short myip.opendns.com @resolver1.opendns.com -4

pour l’ipv4 (idéalement, il faudrait aussi ajouter cette règle en ipv6, je ne sais pas s’il y a aussi des soucis d’hairpinning? D’après mes tests, on dirait que non).
Peut-être retourner une erreur plus explicite si l’on n’arrive pas à récupérer l’adresse ip?


#26

Ah oui c’est possible que pour ceux qui ont l’IPv6 d’activer ça pose problème :-/

Aucune idée concernant le hairpinning en IPv6, je n’ai pas eu le temps de tester.

Mais sinon oui, il faudrait que j’ajoute dans le script un test concernant le retour de la commande qui récupère l’IP. Peut être un test sur le code retour de la commande et/ou sur le format retourner (un genre de regex pour vérifier que c’est bien une IP).


#27

Bonjour,

J’ai eu également un souci de renouvellement de certificat, la box de mon provider internet ne supporte visiblement pas l’hairpinning en ipv4 mais bien en ipv6 ().

Ajouter un test en ipv6 en plus de celui en ipv4 pourrait-il être suffisant s’il était ajouté à cette fonction: https://github.com/ABLD/yunohost-ubuntu/blob/933c56bb7ec3d0f9a5fd54b1f360ff4ab26dfbaa/src/yunohost/certificate.py#L815 qu’en pensez-vous ?

=> get_public_ip() renvoie par défaut l’ipv4

Merci