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 <s...@genesix.org>:

> 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.000000000   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.000047455   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.000000000   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.000048117   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 TSval=2641585234 TSecr=3450278328
>    13 10.259634469   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP Dup ACK 2#1] [TCP 
> ACKed unseen segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=67 Len=0 
> TSval=3450288588 TSecr=2641523888
>    14 12.314271024   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1
>    15 12.314321739   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
>    16 17.386390765   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    17 17.386425101   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
>    18 20.459197857   172.31.0.2 ? 172.31.0.1   TCP 52 [TCP Dup ACK 1#2] 55372 
> ? 8081 [ACK] Seq=1 Ack=1 Win=501 Len=0 TSval=2641595470 TSecr=3450288588
>    19 20.459285646   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP Dup ACK 2#2] [TCP 
> ACKed unseen segment] 8081 ? 55372 [ACK] Seq=1 Ack=2 Win=67 Len=0 
> TSval=3450298788 TSecr=2641523888
>    20 22.475577986   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    21 22.475624696   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
>    22 23.841368755   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
> segment] 8081 ? 55372 [FIN, ACK] Seq=1 Ack=2 Win=67 Len=0 TSval=3450302170 
> TSecr=2641523888
>    23 23.879099409   172.31.0.2 ? 172.31.0.1   TCP 52 [TCP Previous segment 
> not captured] 55372 ? 8081 [FIN, ACK] Seq=2 Ack=2 Win=501 Len=0 
> TSval=2641598893 TSecr=3450302170
>    24 23.879142697   172.31.0.1 ? 172.31.0.2   TCP 52 [TCP ACKed unseen 
> segment] 8081 ? 55372 [ACK] Seq=2 Ack=3 Win=67 Len=0 TSval=3450302207 
> TSecr=2641598893
>    25 28.386615010   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    26 28.386665972   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
>    27 33.473644868   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    28 33.473688593   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
>    29 38.525671893   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    30 38.525723924   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
>    31 44.465509686   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    32 44.465560790   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
>    33 49.525705741   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    34 49.525755699   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
>    35 54.625130298   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    36 54.625181075   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
>    37 60.545164674   172.31.0.3 ? 172.31.0.1   TCP 46 [TCP Keep-Alive] 1032 ? 
> 8081 [ACK] Seq=125 Ack=1 Win=1200 Len=1[*Reassembly error*, protocol TCP: New 
> fragment overlaps old data (retransmission?)]
>    38 60.545199295   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
>    39 61.532257208   172.31.0.1 ? 172.31.0.3   TCP 40 8081 ? 1032 [FIN, ACK] 
> Seq=1 Ack=126 Win=65535 Len=0
>    40 61.584988611   172.31.0.3 ? 172.31.0.1   TCP 40 1032 ? 8081 [ACK] 
> Seq=126 Ack=2 Win=1200 Len=0
>    41 61.624593095   172.31.0.3 ? 172.31.0.1   TCP 40 1032 ? 8081 [FIN, ACK] 
> Seq=126 Ack=2 Win=1200 Len=0
>    42 61.624629615   172.31.0.1 ? 172.31.0.3   TCP 40 8081 ? 1032 [ACK] Seq=2 
> Ack=127 Win=65535 Len=0
> 
> L'erreur 408 correspond à une erreur client et signale un timout car le proxy 
> ferme la session en l'absence de trafic identifiable.
> 
> C'est le proxy Nginx qui semble coincer et non pas mon code serveur HTTP 
> GET/POST (qui est derrière le proxy), qui est plus permissif (puisque 
> rudimentaire).
> 
> La conf du proxy est basique
> 
> server {
>     allow 172.31.0.0/16; # VPN network range
>     deny all;            # Reject all others
> 
>     listen 8081 default_server;
> 
>     server_name               8081.*.*.org;
>     access_log /var/log/nginx/8081.*.*.org.access.log;
>     error_log  /var/log/nginx/8081.*.*.org.error.log debug;
> 
>     location / {
>         proxy_pass http://localhost:8001;
>         proxy_http_version 1.1;
>         proxy_set_header Upgrade $http_upgrade;
>     }
> }
> 
> On dirait que la pile TCP/IP est en vrac.
> 
> Je n'ai pas accès aux sources embarquées dans la carte indus.
> 
> Je n'ai pas l'expertise pour pousser plus loin le détail de l'analyse avec 
> Tshark.
> 
> La moindre idée sera la bienvenue, au moins pour affiner l'analyse avec 
> Tshark. Mon canard en plastique personnel, à coté de l'écran, n'est pas un 
> expert réseau :)
> 
> 
> Et bonne fêtes à toutes  et tous :)
> 
> 
> -- 
> 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/

Répondre à