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/

Répondre à