Bonjour,
Je souhaite accéder à un équipement qui a une interface web.
Lorsque je suis sur le réseau local tout fonctionne bien : http://1.2.3.4/ et j'ai l'interface du bouzin.
Lorsque je suis à l'extérieur, je passe par une redirection PNAT d'un modem/routeur ADSL. Je dirige un navigateur web vers http://example.com:1234 que le PNAT traduit par 1.2.3.4:80
Malheureusement cet équipement effectue une redirection HTTP en précisant son adresse IP locale. Dès la première requête le navigateur est redirigé vers http://1.2.3.4/html/index.html?etc
Du coup ça ne fonctionne pas derrière un PNAT.
L'équipement ne gère pas l'IPv6.
Sur le site de l'équipement il n'y a qu'un Linux embarqué (BusyBox avec ssh, netfilter, netcat. Pas possible d'installer quoi que ce soit).
L'équipement effectue la redirection pour toutes les requêtes, donc pas possible d'obtenir quoi que ce soit depuis l'extérieur même si on change manuellement l'adresse dans la barre d'adresse du navigateur.
La seule solution que je vois est de mettre en place un VPN de type pont (couche 2 du modèle OSI), mais cela m'oblige à ajouter un équipement sur place et à maintenir un morceau d'infrastructure pour ça.
Quitte à avoir un Raspberry sur place, autant utilise Lynx via SSH ou Firefox via VNC, ce sera beaucoup plus simple.
Vous voyez une autre solution ?
# Un reverse proxy
Posté par NeoX . Évalué à 3.
Si tu met un reverse proxy devant l'équipement, Tu peux réécrire la réponse de l'équipement pour remettre le port 1234 dans l'URL.
Je crois que haproxy fait ça très bien.
[^] # Re: Un reverse proxy
Posté par voxdemonix . Évalué à 3. Dernière modification le 11 août 2019 à 19:43.
Le problème semble plus la redirection vers une IP interne au LAN.
Peut-être utiliser HaProxy comme mentionné par NeoX, mais en tant que Frontend. Ça signifie que ton NAT redirigera vers ton HaProxy qui lui jouera l'intermédiaire entre ton équipement (qui sera le Backend) et toi.
HaProxy permet de "fake" le nom de domaine envoyé au Backend il me semble (infos), ceci afin que ton équipement n'envoie pas la redirection HTTP en pensant que tu le contactes bien depuis 1.2.3.4.
Un autre avantage, si ton équipement n'est accessible qu'en HTTP, tu pourras tout de même utiliser HTTPS depuis ton HaProxy : ainsi la liaison entre toi et HaProxy sera chiffrées (mais pas sur ton LAN entre ton HaProxy et ton équipement).
[^] # Re: Un reverse proxy
Posté par voxdemonix . Évalué à 3. Dernière modification le 11 août 2019 à 20:13.
Cette config basique mono serveur devrait faire le boulot.
La ligne importante c'est
http-request set-header Host "1.2.3.4"
[^] # Re: Un reverse proxy
Posté par Kerro . Évalué à 1.
Si je mets un reverse proxy, alors je dois ajouter un ordinateur sur le site distant. Donc autant mettre un bête Lynx ou Firefox, c'est bien plus facile à configurer (en gros il n'y a rien à faire).
Si le reverse proxy est à l'extérieur du site, ça ne fonctionne pas puisque l'équipement redirige sans cesse vers son IP locale.
[^] # Re: Un reverse proxy
Posté par Kerro . Évalué à 2.
J'ai oublié la suite : donc toutes les requêtes HTTP venant de l'extérieur ont comme réponse une redirection, il n'est pas possible d'obtenir autre chose tant qu'on ne fait pas les requêtes directement vers http://1.2.3.4/etc
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Un reverse proxy
Posté par Kerro . Évalué à 3. Dernière modification le 12 août 2019 à 13:31.
L'équipement a atteindre n'est pas équipé de BusyBox (enfin, je n'en sais rien, il a juste une interface web). C'est un autre truc sur le même site qui a BusyBox.
Cet autre truc est un Raspberry Pi 3B+ avec OpenMPTCProuter (en gros, pas modifiable sans y passer des heures. Et il faudra refaire la cross-compilation lors de chaque mise à jour).
Il y a probablement moyen d'utiliser un binaire de Lynx sans dépendances et de le mettre dans /tmp. Cela nécessite juste de faire un scp ou wget lorsque j'en ai besoin, cela ne coûte donc qu'un copié-collé d'une ligne de commande.
# Greasemonkey
Posté par ted (site web personnel) . Évalué à 2.
Est ce que ce sont les liens dans l'interface web qui utilisent l'IP? Si c'est ça, peut être que tu peux bidouiller avec un plugin dans Firefox, du genre greasemonkey, pour remplacer http://1.2.3.4 par http://example.com:1234 à la volée dans le code HTML de la page (pour les liens et les formulaires).
Un LUG en Lorraine : https://enunclic-cappel.fr
[^] # Re: ModHeader
Posté par voxdemonix . Évalué à 4. Dernière modification le 11 août 2019 à 23:43.
ModHeader et ajouter comme Header Host 1.2.3.4 pour son domaine perso.
Ne fonctionne que s'il n'y a pas de check de l'IP ni de ré-écriture des URL.
[^] # Re: ModHeader
Posté par Kerro . Évalué à 3.
Tout simplement.
Testé à l'instant, ça fonctionne a priori dans tous les recoins de l'interface web.
[^] # Re: ModHeader
Posté par deuzene (site web personnel) . Évalué à 3.
Ou l'utiliser avec un autre profil/navigateur dédié.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: Greasemonkey
Posté par Kerro . Évalué à 3.
Hélas non, c'est une redirection HTTP.
Comme indiqué plus haut, la seule et unique réponse qu'on a depuis l'extérieur est donc forcément une redirection.
# Configurer la UI de l'équipement.
Posté par LaBienPensanceMaTuer . Évalué à 2.
Vu que ton équipement semble être animé de soft opensource, tu as peut être moyen de modifier le comportement de l'appli web qui pose problème pour qu'elle fasse une redirection vers 1/ une IP configurable ou 2/ vers le contenu du header Host: …
# Re-Ignorer une redirection HTTP
Posté par Mathieu10 . Évalué à -1.
Ignorer une redirection HTTP ? ça c'est de l'info! please, j'aimerai aussi savoir :)
# Modifier le header envoyé par le navigateur
Posté par gremous . Évalué à 2. Dernière modification le 12 août 2019 à 13:50.
Si j'ai bien compris il suffit de modifier le header envoyé par ton navigateur.
Le champ "Host" doit toujours sortir avec 1.2.3.4:80 alors que sans modification il sort avec example.com:1234
Par contre je ne sais pas comment faire. C'est avec une extension du navigateur ou avec un proxy.
Edit : voxdemonix a déjà fait la même réponse, je n'avais pas vu.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.