Serveur Web + Freebox accessible depuis l'extérieur

Bonsoir, j’écris ce post car je butte sur le même problème depuis des mois.
Je souhaite utiliser mon Raspberry en tant que serveur web accessible depuis l’extérieur.

Contexte :

  • Raspberry Pi 4 câblé en Ethernet à ma Freebox Révolution.
  • Apache2 installé.
  • Nom de domaine gratuit (du type xxx.freeboxos.fr).
  • Ports 80 et 443 ouverts qui redirige vers le Raspberry (voir photo, le port 22 est également ouvert pour le SSH).

Le problème:
Je parviens à accéder au site via le nom de domaine ou par l’adresse ip privée, seulement en étant connecté au même réseau. Depuis l’extérieur (mon iPhone en 4G par exemple), c’est impossible. Page blanche.
J’ai formaté mon Raspberry et désinstallé-réinstallé apache2 plusieurs fois (désespoir), rien y fait.

Ce qui me rend fou c’est que en passant par un Proxy (proxysite.com), la page s’affiche !!!

D’où peut venir le problème ?

Merci de vos réponses.

PS : j’utilise « pi @ xxx . freeboxos. fr » pour le SSH, tout fonctionne.

Salut, j’ai plusieurs idée de solutions, pour commencer, assure toi de ne pas forcer le HTTPS (SSL) et de faire test test sur le HTTP (sans SSL), Android et iOS sons sensible aux certificats.

Tes logs de Apache 2 sont ;

  • /var/log/apache2/access.log pour les demandes et
  • /var/log/apache2/error.log pour les erreurs du serveur.

Consulte les durant tes test; une page blanche peux être une erreur de script (bad cookie des fois). Tente un document en .html (static).

Sinon faudra faire plus de tests.

Tout d’abord merci pour ta réponse.
Pour repartir d’un environnement sain j’avais réinitialisé mon Raspberry plus tôt dans l’après-midi. « Let’s Encrypt » n’est donc plus installé, aucun protocole HTTPS n’est mis en place pour le moment.

J’ai des news : en passant par le nom de domaine gratuit de Free, la page ne charge toujours pas, et en plus je n’ai rien dans les logs.

Cependant, j’ai réussi à afficher la page sur mon iPhone en utilisant mon IP publique.

Après cette connexion, en regardant de plus près les logs, aucune erreurs, et puis dans access.log, seulement des GET, donc j’imagine que tout se passe bien.

Pourquoi le nom de domaine ne passe pas ?

Bonjour,

Je ne sais pas si tu est dans le cas, mais, il est possible que cela vienne de la Freebox:

A+

j’étais tombé sur cette discussion mais vu qu’elle date un peu je me suis dis qu’elle était obsolète.

Mais si le problème était la Freebox, pourquoi je peux accéder à la page avec l’adresse IP publique ?

Le problème doit venir du nom de domaine, il doit falloir le préciser quelque part dans la configuration de apache mais je ne sais pas où…

Si ton IP affiche la page mais pas le domaine, (Hostname), c’est clairement ce dernier qui est fautif. Faut faire un resolve pour savoir quel adresse il retourne. Il fait peut-être un « cloaking », soit un « iframe » de ton site et non une définition à une adresse d’une table DNS. Si il est nouveau, 72hr peuvent être requis pour le changement soit fait. Je fais une note plus bas à ce sujet.

Après, la configuration de Apache est basé sur les vHost, mais si tu ne touche pas à la config de Apache, c’est /var/www/html par défaut.
Pas nécessaire à ce moment la de définir un vHost, MAIS, vérifie si tu n’as pas un .htaccess qui forcerais un changement de domaine, etc…

Après ton domaine, je conçois que c’est un A Name sur un sous domaine, et que tu as une adresse IP statique, sinon l’adresse IP derrière est peut-être problématique. Tente avec un autre service (No-IP.com par exemple) ou avec un domaine gratuit (dot.tk par exemple).

Et regarde les logs Apache, parce que une page blanche = atteint un serveur, sinon tu aurai un message du navigateur pour serveur inaccessible.


Le changement d’une adresse IP sur un domaine requière un temps pour être porté au niveau de l’INternet au complet. Même que selon le type de DNS il auras des délais différents.

Habituellement, ont attributs des donnés d’un domaine par « A Name » ou « C Name ».

  • A Name : Est une adresse IP associé au hostname défini (domaine.com ou x.domaine.com → IP) (L’équivalent pour IPv6 est le AAAA Name)
  • C Name : Est un « Alias » d’une autre adresse, ou fait référence à un A Name d’un autre domaine (x.domaine.comy.dom.com)

Après tu as chacun un TTL différent (le temps qui est valide), soit une valeur qui dit au serveur pendant combien de temps il peut garder l’information valide avant de redemander de l’actualisé. Le A Name à une valeur de 72 heure (default), et celui du C Name de 1 heure (default).

Tu peux changer ces valeurs de temps via le serveur DNS du domaine, mais je pense tu n’as pas le contrôle de ton domaine.

Alors, si tu as un hostname « x.domaine.com » sur un xxx.xxx.xxx.aaa mais qui a été changer pour pointer sur le nouveau IP xxx.xxx.xxx.bbb, alors tu as entre 1hr et 72 heures de délais. Mais il y a moyen de forcer les sytèmes à actualiser et purger le cache.

  • Il n’est pas possible d’effectuer ceci derrière un proxy, car le proxy à un cache non existent sur ton appareil, faut alors voir les config de ce proxy pour sont cache.
  • Certains serveur de DNS, comme ceux de ton ISP, auront surement un rafraichissement lent, mais Google par exemple est plus rapide, tu n’as pas le contrôle sur leur rafraichissement, mais ton routeur et/ou PC peuvent en utiliser un différent
  • Tu peux vider le cache DNS de ton appareil, sous windows c’est ipconfig /flushdns en ligne de commande (et Admin sous Windows 10)

Alors il est important de savoir sur quel IP ton hostname pointe pour la machine duquel tue le fait. Le proxy peut avoir le bon IP et ton mobile le mauvais. Après il peut y avoir un problème avec la Freebox (qui m’est totalement inconnue), qui fait en sorte qui détect ton mobile sur le réseau local et tente de lui faire passer la réponse en IP local (déjà vu ça).

Bref, y’a du débug à faire. :slight_smile: Good luck.

Oups, quand tu dis ça, ça me fait penser que j’ai mal décris le problème. En effet c’est une page blanche qui tourne dans le vide, puis après un certain temps => message d’erreur du navigateur

Bonjour
Assure toi que tu n’est pas en IP partagée.
Free partage les IP entre 4 utilisateurs
1 a les ports de 1 à 16.000
2 16000 à 32000
3 32000 à 48000
4 le reste.

Après vérification sur freeboxos, j’ai en ma possession les ports de 0 à 65535

J’ai vu aussi que tu avais un dmz sur l’ adresse IP 192.168.0.35 c’est un 2 ème routeur ?

après exécution de la commande
$ sudo find / -name *.htaccess
j’ai eu comme résultats :

/usr/share/debian-reference/.htaccess
find: ‘/run/user/1000/gvfs’: Permission non accordée

j’ai donc ouvert le « /usr/share/debian-reference/.htaccess », il y a seulement une ligne :

AddCharset UTF-8 .txt

Le dmz redirige tout sur l’adresse 192.168.0.35 donc tes redirections ne servent à rien, Je n’utilise pas apache donc je ne sais pas au niveau des .htaccess, mais il me semblait que ceux-ci devaient se trouver à la racine du site.

j’ai désactivé la DMZ, aucun effet :frowning:

Salut,

Réponse en coup de vent sans avoir tout lu.
J’ai un nom de domaine qui pointe vers un YunoHost autohébergé (ports 443 et 80 , mais 80 redirige vers 443).
J’ai intégré mon certif Let’s Encrypt dans ma freebox revolution et j’accède à ma freebox par le port (exemple) 123456 en tapant (exemple) https://mondomaine.truc:1213456.
Si je tape https://mondomaine.truc, j’accède bien à mon autre système.
C’est donc possible

++

ou se trouve ton site web (avec nginx par défaut le site web se situe dans /var/www/html/ )

Je m’occuperai du https avec let’s encrypt plus tard, je souhaite d’abord régler ce problème.

mon index est stocké sur /etc/www/html

Je re-précise le problème rencontré pour éviter les malentendus.

j’arrive à accéder à mon site via mon iPhone en 4G grâce à l’IP publique du raspberry (après ouverture des ports de ma Freebox) mais je ne parviens pas à y accéder via le nom de domaine, càd l’URL, fournie par Free (du type xxx.freeboxos.fr)

Je ne sais pas comment cela se passe avec apache mais avec NGINX il faut préciser le nom dans la config de nginx /etc/nginx/sites-available/default:
server_name xx.freeboxos.fr;

Salut,

Problème de DNS ?
Sinon, comme le dit @Mik91390 « il faut préciser le nom dans la config »

nabla@cloud:~$ ls /etc/apache2/sites-available/
000-default.conf  000-default-le-ssl.conf  perso.conf  default-ssl.conf

nabla@cloud:~$ sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf

<IfModule mod_ssl.c>

<VirtualHost *:80>
        ServerName www.domaine.truc
        Redirect "/" "https://domaine.truc/"
</VirtualHost>

<VirtualHost *:443>
(...)

++

voici la configuration de ce fameux fichier 000-default.conf :

est-ce le seul qu’il faut modifier ? Dans le même dossier, voici les fichiers stockés :
rah2