Bonjour à tous,
J'utilise un serveur dédié sous windows server depuis plus d'un an. Le serveur ainsi que l'application fonctionnait à merveille.
Pour des raisons financières, je ne peux pas m'offrir une license windows server indéfiniment. Donc j'ai opté pour ubuntu 20.04.
Depuis ce jour où mon serveur utilise linux (environ 2 mois), j'ai des clients qui me disent qu'ils sont dans l'impossibilité d'interagir correctement avec le serveur.
Pendant ces 2 mois, j'ai tout de suite remarquer que chaque jour, c'était toujours les mêmes clients qui sont affectés par ce problème.
Éventuellement, après avoir persisté pendant 10-15 minutes (si pas d'abandon), ils arrivent enfin a interagir avec le serveur sans problème.
Pendant que ses clients rencontrent ce problème, d'autres clients, ainsi que moi-même arrivent à interagir avec le serveur sans aucun souci.
Pour cette raison, je n'ai jamais réussi à reproduire moi-même le problème.
Le serveur dédié a été diagnostiquer par le support, aucun souçis à déclarer de leur part.
UFW est actif avec les configurations iptables par défaut ainsi que toutes règles requises pour mon application.
Je parie que si je reviens à Windows (ce que je ne peux pas), le problème disparaîtra comme il est venu.
Un client assez patient ma permis de faire une capture wireshark depuis le serveur:
Je ne suis pas un expert, c'est pourquoi je demande de l'aide ici.
Paquet n°83 : Le client envoie FIN ACK, le serveur ne l'ACK pas.
Paquet n°85 : Le client poursuit le processus de connexion avec l'application.
Paquet n°99 : Retransmission du paquet n°83, cette fois le serveur l'ACK, le passe à l'application et il est détruit.
Maintenant, les clients attendent bêtes, car la retransmission a amené l'application à détruire client alors qu'elle n'était pas censée le faire.
Serveurs dédiés – Clients affectés par tcp retransmission/DUP ACK/Previous segment not captured/Out-of-Or
Sujets apparentés
- Port 25 bloqué pour spam à répétition
10445
28.02.2018 13:39
- Spam et IP bloquée
8422
12.12.2016 11:53
- Rkhunter : parametre web_CMD invalide
8213
23.07.2017 15:43
- Mise en place de VM avec IP publique sur Proxmox 6 [RESOLU]
8117
30.04.2020 17:12
- Mise à jour PHP sur Release 3 ovh
8103
11.03.2017 17:43
- Connection smtp qui ne marche plus : connect error 10060
8058
12.04.2019 10:10
- Partition sur le disque de l'OS ESXI
7962
09.05.2017 14:33
- Envoi demail bloqué chez Gmail (550-5.7.26 DMARC)
7719
23.12.2019 08:40
- Meilleure solution pour disposer de plusieurs IP ?
7459
29.07.2018 09:40
- Comment me connecter par SSH en tant que root à mon serveur ?
6950
09.09.2019 14:34
Bonjour,
vous avez essayé avec 0 règles de firewall pour vérifier si le problème est le même ?
Vous avez essayé avec d'autre version de linux (genre Debian) ?
C'est quoi le nom de l'application en question ?
Cordialement, janus57
Merci pour votre réponse.
J'ai essayé `sudo iptables -F`, je me suis coupé l'herbe sous le pied et j'ai du restart la machine.
Si quelqu'un pourrais me guider pour supprimer toutes les règles sans interrompre ma session SSH et mon application.
Non, pour cela il faudrait couper l'accès à mon application et j'aimerai éviter ce cas de figure.
C'est un logiciel propriétaire codé avec C# qui tourne un serveur TCP pour un service. Le code source est évidemment fermé.
Le plus simple essayez votre serveur en désactivant iptables. Il suffit d'arrêter le service.
Après relancez des analyses réseau.
Bonjour,
et dans l'idéal il faudrait avoir un TCPDump des côtés :
1 - le client : pour voir ce qui est envoyé
2 - le serveur : pour voir ce qui arrive
Vous avez gardez les fichiers de capture ?
Vous pouvez les mettre à dispo (plus simple à regrdaer/analyse que des captures d'écran) ?
Aussi votre application utilise C#, donc mono normalement, vous utilisez :
1 - les dépôts Ubuntu pour mono ?
2 - le dépôt officiel de mono ?
3 - l'implémentation officiel de microsoft pour linux, ubunut dans votre cas (cf : https://docs.microsoft.com/fr-fr/dotnet/core/install/linux-ubuntu ) ?
Note : l'éditeur supporte officiellement votre logiciel sous Ubuntu ?
Car la finalité du nom du logiciel c'était pour trouver de la doc et non pas accéder au code source, car il y a peur d'être d'autre(s) solution(s) à votre problème.
Cordialement, janus57
Voici la capture en question: https://cdn.discordapp.com/attachments/907600635296358470/972055504329261117/issue_server_filtered.pcap issue_server_filtered.pcap
Oui, quand j'ai migré vers linux, j'ai suivi à la lettre les instructions par https://docs.microsoft.com/fr-fr/dotnet/core/install/linux-ubuntu#2004 docs.microsoft.com
Oui l'application supporte officiellement Ubuntu.
ubuntu@ns566962:~$ sudo service iptables stop
Failed to stop iptables.service: Unit iptables.service not loaded.
Voici la capture en question: https://cdn.discordapp.com/attachments/907600635296358470/972055504329261117/issue_server_filtered.pcap issue_server_filtered.pcap
Oui, quand j'ai migré vers linux, j'ai suivi à la lettre les instructions par https://docs.microsoft.com/fr-fr/dotnet/core/install/linux-ubuntu#2004 docs.microsoft.com
Oui l'application supporte officiellement Ubuntu.
ubuntu@nsxxxxxx:~$ sudo service iptables stop
Failed to stop iptables.service: Unit iptables.service not loaded.
Let Firewall, c'est netfilter. Iptables se sont des commandes qui agissent sur netfilter.
Avec ubuntu il y a peut être aussi une couche supérieure UFW ou qq chose comme ça.
Commencez par voir où vous en êtes à ce niveau :
`iptables -L -n`
ubuntu@nsxxxxxx:~$ sudo iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ufw-before-logging-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-before-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-track-input all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
ufw-before-logging-forward all -- 0.0.0.0/0 0.0.0.0/0
ufw-before-forward all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-forward all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-forward all -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-forward all -- 0.0.0.0/0 0.0.0.0/0
ufw-track-forward all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ufw-before-logging-output all -- 0.0.0.0/0 0.0.0.0/0
ufw-before-output all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-output all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-output all -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-output all -- 0.0.0.0/0 0.0.0.0/0
ufw-track-output all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-after-forward (1 references)
target prot opt source destination
Chain ufw-after-input (1 references)
target prot opt source destination
ufw-skip-to-policy-input udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:137
ufw-skip-to-policy-input udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:138
ufw-skip-to-policy-input tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
ufw-skip-to-policy-input tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
ufw-skip-to-policy-input udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ufw-skip-to-policy-input udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:68
ufw-skip-to-policy-input all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
Chain ufw-after-logging-forward (1 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-after-logging-input (1 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-after-logging-output (1 references)
target prot opt source destination
Chain ufw-after-output (1 references)
target prot opt source destination
Chain ufw-before-forward (1 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 3
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 11
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 12
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
ufw-user-forward all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ufw-logging-deny all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 3
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 11
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 12
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
ufw-not-local all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 239.255.255.250 udp dpt:1900
ufw-user-input all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-before-logging-forward (1 references)
target prot opt source destination
Chain ufw-before-logging-input (1 references)
target prot opt source destination
Chain ufw-before-logging-output (1 references)
target prot opt source destination
Chain ufw-before-output (1 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ufw-user-output all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-logging-allow (0 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW ALLOW] "
Chain ufw-logging-deny (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID limit: avg 3/min burst 10
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-not-local (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
RETURN all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type MULTICAST
RETURN all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
ufw-logging-deny all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-reject-forward (1 references)
target prot opt source destination
Chain ufw-reject-input (1 references)
target prot opt source destination
Chain ufw-reject-output (1 references)
target prot opt source destination
Chain ufw-skip-to-policy-forward (0 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-skip-to-policy-input (7 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-skip-to-policy-output (0 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-track-forward (1 references)
target prot opt source destination
Chain ufw-track-input (1 references)
target prot opt source destination
Chain ufw-track-output (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW
Chain ufw-user-forward (1 references)
target prot opt source destination
Chain ufw-user-input (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10060
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10074
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10078
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:51000
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 51000:52256
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10071
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain ufw-user-limit (0 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 5 LOG flags 0 level 4 prefix "[UFW LIMIT BLOCK] "
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain ufw-user-limit-accept (0 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain ufw-user-logging-forward (0 references)
target prot opt source destination
Chain ufw-user-logging-input (0 references)
target prot opt source destination
Chain ufw-user-logging-output (0 references)
target prot opt source destination
Chain ufw-user-output (1 references)
target prot opt source destination
ubuntu@nsxxxxxx:~$
À mon niveau, je peux pas décoder cela et être sur à 100% qu'aucune règle ci-dessus ne gêne mon application.
Je me demande si certains paquets seraient considérés invalides et par conséquent ignorés (ce qui expliquerait l'absence de l'ACK et la retransmission du client).
Ha oui... Effectivement il plutôt beaucoup Chain par rapport a ce dont j'ai l’habitude.
Pas assez compétant avec UFW pour vous conseiller.
Bonjour,
pour désactiver UFW ce ne serait pas tout simplement "ufw disable" (je touche pas à UFW donc…) ?
Sinon par rapport à la capture c'est visiblement le serveur qui ne reçoit pas la demande dans les temps, fait une retransmission, mais se retrouve avec 2 ACK car les deux arrivent (initiale + retransmission).
Donc à priori il y aurais potentiellement un problème de congestion/latence entre le serveur et le client trop important par rapport à ce que le serveur attend.
Cordialement, janus57
Pour désactiver ufw c'est bien un "ufw disable".
Personnellement j'utilise un Ubuntu sur une VM sur un serveur dédié Rise-2 sans aucun problème. Il est vrai que le serveur lui même est sous un Windows 2022.
Le problème est toujours présent après avoir désactivé ufw.
J'ai commandé un vps sous debian 11 (ubuntu 21.10 si je ne me trompe pas) et j'ai redirigé le client sur le vps, le problème est toujours présent.
Tout semblerait pointer le programme, ou dotnet, ou bien le framework qui est responsable du networking (dotnetty).
Je me tate à commander un vps sous Windows et refaire l'essai.
Bonjour,
Si vous avez un serveur dédié perso je serai parti sur de la virtualisation.
Genre : Proxmox + VM sous Windows
Si le problème disparaît alors pour moi l'application n'est soit pas compatible Linux soit l'éditeur du logiciel doit préciser si il faut utiliser le dotnet Microsoft ou Mono.
Cordialement, janus57