Accès extérieur en 4G avec NGINX & Freebox Delta

Bonjour,

Je suis si près du but, mais je ne trouve pas le paramétrage qu’il me manque pour y parvenir, donc désolé d’aborder ce sujet maintes fois traité :

Je n’arrive pas à accéder à HA via un smartphone sur réseau mobile (4G)

Je dispose d’une freebox V7 (Delta), avec un ndd, et j’ai suivi attentivement le super tuto : https://forum.hacf.fr/t/acces-de-l-exterieur-en-https-avec-nginx-proxy-manager/1761

Grâce à ce tuto, j’accède parfaitement à HA via HTTP et HTTPS :

  • Depuis un ordinateur local et/ou distant
  • Depuis un smartphone en Wifi uniquement sur mon réseau local.

Côté redirection sur la box, j’ai réalisé les redirections de ports suivantes :

  • WAN 443 > LAN 443 (accès HA en HTTPS)
  • WAN 81 > LAN 81 (accès NGINX en HTTPS pour la mise au point)
  • L’accès à mon freebox OS est configuré sur des ports 65xxx en HTTP et HTTPS.

Est ce au moins possible d’y arriver aujourd’hui avec cette config (les tuto sont parfois anciens, sensiblement différents, et HA évolue super vite), sans devoir passer nécessairement par la solution Nabu Casa ? Et si oui, mais qu’est ce que j’ai bien pu oublier ?

Merci par avance à ceux qui seront arrivés jusque là et qui n’auront pas été lassé de cette question. Vous faites un super taf !

/config/configuration.yaml

default_config:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.2

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Ma configuration


System Health

version core-2022.6.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.12
os_name Linux
os_version 5.15.32-v8
arch aarch64
timezone Europe/Paris
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 8.1
update_channel stable
supervisor_version supervisor-2022.05.3
agent_version 1.2.1
docker_version 20.10.14
disk_total 28.1 GB
disk_used 7.8 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Let’s Encrypt (4.12.2), File editor (5.3.3), MariaDB (2.4.0), Nginx Proxy Manager (0.11.0)
Dashboards
dashboards 1
resources 0
views 2
mode storage
Recorder
oldest_recorder_run 3 juin 2022, 07:49
current_recorder_run 8 juin 2022, 22:20
estimated_db_size 136.00 MiB
database_engine sqlite
database_version 3.34.1
___

Via le navigateur ?

Via l’application ? Ou le navigateur ?

Oui,

Mais je ne vois pas l’intérêt d’ouvrir le 81 à l’extérieur. La configuration se fait sur le réseau local. C’est ouvrir des portes qu’on oublie de fermer… :innocent:

Donc, en http://@IP:8123 (sans S et 8123) ?

Avec l’appli HA ou avec un navigateur?

Quand tu te connectes en distant, tu mets quoi dans ton navigateur,
https://@IP ou https://nom_de_domaine ?
Et est-ce que tu as un message disant que le certificat n’est pas correct?

L’appli HA est très chatouilleuse sur la « qualité » du certificat.

Quand je vois le nombre de questions qui tournent toujours autour du sujet accès distant, proxy ou pas, let’s encrypt qui ne se renouvelle pas ou pas bien, duckdns qui fait des siennes, le CGNAT et IPv6 (cf. tuto publié aujourd’hui), je me dis que les solutions alternatives comme Nabu Casa (payant) ou de VPN (wireguard) ou zerotier, c’est quand même des solutions à mettre plus en avant.
Donc, oui, par exemple, zerotier permet de se connecter en distant. Sans certificat, sans proxy, sans ports à ouvrir,…

EDIT: J’ai vu la 1ère réponse de Clemalex après avoir publié la mienne. La bonne nouvelle c’est que l’on pose les mêmes questions. On doit donc faire la même hypothèse :wink:

3 « J'aime »

J’ai pas vu de tuto sur zerotier :stuck_out_tongue_winking_eye:

1 « J'aime »

Par principe, je n’utilise que les docs officielles: addon-zerotier/DOCS.md at main · hassio-addons/addon-zerotier · GitHub ou directement ce qu’il y a sur zerotier.com

Donc, je suis cohérent avec moi-même, je n’écris pas de tuto :joy:

1 « J'aime »

Merci pour votre attention :slight_smile:

En fait, c’est sûr que les solutions payantes sont à mettre en avant dans certains cas, mais ils n’y aurait plus de défi :slight_smile:
Et puis quelque part, ca serait un peu comme me commander 2 repas au resto et en jeter un à la poubelle, parce que je n’arrivais simplement pas à lire le menu :stuck_out_tongue_winking_eye:
En bref, si le matos que j’ai à disposition peut faire le job, autant essayer de le paramétrer (et pis c’est formateur et gratifiant quand on réussi !)… J’avoue je n’y arriverai pas seul…

Bon, je n’ai pas trouvé comment faire un joli tableau, alors voilà pour bien être exhaustif

Sur un ordinateur local, via un navigateur

Sur un ordinateur distant, via un navigateur

Sur un téléphone en WIFI, via un navigateur

Sur un téléphone en WIFI, via l’application Compagnon

  • https://ndd.freeboxos.fr : Ca marche
  • http://@IP:8123 : Test impossible car l’appli Compagnon n’accepte pas ce format d’adresse.

Sur un téléphone en 4G, via un navigateur

Sur un téléphone en 4G, via l’application compagnon

Il manque cette info là. C’est (presque) la plus importante :wink:

Huum, j’ai bien précisé pourquoi pour éviter cette interrogation lors de vos investigations expertes :upside_down_face:… Je vais éviter les parenthèse alors : Pour la mise au point

Je fais mes vérifs en étant géographiquement situé sur 2 sites différents, CQFD. :yum:

Je ne sais pas trop où regarder…

  • Sur le navigateur : J’ai juste le logo home assistant « Loading data » qui tourne en boucle, et « unable to connect to Home Assistant »
  • Sur l’application Compagnon, j’ai « Connexion perdue. Reconnexion en cours »

Dans les logs de HA, je vois cependant que mon mobile essaie de s’y connecter… Un début de réponse ?

Login attempt or request with invalid authentication from pop.92-184-xxx-xxx.mobile.abo.orange.fr (92.184.xxx.xxx). (HomeAssistant/Android SM-S908B 2022.3.0-2164)
Login attempt or request with invalid authentication from pop.92-184-xxx-xxx.mobile.abo.orange.fr (92.184.xxx.xxx). (HomeAssistant/Android SM-S908B 2022.3.0-2164)
Login attempt or request with invalid authentication from pop.92-184-xxx-xxx.mobile.abo.orange.fr (92.184.xxx.xxx). (HomeAssistant/Android SM-S908B 2022.3.0-2164)

(j’ai gommé les IP, a la base, il n’y a pas de xxx)

J’ai l’impression de vous avoir posé une colle les amis :joy:.

Bon, je poursuis mes recherches.

Pour les experts réseaux / telecom…
Sachant que mon adresse en https fonctionne parfaitement…

Qu’elle est la différence entre :
Un mobile qui interroge mon adresse en https depuis son réseau 4G.
Tous les PC de mes potes, hors de mon réseau local, reliés à des box différentes, qui interrogent mon adresse ha en https ?

Il fut un temps (révolu?) ou les opérateurs en 4G ne fournissaient pas un accès 100% « neutre » d’accès à Internet. HA a besoin de websockets (véhiculés dans du HTTPS). Si Orange fait passer par un proxy ça peut mettre la grouille.
Est-ce qu’avec Free, Bouygues ou SFR en 4G, ça a été testé?

Sinon, effectivement, par rapport à ce que tu décris, pas d’idée.

Bonjour,
Je suis sur Freebox delta et je n’ai pas de soucis d’accès en 4g via ha compagnon que se soit sur android ou ios, ci dessous voici différentes captures des mes paramétrages :

  1. Sur mon compte free.fr, j’ai activé l’ipv4 fixe full-stack :
    compte freebox

  2. Une fois valider j’ai effectué une redirection de port sur l’interface de ma Freebox :
    redirection de port

  3. J’ai ensuite paramétré mes différentes appli :
    a. ios :

    b. android :
    

Une fois mes identifiants renseignés, voici le résultat sans erreur :

Bonjour Mendo.

Oui c’est normal que ca marche via cette config, car tu n’es pas en https (et c’est comme partir en vacances en laissant la porte ouverte). Tu exposes le port 8123 de ta box au monde entier dans cette config (c’est dangereux) . Je t’invite à te renseigner sur l’utilisation de certificats et le passage en https.

Ici je suis en https. Mon cas concerne l’utilisation de ha + nginx + freebox. J’avance peu sur le sujet pour le moment. J’ai modifié ma config pour bannir les ip au bout de 3 connexion en echec.
Je vois qu’il s’agit bien d’ip que orange m’attribue… Et me me demande s’il ne faut pas paramètrer une plage d’ip côté nginx ou cote du configuration.yaml de HA…

Le port 81 sert juste pour l’accès à Nginx Proxy Manager. Donc en effet aucun intérêt à être ouvert vers l’extérieur. Par contre tu dois je crois, ouvrir le port 80 si tu utilises un certificat SSL Let’s Encrypt

Hello,
comme le précise @Alindil , le port 81 est uniquement pour la configuration donc à bannir en ouverture externe (la config se fait en interne idéalement). Et le port 80 doit être en NAT vers le nginx le temps de générer un certificat Let’s encrypt (ou faire un renouvellement) … sauf si l’option DNS Challenge est utilisée (là il faut voir avec votre propre nom de domaine … un peu plus technique).
Pour la partie redirection de port, éviter le 443 car certaines box peuvent s’accaparer ce port (reconfiguration du NAT par la box au reboot par ex), le plus simple est de faire un NAT du 8123 vers le 443 du nginx (son rôle est ensuite de faire un NAT vers le 8123 du HA, et entre autre du TLS).
Enfin l’accès à ndd.freeboxos.fr depuis l’externe … et bien normal que cela ne fonctionne pas car depuis l’externe le nom de votre box (ndd.freeboxos.fr) ne peut être connu, donc pas de résolution de l’IP etc etc. Pour y accèder, NPM sera la solution en y inscrivant un NAT vers la Freebox.

Salut

En réalité le risque dans le cas du HTTP (global) c’est pas tellement la valeur du port en soi. en https potentiellement le port 8123 est tout autant exposé (sinon ça marche pas)
La différence réside dans les données qui circulent entre l’utilisateur (client) et le serveur (via le port).

  • en HTTP les données sont en clair, et interceptables
  • en HTTPS les données sont en chiffrées, et de facto non interceptables

Bonjour et merci à tous beaucoup d’avoir pris le temps de me répondre.

A priori golfvert a bien cerné le problème. La connexion 4G via orange n’est pas aussi neutre que cela. A mon avis cela peut être corrigé par un paramètrage pour autoriser la récupération du certificat (work in progress, pas trop de temps en ce moment).

Pour les débats sur les ports 80 et 81 lors de l’installation de home assistant… Vous avez raison, mais c’est un peu… hors sujet ici :grin: (c’est bien vu,et j’ai bien compris, mais ca fait pas avancer le sujet de base du coup).

Pozzy : merci pour cette réponse. Pour info, c’est free qui accorde le domaine et qui resoud le dns. Du coup l’adresse est bien accessible de l’extérieur, l’accès https fonctionne du feu de dieu via le port 443 :fire::wink:… Mais pas avec un appareil sur un réseau en 4G !

Pulpy, merci pour ces précisions sur le https !

Actuellement, je vois dans les logs que, quand je suis en wifi sur des adresses réseaux domestiques (soit avec une ip 192.x.x.x par ex) nginx marche correctement. En gros, si je vous donnais mon ndd, tout le monde pourrait se connecter sur mon Ha de chez lui.

En revanche, les adresses qd je suis connecté en 4G comporte des ip en 9x.x.x.x… Et là peut importe que je me connecte via l’appli compagnon ou mon navigateur mobile préféré, nginx me jette…

J’ai vérifié en configurant un ban de l’ip, dans le fichier de config de ha, après quelques tentatives de connexion en echec (pour avoir une liste des ip concernées dans le fichier ban) , et je vois bien que ce sont des ip fournies par orange…

C’est pour cela que je pense qu’il me manque une permission à ajouter qq part, mais je ne sais vraiment pas où renseigner cela.

Dans ton fichier de configuration, il n’y a pas d’option pour autoriser une plage ip en 9x.x.x.x.x avec un masque élargie ?

Justement… Non je n’ai rien mis de la sorte dans mon fichier de config…

J’ai pris la documentation de Ha (integrations http) et je ne comprends pas ce que je pourrais ajouter.