Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-26 Par sujet sr
Bon, le client a trouvé vers 19h, ça venait de chez lui et c'était assez 
étrange en fait... Une trame GET mal formée avec un espace au lieu d'un 
%20 entre la fin de l'URL et le http/1.1 aurait suffit à pourrir la 
chose ainsi... Je n'ai pas d'opinion mais je vous remercie beaucoup de 
m'avoir aidé à affiner le truc et à déterminer que, vraisemblablement, 
le pb ne venait pas de notre coté... L'essentiel étant d'aller de l'avant !


Bonne fêtes renouvelées...

--
Stéphane Rivière
Ile d'Oléron - France


---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-26 Par sujet Stéphane Rivière

Hello Richard (et tous) !


Tu peux remplacer les urls par les IP? Au cas ou…


Déjà fait. Aucun changement.


Réduit ton MTU à 1300 . Chez Bouygues il y avait des problèmes de fragmentation 
sur les VPN et un client avait pas mal joué sur la MTU


Fait ce matin. Coté serveur et client. Aucun changement.

tun-mtu 1340
mssfix 1300

Ici c'est du SFR... Si je connecte un FF au routeur 4G la (toute petite) 
trame de test passe crème, donc j'ai du mal à taper sur le routeur 
4G/VPN et le réseau associé (mais bon, j'affirme rien).


FF : 172.31.0.2 - - [26/Dec/2023:12:50:24 +0100] "GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
Gecko/20100101 Firefox/103.0"


Carte indus : Émision, gros timeout puis
172.31.0.2 - - [26/Dec/2023:12:50:35 +0100] "GET 
/23122612495008512303000F062C3031323353616C7574206C657320706F746573373839AF62? 
HTTP/1.1" 408 0 "-" "-"


La balle est dans le camp du client ;>

*MERCI à tous ceux qui m'ont aidé, en public ou privé !!!*

*Et bonnes fêtes à toutes et tous :)*

--
Stéphane Rivière
Ile d'Oléron - France

---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-25 Par sujet Richard Klein
Bonjour,

Bonne fêtes à tous.
Tu peux remplacer les urls par les IP? Au cas ou…
Réduit ton MTU à 1300 . Chez Bouygues il y avait des problèmes de fragmentation 
sur les VPN et un client avait pas mal joué sur la MTU

Richard

Envoyé de mon iPhone

> Le 25 déc. 2023 à 11:50, Stéphane Rivière  a écrit :
> 
> Bonjour Thomas,
> Entre temps, sur la suggestion de Xavier, qui avait vu comme toi d'aller 
> creuser dans les coins, j'ai bien vérifié les MTU partout (qui sont tous à 
> 1500 sauf un à 1460) et connecté un FF sur le routeur 4G pour envoyer une 
> trame et vérifier que tout allait bien.
> Donc il est probable que le pb se situe sur la carte indus. J'ai maté (en 
> diagonale et à coup de Ctrl-F) les 800 pages de doc de la stack TCP/IP 
> Microchip et pêché quelques indications au client, qu'il lira demain, afin de 
> vérifier certains #defines...
>> Ce qui est bizarre c'est que la requête HTTP est envoyée à moitié dans le 
>> paquet 6 (81 octets) et à moitié dans le paquet 8 (44 octets) alors que la 
>> carte indus annonce un MSS de 536. La carte aurait pu mettre toutes les 
>> données dans un seul paquet.
> 
> Ah je l'avais pas vu ça, tu as raison...
> 
>> C'est peut-être une piste...
> 
> Certainement !
> 
> Merci pour ton aide aussi :)
> 
> -- 
> Stéphane Rivière
> Ile d'Oléron - France
> 
> ---
> Liste de diffusion du FRnOG
> http://www.frnog.org/


---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-25 Par sujet Stéphane Rivière

Bonjour Thomas,
Entre temps, sur la suggestion de Xavier, qui avait vu comme toi d'aller 
creuser dans les coins, j'ai bien vérifié les MTU partout (qui sont tous 
à 1500 sauf un à 1460) et connecté un FF sur le routeur 4G pour envoyer 
une trame et vérifier que tout allait bien.
Donc il est probable que le pb se situe sur la carte indus. J'ai maté 
(en diagonale et à coup de Ctrl-F) les 800 pages de doc de la stack 
TCP/IP Microchip et pêché quelques indications au client, qu'il lira 
demain, afin de vérifier certains #defines...

Ce qui est bizarre c'est que la requête HTTP est envoyée à moitié dans le 
paquet 6 (81 octets) et à moitié dans le paquet 8 (44 octets) alors que la 
carte indus annonce un MSS de 536. La carte aurait pu mettre toutes les données 
dans un seul paquet.


Ah je l'avais pas vu ça, tu as raison...


C'est peut-être une piste...


Certainement !

Merci pour ton aide aussi :)

--
Stéphane Rivière
Ile d'Oléron - France

---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-25 Par sujet Stéphane Rivière

Bonjour Léo,

Pour confirmer la forme de l'installation :

* On a des cartes industrielles (C) (basées sur microprocesseur PIC) 
raccordées à un modem 4G. Ces cartes ont un client HTTP.

oui


* On a un serveur HTTP (S) codé en Ada (ailleurs que sur les cartes).

Sur l'instance de test H


* On a un reverse-proxy HTTP (P) Nginx (ailleurs que sur les cartes).

Sur l'instance de test H


* On a une machine (H) quelque-part sur le VPN, qui est capable de 
faire tourner tshark.

Sur l'instance de test H


* Tout ce beau monde communique sur un VPN basé sur OpenVPN.

oui


Le client HTTP sur les cartes réalisent des requêtes HTTP vers le 
reverse-proxy HTTP, on a donc le schéma "réseau" suivant :


 |=[ Tunnel OpenVPN ]=|
[Client HTTP] ---> [Reverse-proxy 
HTTP]*> Serveur HTTP basique GET/POST*

 ||

Ta première capture tshark a été réalisée sur la machine H avec 
Firefox en guise de client, et a écouté l'interface OpenVPN.

oui


Ta deuxième capture tshark a aussi été réalisée sur la machine H, mais 
en écoute seulement, aussi sur l'interface OpenVPN.

oui


J'ai extrapolé des trucs, est-ce que c'est quand même bon ?

T'as tout compris
Pour moi, sans pouvoir voir les données, la deuxième capture ne révèle 
pas de problème au niveau TCP, si ce n'est l'étrange fragmentation, 
mais ce n'est pas si surprenant pour de l'embarqué. À ce stade, je 
dirais que le problème se trouve au niveau du payload TCP, il faudrait 
que tu affiches les données pour en savoir plus. En tous cas, du SYN 
au FIN, la communication semble normale.


Je ne connais pas tshark, et je ne comprend pas d'où vient l'affichage 
du début de requête GET. Est-ce qu'il affiche ça parce que le serveur 
a ACK ce morceau ? Ce n'est pas cohérent avec la quantité de données 
acknowledged par le serveur de toute façon. J'imagine que s'il ne 
l'affiche pas comme étant une requête HTTP, c'est que le flux est mal 
formé.


Oui, il semble. J'ai même changé le câble ethernet entre la carte indus 
et le routeur 4G pour dire... Donc je vois demain avec le client...


Merci pour ton aide :)

--
Stéphane Rivière
Ile d'Oléron - France

---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-24 Par sujet Thomas Trupel via frnog
Bonjour,

Ce qui est bizarre c'est que la requête HTTP est envoyée à moitié dans le 
paquet 6 (81 octets) et à moitié dans le paquet 8 (44 octets) alors que la 
carte indus annonce un MSS de 536. La carte aurait pu mettre toutes les données 
dans un seul paquet.

C'est peut-être une piste...

Cordialement,
Thomas

24 déc. 2023 13:14:04 Stéphane Rivière :

> Boujour et bon courage à celles et ceux de permanence ou d'astreinte :)
> 
> 
> Si quelqu'un a une idée ou a déjà rencontré un cas similaire... j'avoue être 
> en manque d'inspiration...
> 
> C'est pour une application avec des cartes industrielles (PIC 32 bits, codage 
> en C, utilisation des stacks et libs MICROCHIP) reliées à des routeurs 4G (la 
> même manip que le message sur les QRC).
> 
> Rien d'extravaguant. Tout étant implémenté, avec OpenVPN, un proxy Nginx en 
> frontal et un serveur HTTP GET/POST basique implémenté en Ada par mes soins.
> 
> Je me retrouve avec des erreurs 408 (timout au niveau du proxy Nginx) 
> *uniquement avec la carte indus* (qui envoie juste une URL GET similaire à 
> celle ci-dessous).
> 
> *Aucune erreur si j'envoie par FF une URL similaire : 
> *172.31.0.1:8081/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?*
> *
> 
> 172.31.0.3 - - [24/Dec/2023:11:19:37 +0100] "GET 
> /231224111843085123030003062C3031323353616C7574206C657320706F7465733738391F5C?
>  HTTP/1.1" *408* 0 "-" "-" < la *carte indus*
> 172.31.0.3 - - [24/Dec/2023:11:20:48 +0100] "GET 
> /231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?
>  HTTP/1.1" *408* 0 "-" "-"< *la carte indus*
> 172.31.0.2 - - [24/Dec/2023:11:36:58 +0100] "GET 
> /231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?
>  HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
> Gecko/20100101 Firefox/103.0"
> 172.31.0.2 - - [24/Dec/2023:11:37:10 +0100] "GET 
> /231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?
>  HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
> Gecko/20100101 Firefox/103.0"
> 172.31.0.2 - - [24/Dec/2023:11:37:12 +0100] "GET 
> /231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?
>  HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
> Gecko/20100101 Firefox/103.0"
> 
> 
> En utilisant Tshark pour se brancher sur le VPN, filtrer les paquets TCP sur 
> le port 8081 pour des trames HTTP uniquement.
> 
> *Essai avec FF : OK - *avec l'URL 
> 172.31.0.1:8081/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?*
> *
> 
> Tshark *détecte le trafic comme étant bien des trames HTTP* : voir en gras 
> ci-dessous*
> *
> 
> root@*  /etc/openvpn >tshark -i tun0 -d tcp.port==8081,http -f "port 8081"
> Running as user "root" and group "root". This could be dangerous.
> Capturing on 'tun0'
>     1 0.0   172.31.0.2 ? 172.31.0.1   TCP 52 55372 ? 8081 [ACK] Seq=1 
> Ack=1 Win=501 Len=0 TSval=2641523022 TSecr=3450216110
>     2 0.47455   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
> segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=66 Len=0 TSval=3450226350 
> TSecr=2641492368
>     3 0.807369694   172.31.0.2 ? 172.31.0.1 *HTTP* 489 [TCP Previous segment 
> not captured] GET 
> /231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?
>  HTTP/1.1
>     4 0.814896905   172.31.0.1 ? 172.31.0.2 *HTTP* 205 [TCP ACKed unseen 
> segment] HTTP/1.1 404 Not Found  (text/plain)
> 
> La transaction se limite à 4 lignes. *RAS...
> *
> 
> *
> *
> 
> *Essai avec la carte indus : KO* - on dirait que la pile TCP/IP pose problème 
> mais ce ne sont que des suppositions, je ne peux pas déverminer coté carte.
> 
> Tshark*ne détecte pas de trame HTTP*
> 
> J'ai rayé le trafic concernant le PC portable
> 
> root@*  /etc/openvpn >tshark -i tun0 -d tcp.port==8081,http -f "port 8081"
> Running as user "root" and group "root". This could be dangerous.
> Capturing on 'tun0'
>     1 0.0   172.31.0.2 ? 172.31.0.1   TCP 52 55372 ? 8081 [ACK] Seq=1 
> Ack=1 Win=501 Len=0 TSval=2641574990 TSecr=3450268108
>     2 0.48117   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
> segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=67 Len=0 TSval=3450278328 
> TSecr=2641523888
> /    3 1.486198007   172.31.0.3 ? 172.31.0.1   TCP 44 1032 ? 8081 [SYN] Seq=0 
> Win=1200 Len=0 MSS=536
>     4 1.486247826   172.31.0.1 ? 172.31.0.3   TCP 44 8081 ? 1032 [SYN, ACK] 
> Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
>     5 1.526477917   172.31.0.3 ? 172.31.0.1   TCP 40 1032 ? 8081 [ACK] Seq=1 
> Ack=1 Win=1200 Len=0
>     6 1.534424273   172.31.0.3 ? 172.31.0.1   TCP 121 1032 ? 8081 [PSH, ACK] 
> Seq=1 Ack=1 Win=1200 Len=81 [TCP segment of a reassembled PDU]
>     7 1.534506612   172.31.0.1 ? 172.31.0.3   TCP 40 8081 ? 1032 [ACK] Seq=1 
> Ack=82 Win=65535 Len=0/
>     8 1.534556251   172.31.0.3 ? 172.31.0.1 *TCP* 84 GET 
> /231224121420085123030006062C3031323353616C7574206C657320706F746573373839C50E?
>  

Re: [TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-24 Par sujet Léo El Amri via frnog

On 24/12/2023 13:12, Stéphane Rivière wrote:

[...]



Pour confirmer la forme de l'installation :

* On a des cartes industrielles (C) (basées sur microprocesseur PIC) 
raccordées à un modem 4G. Ces cartes ont un client HTTP.


* On a un serveur HTTP (S) codé en Ada (ailleurs que sur les cartes).

* On a un reverse-proxy HTTP (P) Nginx (ailleurs que sur les cartes).

* On a une machine (H) quelque-part sur le VPN, qui est capable de faire 
tourner tshark.


* Tout ce beau monde communique sur un VPN basé sur OpenVPN.

Le client HTTP sur les cartes réalisent des requêtes HTTP vers le 
reverse-proxy HTTP, on a donc le schéma "réseau" suivant :


 |=[ Tunnel OpenVPN ]=|
[Client HTTP] ---> [Reverse-proxy HTTP]
 ||

Ta première capture tshark a été réalisée sur la machine H avec Firefox 
en guise de client, et a écouté l'interface OpenVPN.


Ta deuxième capture tshark a aussi été réalisée sur la machine H, mais 
en écoute seulement, aussi sur l'interface OpenVPN.


J'ai extrapolé des trucs, est-ce que c'est quand même bon ?



Pour moi, sans pouvoir voir les données, la deuxième capture ne révèle 
pas de problème au niveau TCP, si ce n'est l'étrange fragmentation, mais 
ce n'est pas si surprenant pour de l'embarqué. À ce stade, je dirais que 
le problème se trouve au niveau du payload TCP, il faudrait que tu 
affiches les données pour en savoir plus. En tous cas, du SYN au FIN, la 
communication semble normale.


Je ne connais pas tshark, et je ne comprend pas d'où vient l'affichage 
du début de requête GET. Est-ce qu'il affiche ça parce que le serveur a 
ACK ce morceau ? Ce n'est pas cohérent avec la quantité de données 
acknowledged par le serveur de toute façon. J'imagine que s'il ne 
l'affiche pas comme étant une requête HTTP, c'est que le flux est mal formé.


- Léo


---
Liste de diffusion du FRnOG
http://www.frnog.org/


[TECH] [FRnOG] [MISC] Erreur HTTP 408

2023-12-24 Par sujet Stéphane Rivière

Boujour et bon courage à celles et ceux de permanence ou d'astreinte :)


Si quelqu'un a une idée ou a déjà rencontré un cas similaire... j'avoue 
être en manque d'inspiration...


C'est pour une application avec des cartes industrielles (PIC 32 bits, 
codage en C, utilisation des stacks et libs MICROCHIP) reliées à des 
routeurs 4G (la même manip que le message sur les QRC).


Rien d'extravaguant. Tout étant implémenté, avec OpenVPN, un proxy Nginx 
en frontal et un serveur HTTP GET/POST basique implémenté en Ada par mes 
soins.


Je me retrouve avec des erreurs 408 (timout au niveau du proxy Nginx) 
*uniquement avec la carte indus* (qui envoie juste une URL GET similaire 
à celle ci-dessous).


*Aucune erreur si j'envoie par FF une URL similaire : 
*172.31.0.1:8081/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?*

*

172.31.0.3 - - [24/Dec/2023:11:19:37 +0100] "GET 
/231224111843085123030003062C3031323353616C7574206C657320706F7465733738391F5C? 
HTTP/1.1" *408* 0 "-" "-" < la *carte indus*
172.31.0.3 - - [24/Dec/2023:11:20:48 +0100] "GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1" *408* 0 "-" "-"< *la carte indus*
172.31.0.2 - - [24/Dec/2023:11:36:58 +0100] "GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
Gecko/20100101 Firefox/103.0"
172.31.0.2 - - [24/Dec/2023:11:37:10 +0100] "GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
Gecko/20100101 Firefox/103.0"
172.31.0.2 - - [24/Dec/2023:11:37:12 +0100] "GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1" 404 6 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) 
Gecko/20100101 Firefox/103.0"



En utilisant Tshark pour se brancher sur le VPN, filtrer les paquets TCP 
sur le port 8081 pour des trames HTTP uniquement.


*Essai avec FF : OK - *avec l'URL 
172.31.0.1:8081/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342?*

*

Tshark *détecte le trafic comme étant bien des trames HTTP* : voir en 
gras ci-dessous*

*

root@*  /etc/openvpn >tshark -i tun0 -d tcp.port==8081,http -f "port 8081"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'tun0'
    1 0.0   172.31.0.2 ? 172.31.0.1   TCP 52 55372 ? 8081 [ACK] 
Seq=1 Ack=1 Win=501 Len=0 TSval=2641523022 TSecr=3450216110
    2 0.47455   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=66 Len=0 TSval=3450226350 
TSecr=2641492368
    3 0.807369694   172.31.0.2 ? 172.31.0.1 *HTTP* 489 [TCP Previous 
segment not captured] GET 
/231224111955085123030004062C3031323353616C7574206C657320706F7465733738396342? 
HTTP/1.1
    4 0.814896905   172.31.0.1 ? 172.31.0.2 *HTTP* 205 [TCP ACKed 
unseen segment] HTTP/1.1 404 Not Found  (text/plain)


La transaction se limite à 4 lignes. *RAS...
*

*
*

*Essai avec la carte indus : KO* - on dirait que la pile TCP/IP pose 
problème mais ce ne sont que des suppositions, je ne peux pas déverminer 
coté carte.


Tshark*ne détecte pas de trame HTTP*

J'ai rayé le trafic concernant le PC portable

root@*  /etc/openvpn >tshark -i tun0 -d tcp.port==8081,http -f "port 8081"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'tun0'
    1 0.0   172.31.0.2 ? 172.31.0.1   TCP 52 55372 ? 8081 [ACK] 
Seq=1 Ack=1 Win=501 Len=0 TSval=2641574990 TSecr=3450268108
    2 0.48117   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=67 Len=0 TSval=3450278328 
TSecr=2641523888
/    3 1.486198007   172.31.0.3 ? 172.31.0.1   TCP 44 1032 ? 8081 [SYN] 
Seq=0 Win=1200 Len=0 MSS=536
    4 1.486247826   172.31.0.1 ? 172.31.0.3   TCP 44 8081 ? 1032 [SYN, 
ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
    5 1.526477917   172.31.0.3 ? 172.31.0.1   TCP 40 1032 ? 8081 [ACK] 
Seq=1 Ack=1 Win=1200 Len=0
    6 1.534424273   172.31.0.3 ? 172.31.0.1   TCP 121 1032 ? 8081 [PSH, 
ACK] Seq=1 Ack=1 Win=1200 Len=81 [TCP segment of a reassembled PDU]
    7 1.534506612   172.31.0.1 ? 172.31.0.3   TCP 40 8081 ? 1032 [ACK] 
Seq=1 Ack=82 Win=65535 Len=0/
    8 1.534556251   172.31.0.3 ? 172.31.0.1 *TCP* 84 GET 
/231224121420085123030006062C3031323353616C7574206C657320706F746573373839C50E? 
HTTP/1.1  [TCP segment of a reassembled PDU]
    9 1.534571758   172.31.0.1 ? 172.31.0.3   TCP 40 8081 ? 1032 [ACK] 
Seq=1 Ack=126 Win=65535 Len=0
   10 6.586207028   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 
1032 ? 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1 [TCP segment of a 
reassembled PDU]
   11 6.586259191   172.31.0.1 ? 172.31.0.3   TCP 40 [TCP Keep-Alive 
ACK] 8081 ? 1032 [ACK] Seq=1 Ack=126 Win=65535 Len=0
   12 10.259594542   172.31.0.2 ? 172.31.0.1   TCP 52 [TCP Dup ACK 1#1] 
55372 ? 8081 [ACK] Seq=1 Ack=1 Win=501 Len=0