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/