Forum général.général Debuggage accès serveur en 4G

Posté par  . Licence CC By‑SA.
Étiquettes :
2
22
août
2022

Bonjour,
Je fais appel aux bonnes âmes avec des meilleurs connaissances réseau pour essayer de comprendre mon problème.

J'ai un serveur derrière ma freebox, ce serveur héberge quelques applis comme Wallabag ou MiniFlux, par exemple. J'ai un nom de domaine déposé chez Gandi, qui pointe vers la freebox et tout est pour le mieux ou presque.

Je peux accéder à mon serveur de n'importe quelle point internet, ça fonctionne sans aucun problème.

Je peux accéder à mon serveur depuis mes lignes 4G Orange quand je suis en Afrique (pour mon travail), aucun problème.

Si je suis en France, en 4G, je ne peux pas accéder à mon serveur sans devoir passer par un VPN type CloudFlare. Et je ne comprends pas pourquoi. J'ai testé avec Orange, SFR et Bouygues, rien à faire.

J'ai tenté d'analyser selon mes compétences.

En Wifi

Je trace bien la route jusqu'à mon serveur
https://www.dropbox.com/s/458o83pnpi5ioto/IMG_4607.PNG?dl=0

Mon infra répond au Ping.
https://www.dropbox.com/s/2nranm4kufxkexh/IMG_4611.PNG?dl=0

Je peux faire un Curl de la home page de wallabag.
https://www.dropbox.com/s/lw00sn3qsnuc5kt/IMG_4609.PNG?dl=0

En 4G

Je trace bien la route judqu'à mon serveur.
https://www.dropbox.com/s/eahfc0kfg7d1l2c/IMG_4608.PNG?dl=0

Pas de réponse au Ping.
https://www.dropbox.com/s/2s3jazr41h7mlyl/IMG_4612.PNG?dl=0

Echec de Curl
https://www.dropbox.com/s/fur3inlzc0ir3kv/IMG_4610.PNG?dl=0

===========

J'en suis là, et je cale côté compétences pour analyser le problème plus avant. Côté opérateur, les services support ne sont pas assez pointus pour ça, voire ne répondent même pas à ce genre de demande.

Alors si quelqu'un voit ma bouteille à la mer, et peut m'apporter quelques idées pour diagnostiquer plus avant, c'est cool.

Merci.

  • # À tout hasard...

    Posté par  (Mastodon) . Évalué à 5.

    … c'est quel port que tu utilises pour ce service ?

    En tous cas, ça fleure bon le filtrage agressif côté opérateur 4G.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: À tout hasard...

      Posté par  . Évalué à 2.

      https (443), pas d'exotisme de ce côté là, ni d'aucun autre en fait.

      Oui ça fleure les trucs louches côté opérateurs, mais en France…cela dit, je n'ai pas testé ailleurs en Europe.

      • [^] # Re: À tout hasard...

        Posté par  (Mastodon) . Évalué à 3.

        Oui c'est standard.

        La particularité que je vois dans une connexion 4G en France en tous cas, c'est qu'on est dans un réseau local (pas d'IP routable). Mais bon, ça n'empêche en rien d'accéder aux autres services bien évidemment…

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: À tout hasard...

          Posté par  . Évalué à 1.

          Fait un "curl --verbose" pour voir où ca coince.

          C'est vraiment étrange, et ca ne doit pas venir de ta connexion 4G (sinon beaucoup de personne n'arriverait pas a se connecter a des sites internet). Ca doit venir de la connexion Freebox (fibre ?). Tu utilises du port-forwarding pour transferer les connexion du port 443 vers ton serveur ? ou bien est-ce du bridge ?

          Pour ma part, j'ai a peu pres le meme montage que toi, avec une b-box de Bouygues (serveur web sur un Raspberry, nom de domaine chez Gandi, mise à jour de l'enregistrement DNS chez Gandi toutes les nuits, port forwarding de mon ip public port 8080 vers le Pi), et je n'ai jamais eu aucun prb de connexion au serveur quelque soit l'acces internet (4G, wifi, proxy d'entreprise).

          • [^] # Re: À tout hasard...

            Posté par  . Évalué à 1. Dernière modification le 23 août 2022 à 13:57.

            Ah enfin, je sens qu'on va pouvoir progresser, merci !!!

            Oui, je suis sur une Freebox v6 fibrée, avec une adresse IP full stack.

            Pour accéder à mon serveur, je passe par de la redirection de port. Tout le trafic qui arrive sur 443 est renvoyé vers le serveur qui a un reverse proxy pour aiguiller vers le bon service.

            https://www.dropbox.com/s/futhnmrjjvr84xm/IMG_16E249E917B5-1.jpeg?dl=0

            Visiblement y a un loup avec https et ssl, mais je ne sais pas quoi.

            Alors infos que j'avais oubliées de préciser : chaque service du serveur (un nas Synology avec des applis natives et autres services via Docker) a son propre certificat let's encrypt, puisqu'on ne ne peut pas faire de wildcard avec Let's Encrypt (ou alors je ne suis plus à jour).

            Je dois donc avoir une dizaine de certificats différents, pour autant de services exposés.

            PS : Aux modo : le lien "picture" semble marcher bizarrement.

            • [^] # Re: À tout hasard...

              Posté par  . Évalué à 1.

              Avec Curl, essaye de forcer IPv4 ('--ipv4') .
              Ca ne semble pas etre une erreur SSL coté Curl, en général l'erreur est plus précise (genre mauvais cert, ou expiré). Regarde si tu as des logs coté serveur web.

              • [^] # Re: À tout hasard...

                Posté par  . Évalué à 1.

                Je passe en texte, car la sortie de curl est très longue :

                  curl -I -L --verbose --ipv4 https://--mon-url--
                * Rebuilt URL to: https://--mon-url--/
                *   Trying --mon-ipv4--...
                * TCP_NODELAY set
                * Connected to --mon-url-- (--mon-ipv4--) port 443 (#0)
                * TLS 1.2 connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
                * Server certificate: --mon-url--
                * Server certificate: R3
                * Server certificate: ISRG Root X1
                > HEAD / HTTP/1.1
                > Host: --mon-url--
                > User-Agent: curl/7.54.0
                > Accept: */*
                > 
                HTTP/1.1 302 Found
                Date: Tue, 23 Aug 2022 15:38:29 GMT
                Content-Type: text/html; charset=UTF-8
                Connection: keep-alive
                Keep-Alive: timeout=20
                Set-Cookie: PHPSESSID=e9cabfb2578490a8c08393d9127bb4bb; path=/; HttpOnly
                Cache-Control: max-age=0, must-revalidate, private
                < HTTP/1.1 302 Found
                < Date: Tue, 23 Aug 2022 15:38:29 GMT
                < Content-Type: text/html; charset=UTF-8
                < Connection: keep-alive
                < Keep-Alive: timeout=20
                < Set-Cookie: PHPSESSID=e9cabfb2578490a8c08393d9127bb4bb; path=/; HttpOnly
                < Cache-Control: max-age=0, must-revalidate, private
                Location: http://--mon-url--/login
                Expires: Tue, 23 Aug 2022 15:38:29 GMT
                Strict-Transport-Security: max-age=15768000; includeSubdomains; preload
                
                < Location: http://--mon-url--/login
                < Expires: Tue, 23 Aug 2022 15:38:29 GMT
                < Strict-Transport-Security: max-age=15768000; includeSubdomains; preload
                < 
                * Connection #0 to host --mon-url-- left intact
                * Issue another request to this URL: 'http://--mon-url--/login'
                *   Trying --mon-ipv4--...
                * TCP_NODELAY set
                * Connected to --mon-url-- (--mon-ipv4--) port 80 (#1)
                > HEAD /login HTTP/1.1
                > Host: --mon-url--
                > User-Agent: curl/7.54.0
                > Accept: */*
                > 
                HTTP/1.1 404 Not Found
                Date: Tue, 23 Aug 2022 15:38:29 GMT
                Content-Type: text/html
                Content-Length: 3212
                Connection: keep-alive
                Keep-Alive: timeout=20
                Vary: Accept-Encoding
                ETag: "608a73aa-c8c"
                
                < HTTP/1.1 404 Not Found
                < Date: Tue, 23 Aug 2022 15:38:29 GMT
                < Content-Type: text/html
                < Content-Length: 3212
                < Connection: keep-alive
                < Keep-Alive: timeout=20
                < Vary: Accept-Encoding
                < ETag: "608a73aa-c8c"
                < 
                * Connection #1 to host --mon-url-- left intact
                

                Tout ça, c'est du Chinois pour moi.

                • [^] # Re: À tout hasard...

                  Posté par  . Évalué à 3.

                  Mmmmoui, je vois, je vois …

                  A moins que tu te sois trompé lors des remplacements par "--mon-url--", il y'a des info interessantes dans la trace qui semblent indiquer un prb de configuration du serveur web.

                  • Tu demandes au serveur "https://--mon-url--"
                  • Il réponds "302 - redirige toi vers http://--mon-url--/login" . Tu noteras le http sans le S.
                  • Tu demandes alors "http://--mon-url--/login"
                  • Le serveur te réponds "404 - connait pas"

                  Essaye de demander directement "https://--mon-url--/login" (avec le S)

                  • [^] # Re: À tout hasard...

                    Posté par  . Évalué à 1. Dernière modification le 24 août 2022 à 08:37.

                    Merci, mais alors 3 questions :
                    - pourquoi ça fonctionne parfaitement une fois le VPN de Cloudflare activé (qui change notamment le DNS du téléphone par 1.1.1.1, et qui n'est PAS un VPN vers mon LAN) ?
                    - pourquoi ça marche depuis mes lignes Orange africaines sans passer par un VPN ?
                    - pourquoi ça marche une fois connecté à une box ?

                    Bonus, la même trace sur Miniflux :
                    ```
                    curl -I -L --verbose --ipv4 https://--mon-url--
                    * Rebuilt URL to: https://--mon-url--/
                    * Trying --mon-ip--…
                    * TCP_NODELAY set
                    * Connected to --mon-url--(--mon-ip--) port 443 (#0)
                    * TLS 1.2 connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
                    * Server certificate: --mon-url--
                    * Server certificate: R3
                    * Server certificate: ISRG Root X1

                    HEAD / HTTP/1.1
                    Host: --mon-url--
                    User-Agent: curl/7.54.0
                    Accept: /

                    HTTP/1.1 405 Method Not Allowed
                    Date: Wed, 24 Aug 2022 06:26:41 GMT
                    Connection: keep-alive
                    Keep-Alive: timeout=20
                    Strict-Transport-Security: max-age=15768000; includeSubdomains; preload

                    < HTTP/1.1 405 Method Not Allowed
                    < Date: Wed, 24 Aug 2022 06:26:41 GMT
                    < Connection: keep-alive
                    < Keep-Alive: timeout=20
                    < Strict-Transport-Security: max-age=15768000; includeSubdomains; preload
                    <
                    * Connection #0 to host --mon-url--left intact
                    ```Merci de ton aide en tous cas !

                    EDIT : un curl sur https://--mon-url--/login renvoie un code 200 (donc tout semble ok), mais si je demande explicitement cette url sur un navigateur, ça ne fonctionne toujours pas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.