La Fibre
Télécom => Réseau => TCP/IP / Fonctionnement des réseaux => Discussion démarrée par: vivien le 26 décembre 2015 à 12:46:47
-
Les ports "clients" pour une connexion UDP ou TCP sont appelés "ports éphémères" (c'est le nom canonique bien que parfois on croise "ports dynamiques" et "ports de retour").
Les ports clients sont normalement dans la plage suivante :
- Windows 2000 / XP (sortie en 2001) : du port 1025 au port 5000
- Windows modernes (à partir de 2007) : du port 49152 au port 65535
- Linux avant 2001 (noyaux 2.2.x) : du port 1024 au port 4999
- Linux à partir de 2001 (noyaux 2.4.x à 3.13) : du port 32768 au port 61000
- Linux à partir de 2015 (noyaux 3.19 et suivants) : du port 32768 au port 60999
- MacOS X / FreeBSD modernes : du port 49152 au port 65535
Si le port utilisé n'est pas dans cette plage et que vous n'avez pas modifié votre système d'exploitation, c'est qu'un équipement, comme un Carrier-grade NAT modifie les ports dynamiquement. Il est possible que d'autres modifications soient effectuées.
Les exceptions :
- Windows avec Microsoft Exchange Server 2007 : Plage de port de 1025 à 60000
- Windows avec des logiciels de virtualisation : Plage de port de 1025 à 65535 (à confirmer)
Les 3 plages de l'IANA : (l'IANA (Internet Assigned Numbers Authority) s'occupe du nommage et la correspondance entre nom et numéro port via des procédures d'attributions.)
- de 0 à 1023: ports systèmes assignés par l'IANA (system ports ou "well-known ports")
- de 1024 à 49151: ports enregistrés assignés par l'IANA (registered ports)
- de 49152 à 65535: port éphémères non gérés par l'IANA (dynamic ports)
Comment vérifier la plage de port de mon système d'exploitation ?
Sous Windows :
1/ Démarrer une "Invite de commandes"
2/ Copier / coller la commande netsh int ipv4 show dynamicport tcp
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10586.png)
Sous Linux :
1/ Démarrer un terminal
2/ Copier / coller la commande cat /proc/sys/net/ipv4/ip_local_port_range
(https://lafibre.info/testdebit/ubuntu/201512_ports_dynamique_ubuntu.png)
Sous MacOS X :
1/ Démarrer un terminal
2/ Copier / coller la commande sysctl net.inet.ip.portrange.first net.inet.ip.portrange.last
Merci à kgersen pour les infos !
Tutoriel : Configurer Apache 2.4 pour avoir accès aux ports de retour dans les logs (https://lafibre.info/tutoriels-linux/configurer-log-apache/)
-
Non, j'ai :
>netsh i i sh dy t
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1025
Nombre de ports : 64510
et je suis certain de ne pas avoir fait joujou avec ce paramètre.
-
Sur un Windows 7 à jour avec les paramètres par défaut :
>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
-
Tu veux dire que c'est la MàJ qui fait la différence? (Je ne fais pas toutes les MàJ.)
-
Aucune idée, c'était juste pour donner le plus de détails possibles.
-
Corrector, ta configuration semble celle proposée par défaut par Windows server 2003, qui utilise les ports 1025 à 65535 pour les ports dynamiques RPC (source Microsoft (https://support.microsoft.com/fr-fr/kb/832017))
Windows server 2008 et suivant, lui est sur la plage 49152 - 65535 mais l'installation de logiciels peuvent modifier cette plage.
Lorsque vous installez Microsoft Exchange Server 2007 sur un ordinateur Windows Server 2008, la plage de port par défaut est 1025 à 60000. (Source: Microsoft (https://support.microsoft.com/fr-fr/kb/929851))
-
Afficher la plage de ports dynamiques sur un ordinateur Windows :
- netsh int ipv4 show dynamicport tcp
- netsh int ipv4 show dynamicport udp
- netsh int ipv6 show dynamicport tcp
- netsh int ipv6 show dynamicport udp
La plage est définie séparèment pour chaque transport et pour chaque version du protocole IP.
Modifier la plage de ports :
Premier chiffre : le port de démarrage de la plage
Second chiffre : le nombre de ports de la plage
- netsh int ipv4 set dynamicport tcp start=10000 num=1000
- netsh int ipv4 set dynamicport udp start=10000 num=1000
- netsh int ipv6 set dynamicport tcp start=10000 num=1000
- netsh int ipv6 set dynamicport udp start=10000 num=1000
Ces exemples de commandes définissent la plage de ports dynamiques à partir de port 10 000 et à la fin sur le port 10999 (1000 ports). La plage minimale de ports qui peuvent être définies est de 255. Le début de la plage est au minimum à 1 025. Le port de fin maximale (basé sur la plage en cours de configuration) ne peut pas dépasser 65535.
Exemple avec Windows 10 :
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10.png)
-
Corrector, ta configuration semble celle proposée par défaut par Windows server 2003, qui utilise les ports 1025 à 65535 pour les ports dynamiques RPC (source Microsoft (https://support.microsoft.com/fr-fr/kb/832017))
Windows server 2008 et suivant, lui est sur la plage 49152 - 65535 mais l'installation de logiciels peuvent modifier cette plage.
Lorsque vous installez Microsoft Exchange Server 2007 sur un ordinateur Windows Server 2008, la plage de port par défaut est 1025 à 60000. (Source: Microsoft (https://support.microsoft.com/fr-fr/kb/929851))
Pourtant c'est un Windows 8 de base.
-
Pourtant c'est un Windows 8 de base.
Idem sous Windows 10 TH2.
>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1025
Nombre de ports : 64510
-
Bensay,
J'ai vérifié sur plusieurs Windows 10 (édition famille, pro, 32bits 64bits, avec 2Go de ram, avec 16Go de ram, clean install, mise à jour depuis la preview)
=> J'ai toujours
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10.png)
Quel logiciel aurais pu modifier la plage des ports ?
La seule chose, c'est que toute les version de Windows 10 avaient la dernière grosses mise à jour (build 10586).
Pour savoir si tu as la mise à jour : c'est simple il y a un copyright 2016 pour la build 10586.
Edge n'est pas en version 12 mais en version 13.
(https://lafibre.info/testdebit/windows10/201501_windows10_informations.png)
-
Edge HTML est bien en version 13.
Et version 1511 depuis le 18/12
Mais rien de concordant avec toi :
(https://lafibre.info/testdebit/windows10/201501_windows10_informations_bensay.jpg)
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10586_bensay.png)
Cdt
Bensay
-
Vivien, tu pourrais compiler les plages de port utilisées par OS?
Il faudrait commencer par trier le fichier par utilisateur. C'est là que de ne pas avoir le login utilisateur est dommage mais on pourrait imaginer que l'adresse IP sur une courte période soit une approximation.
-
Je vais faire des stats sur le pourcentage de ports < 32768 par FAI.
Cela permet de voir dans quel proportion les FAI utilisent plusieurs clients sur une IP (ou les clients utilisent Windows 2000 / XP ou Linux 2.2 ou <)
Les seuls systèmes d'exploitation à utiliser les ports < 32768 sont Windows XP est précédents et Linux 2.2 et précédents (Linux d'avant 2001)
- Windows XP (sortie en 2001) : de 1025 à 5000
- Windows server 2008 : 49152 à 65535 (recommandation de l'Internet Assigned Numbers Authority)
- Windows server 2008 avec Microsoft Exchange Server 2007 : 1025 à 60000
- Windows Vista (sortie en 2007) et suivants : de 49152 à 65535 (recommandation de l'Internet Assigned Numbers Authority)
- Linux avant 2001 (noyaux 2.2.x) : de 1024 à 4999
- Linux à partir de 2001 (noyaux 2.4.x à 3.13) : de 32768 à 61000
- Linux à partir de 2015 (noyaux 3.19 et suivants) : de 32768 à 60999
- FreeBSD : de 49152 à 65535 (recommandation de l'Internet Assigned Numbers Authority)
- MacOS X : de 49152 à 65535 (recommandation de l'Internet Assigned Numbers Authority)
J'ai refait des tests avec Windows 10, pas moyen d'avoir ce que vous avez, Corrector et Bensay.
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10240.png)
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10586.png)
PS : Pour le copyright "2016" de Windows10 10586, Microsoft à corrigé le bug et c'est repassé en "2015" avec les mises à jour de décembre.
La commande fonctionne bien avec Linux 2.2 aussi bien sous Linux Mandrake 7 et Debian Potato (2.2) et bien sur c'est toujours bon sur les systèmes plus récents.
cat /proc/sys/net/ipv4/ip_local_port_range
Pour Windows, la commande ne fonctionne que à partir de Windows XP. Un Windows 2000 SP4 a bien netsh mais il ne semble pas possible de visualiser ou modifier les ports de retour. Je suppose qu'il faut passer par le registre (pas trouvé où est la valeur)
netsh int ipv4 show dynamicport tcp
-
On est d'accord que les box préservent les ports? (sauf exception)
Les box sont toutes basées sur iptables ou pas?
-
Pour Windows, la commande ne fonctionne que à partir de Windows XP. Un Windows 2000 SP4 a bien netsh mais il ne semble pas possible de visualiser ou modifier les ports de retour. Je suppose qu'il faut passer par le registre (pas trouvé où est la valeur)
oui:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
puis mettre une valeur DWORD nommé MaxUserPort. Si la valeur n'existe pas c'est le défaut: 5000
https://technet.microsoft.com/en-us/library/cc938196.aspx
a priori on ne peut changer le port mini.
-
Est-ce que SMF enregistre les ports?
-
Les box sont toutes basées sur iptables ou pas?
Neufbox, Bbox, Freebox, oui ; Livebox, non pour les firmwares basés sur OpenRG (aucune référence, les fonctions pare-feu sont gérées du côté du code propriétaire) mais peut-être pour d'autres ; quant à la flotte de modems de Numericable, c'est moins sûr en sachant qu'une partie est basée sur des systèmes comme eCos.
-
Non, SMF n'enregistre pas les ports, mais Apache enregistre les ports.
Je viens d'installer un Linux 2.0 (Redhat 5.1 qui date d’août 1998 et qui a le noyau Linux 2.0.34) mais si /proc/sys/net/ipv4/ existe bien, pas de "ip_local_port_range"
Il y a uniquement :
- /proc/sys/net/ipv4/arp_check_interval (6000)
- /proc/sys/net/ipv4/arp_confirm_interval (30000)
- /proc/sys/net/ipv4/apr_confirm_timeout (500)
- /proc/sys/net/ipv4/arp_dead_res_time (6000)
- /proc/sys/net/ipv4/arp_max_tries (3)
- /proc/sys/net/ipv4/arp_res_time (500)
- /proc/sys/net/ipv4/arp_timeout (6000)
- /proc/sys/net/ipv4/ip_dynaddr (0)
- /proc/sys/net/ipv4/ip_forward (0)
-
Moi j'ai ça:
-
Je viens d'installer un Linux 2.0 (Redhat 5.1 qui date d’août 1998 et qui a le noyau Linux 2.0.34) mais si /proc/sys/net/ipv4/ existe bien, pas de "ip_local_port_range"
J'ai trouvé deux choses :
1) Si l'utilisateur choisit un numéro de port, il ne peut pas prendre n'importe lequel :
19 /*
20 * Linux ports don't normally get allocated above 32K.
21 * I used an extra 4K port-space
22 */
23
24 #define PORT_MASQ_BEGIN 61000
25 #define PORT_MASQ_END (PORT_MASQ_BEGIN+4096)
616 #ifdef CONFIG_IP_MASQUERADE
617 /* The kernel masquerader needs some ports. */
618 if(snum>=PORT_MASQ_BEGIN && snum<=PORT_MASQ_END)
619 return -EADDRINUSE;
620 #endif
Donc cette plage de ports était réservée pour MASQUERADE et donc interdite aux sockets créées localement! Cela évite d'avoir à gérer les sockets locales dans MASQUERADE.
Dans un linux moderne (càd version > 2.6), la généralisation de MASQUERADE qui est SNAT gère automatiquement toutes les connexions sortantes même quand on ne lui demande que de gérer certaines connexions.
2) Si l'utilisateur ne spécifie pas de numéro de port :
168 static inline int udp_lport_inuse(u16 num)
169 {
170 struct sock *sk = udp_hash[num & (UDP_HTABLE_SIZE - 1)];
171
172 for (; sk != NULL; sk = sk->next) {
173 if (sk->num == num)
174 return 1;
175 }
176 return 0;
177 }
178
179 /* Shared by v4/v6 tcp. */
180 unsigned short udp_good_socknum(void)
181 {
182 int result;
183 static int start = 0;
184 int i, best, best_size_so_far;
185
186 SOCKHASH_LOCK();
187
188 /* Select initial not-so-random "best" */
189 best = PROT_SOCK + 1 + (start & 1023);
190 best_size_so_far = 32767; /* "big" num */
191 result = best;
192 for (i = 0; i < UDP_HTABLE_SIZE; i++, result++) {
193 struct sock *sk;
194 int size;
195
196 sk = udp_hash[result & (UDP_HTABLE_SIZE - 1)];
197
198 /* No clashes - take it */
199 if (!sk)
200 goto out;
201
202 /* Is this one better than our best so far? */
203 size = 0;
204 do {
205 if (++size >= best_size_so_far)
206 goto next;
207 } while ((sk = sk->next) != NULL);
208 best_size_so_far = size;
209 best = result;
210 next:
211 }
212
213 while (udp_lport_inuse(best))
214 best += UDP_HTABLE_SIZE;
215 result = best;
216 out:
217 start = result;
218 SOCKHASH_UNLOCK();
219 return result;
220 }
Voir
http://lxr.free-electrons.com/source/net/ipv4/af_inet.c?v=2.0.40#L329
http://lxr.free-electrons.com/source/net/ipv4/udp.c?v=2.0.40#L179
http://lxr.free-electrons.com/source/include/net/ip_masq.h?v=2.0.40#L19
http://lxr.free-electrons.com/source/include/net/sock.h?v=2.0.40#L429
-
Peut être le fait d'avoir Vmware ?
-
Tu parles du NAT de Vmware?
-
213 while (udp_lport_inuse(best))
214 best += UDP_HTABLE_SIZE;
Je n'arrive pas à comprendre ce qui garantit que ce truc termine à temps!
Il y a aussi ça :
503 static __inline__ int tcp_lport_inuse(int num)
504 {
505 struct sock *sk = tcp_bound_hash[tcp_bhashfn(num)];
506
507 for(; sk != NULL; sk = sk->bind_next) {
508 if(sk->num == num)
509 return 1;
510 }
511 return 0;
512 }
513
514 /* Find a "good" local port, this is family independant.
515 * There are several strategies working in unison here to
516 * get the best possible performance. The current socket
517 * load is kept track of, if it is zero there is a strong
518 * likely hood that there is a zero length chain we will
519 * find with a small amount of searching, else the load is
520 * what we shoot for when the chains all have at least
521 * one entry. The base helps us walk the chains in an
522 * order such that a good chain is found as quickly as possible. -DaveM
523 */
524 unsigned short tcp_good_socknum(void)
525 {
526 static int start = PROT_SOCK;
527 static int binding_contour = 0;
528 int best = 0;
529 int size = 32767; /* a big num. */
530 int retval = 0, i, end, bc;
531
532 SOCKHASH_LOCK();
533 i = tcp_bhashfn(start);
534 end = i + TCP_BHTABLE_SIZE;
535 bc = binding_contour;
536 do {
537 struct sock *sk = tcp_bound_hash[i&(TCP_BHTABLE_SIZE-1)];
538 if(!sk) {
539 /* find the smallest value no smaller than start
540 * that has this hash value.
541 */
542 retval = tcp_bhashnext(start-1,i&(TCP_BHTABLE_SIZE-1));
543
544 /* Check for decreasing load. */
545 if (bc != 0)
546 binding_contour = 0;
547 goto done;
548 } else {
549 int j = 0;
550 do { sk = sk->bind_next; } while (++j < size && sk);
551 if (j < size) {
552 best = i&(TCP_BHTABLE_SIZE-1);
553 size = j;
554 if (bc && size <= bc) {
555 i = best;
556 goto verify;
557 }
558 }
559 }
560 } while(++i != end);
561 i = best;
562
563 /* Socket load is increasing, adjust our load average. */
564 binding_contour = size;
565 verify:
566 if (size < binding_contour)
567 binding_contour = size;
568
569 retval = tcp_bhashnext(start-1,i);
570
571 best = retval; /* mark the starting point to avoid infinite loops */
572 while(tcp_lport_inuse(retval)) {
573 retval = tcp_bhashnext(retval,i);
574 if (retval > 32767) /* Upper bound */
575 retval = tcp_bhashnext(PROT_SOCK,i);
576 if (retval == best) {
577 /* This hash chain is full. No answer. */
578 retval = 0;
579 break;
580 }
581 }
582
583 done:
584 start = (retval + 1);
585 if (start > 32767 || start < PROT_SOCK)
586 start = PROT_SOCK;
587 SOCKHASH_UNLOCK();
588
589 return retval;
590 }
http://lxr.free-electrons.com/source/net/ipv4/tcp.c?v=2.0.40#L503
-
Peut être le fait d'avoir Vmware ?
C'est une bonne piste.
A noter que Virtualbox et KVM/libvirt ne font pas ce type de modifications sous Linux.
-
J'ai rajouté l’information du port source et du port destination sur la page https://ip.lafibre.info/
J'ai aussi rajouté la version du protocole http (1.0 ou 1.1 aujourd'hui ; 2.0 mi-2016, quand le serveur sera compatible)
Enfin j'affiche l'adresse IP via deux méthodes, censé donner l'information de la véritable IP du visiteur, et non l'IP du proxy (en cas d'utilisation d'un proxy).
=> Plus d'infos : http://www.infowebmaster.fr/tutoriel/php-fonction-adresse-ip
-
Tu as pensé à récupérer l'adresse avec WebRTC?
https://diafygi.github.io/webrtc-ips/
-
Tu pourrais faire une page qui affiche la dispersion des ports?
Déjà tu crées une URL qui donne IP et port en texte, sans chichis. Il faut un truc qui marche en IPv6 donc éviter d'utiliser ":" comme séparateur.
Imaginons : une simple page avec un menu vitesse (en Hz) et un bouton démarrer. Le bouton lance un script qui fait des connexions et récupère IP et port. Pour chaque IP, une liste de ports est compilée.
Ensuite on peut dessiner les ports sur un graphique.
-
Tu as pensé à récupérer l'adresse avec WebRTC?
Non, juste le X-Forwarded-For, un champ peu renseigné dans la pratique (surtout par des proxy ouverts qui restent aujourd'hui rarement accessibles).
$ curl -s https://ip.lafibre.info/ -H 'X-Forwarded-For: <script>alert("CARRÉMENT VALIDE")</script>' | grep 'Votre véritable adresse'
<li>Votre véritable adresse IP est <strong><script>alert("CARRÉMENT VALIDE")</script></strong> <small>(différente si vous utilisez un proxy)</small></li>
Cette ligne pourrait être n'affichée qu'au besoin.
Outre WebRTC, il pourrait y avoir le décodage des IPv4 encapsulées (dans les IPv6 Free par exemple) qui pourrait être intéressant, afin d'afficher directement l'hôte et donc le NRA (on peut aussi penser à intégrer d'autres sources de données comme le traceroute chez Orange/FBN mais ce n'est pas le sujet).
[..]
Imaginons : une simple page avec un menu vitesse (en Hz) et un bouton démarrer. Le bouton lance un script qui fait des connexions et récupère IP et port. Pour chaque IP, une liste de ports est compilée.
Si on fait ça, il faudrait peut-être une implèmentation légère comme un socket qui écoute les connexions et renvoie au plus vite le port en réponse (sans persistance), pour :
- éviter de gaspiller la charge ou les logs du serveur ;
- éviter de se heurter aux limites de connexions (http://www.browserscope.org/?category=network#network-results) parallèles fixées par les navigateurs, si trop de latence. En sachant que si ça pose problème, certains sites ont pour astuce de contourner (de manière limitée) cet aspect en répartissant les requêtes sur différents sous-domaines. Il me semblait également avoir lu que les websockets étaient exonérées de ces limites de connexions, mais à voir si ça concerne tout le processus de communication (handshake compris) ou juste le moment à partir duquel la connexion bidirectionnelle est établie.
-
Tu parles du NAT de Vmware?
Je suppute, Vmware jouant avec les interfaces réseaux , peut être une cause à effet ?
Une idée corrector de ce qui aurait pour effet cette divergence avec Vivien ?
-
Cette ligne pourrait être n'affichée qu'au besoin.
Voila, j'affiche directement les informations HTTP_CLIENT_IP et HTTP_X_FORWARDED_FOR si ils ne sont pas nuls :
$ClientIp2 = $_SERVER["HTTP_CLIENT_IP"];
$Forwarded = $_SERVER["HTTP_X_FORWARDED_FOR"];
if ("$ClientIp2" != "")
{
echo " <li>Information HTTP_CLIENT_IP est <strong>",$ClientIp2,"</strong></li>\n";
}
if ("$Forwarded" != "")
{
echo " <li>Information HTTP_X_FORWARDED_FOR est <strong>",$Forwarded,"</strong></li>\n";
}
-
echo " <li>Information HTTP_X_FORWARDED_FOR est <strong>",$Forwarded,"</strong></li>\n";
vivien, le monsieur t'explique que ça ne se fait pas!
-
Si cela n'est jamais utilisé, cela ne s'affichera jamais.
Si c'est utilisé un jour, on pourra voir les infos.
Pour le décodage des IPv4 encapsulées dans les IPv6 Free, si une personne veut se lancer pour le bout de code, pas de pb.
-
Je crois que corrector faisait référence à la petite XSS, mais une XSS qui demande de modifier les en-têtes client + sur un site qui ne reçoit pas d'entrée utilisateur particulière et ne stocke rien + qui n'a même pas d'intérêt de détournement, l'intérêt est limité. C'était juste pour montrer qu'on peut mettre n'importe quoi, ce que les développeurs de certains sondages en ligne qui remplacent d'office la variable $adresse_ip par le X-Forwarded-For s'il est présent n'ont pas compris :)
-
qui n'a même pas d'intérêt de détournement, l'intérêt est limité.
Certes.
C'est une question de principe, hein.
-
Pour le décodage des IPv4 encapsulées dans les IPv6 Free, si une personne veut se lancer pour le bout de code, pas de pb.
Il est impossible de distinguer à coup sûr une simple coincidence numérique du 6to4rd généralisé.
Tout dépend du taux de faux positif/faux négatif.
Quels sont les paramètres utilisés par les autres opérateurs en 6rd?
-
Je crois que corrector faisait référence à la petite XSS
Comme ça, c'est bon ?
En appelant htmlspecialchars pour les variables où il est possible d'injecter du code :
$ClientIp = $_SERVER["REMOTE_ADDR"];//On obtient l'adresse IP
$ClientIp2 = htmlspecialchars($_SERVER["HTTP_CLIENT_IP"]);
$Forwarded = htmlspecialchars($_SERVER["HTTP_X_FORWARDED_FOR"]);
$ClientPort = $_SERVER["REMOTE_PORT"];//On obtient le port source
$ServerPort = $_SERVER["SERVER_PORT"];//On obtient le port destination
$ClientHTTP = $_SERVER["SERVER_PROTOCOL"];//On obtient la version de HTTP utilisé
$Chiffrement = $_SERVER["HTTPS"];
$ClientHost = gethostbyaddr($ClientIp);//on transforme en Host avec adresse du FAI
$ClientHostTab = explode(".", $ClientHost);//on divise en segments le host par rapport à chaque point
$nb_points = substr_count($ClientHost, ".");// Nombre de point(s) dans la ligne
$ClientUA = htmlspecialchars($_SERVER["HTTP_USER_AGENT"]);
-
Au passage, il est peut-être plus rapide d'utiliser directement 'REMOTE_HOST' pour le revese DNS, plutôt que gethostbyaddr($ClientIp) ?
$ClientHost = gethostbyaddr($ClientIp);//on transforme en Host avec adresse du FAI
-
Attention au fait que le PTR peut indiquer n'importe quoi, y compris une chaîne qui n'est pas un nom de domaine existant ou valide.
-
Au passage, il est peut-être plus rapide d'utiliser directement 'REMOTE_HOST' pour le revese DNS, plutôt que gethostbyaddr($ClientIp) ?
La réponse est simple : REMOTE_HOST n'est pas activé par défaut et si on l'active dans Apache, le reverse DNS est systématiquement récupéré, ce qui va faire perdre du temps pour les autres sites web sur le serveur (surtout en cas de lenteur DNS)
Corrector, effectivement, j'ai oublié de protéger le PTR. C'est fait :
$ClientHost = htmlspecialchars(gethostbyaddr($ClientIp));//on transforme en Host avec adresse du FAI
-
213 while (udp_lport_inuse(best))
214 best += UDP_HTABLE_SIZE;
Je n'arrive pas à comprendre ce qui garantit que ce truc termine à temps!
En fait le principe est de trouver le case la moins remplie de la table et dans cette case le port le moins élevé qui soit libre.
Donc l'algo commence par une petite valeur et augmente, donc si il choisit une très grande valeur c'est qu'il a y énormèment de ports alloués et peut être que les concepteurs pensaient que c'était suffisamment improbable d'avoir 60000 ports alloués en même temps...?
-
Vous utilisez IPv4 avec le port TCP 9522
C:\Users\Paul>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1025
Nombre de ports : 64510
Je suis sous Windows 7 64-bit toutes mises à jours installées.
-
Vous utilisez IPv4 avec le port TCP 64742
C:\Users\Paul>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
Par contre sous Windows 10 c'est dans l'intervalle "normal".
-
Paul, tu as installé un soft réseau ou pour gérer une VM ?
-
Oui j'ai Virtualbox sur les 2 PC.
-
J'ai installé Virtualbox 5.0.12 sur Windows 10, redémarrer la machine, crée une machine virtuelle Windows 7 mais sans sucés : les ports dynamiques de Windows restent à la valeur par défaut.
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10586.png)
Paul, Corrector, maintenant que le port est affiché en bas de chaque page de LaFibre.info, observez vous certaines connexion ou le port est affiché en rouge (première moitié des ports TCP) ?
Port compris entre 0 et 32767 => affiché en rouge en bas de chaque page
Port compris entre 32768 et 65535 => affiché en vert en bas de chaque page
-
Oui, depuis que le site m'informe du port utilisé j'ai remarqué qu'il était toujours compris entre 9000 et 10000.
-
NB: en IPv4, le site affiche le port apres le NAT de la box. ce n'est pas forcement le meme port coté PC. Il serait interessant d'avoir le port coté PC aussi.
-
En 4G, ça affiche en rouge 22357
-
Paul, Corrector, maintenant que le port est affiché en bas de chaque page de LaFibre.info, observez vous certaines connexion ou le port est affiché en rouge (première moitié des ports TCP) ?
Question sans intérêt (réponse c'est en vert).
Ce qui s'affiche aujourd'hui n'est pas le souci, la plage étant très large.
Je n'ai pas besoin que le forum m'affiche mon port source pour voir que Firefox a récupéré un port < 2**15 quand il s'est connecté au serveur de contrôle de Tor Browser (connecté 3 fois d'ailleurs, je me demande bien pourquoi).
-
NB: en IPv4, le site affiche le port apres le NAT de la box. ce n'est pas forcement le meme port coté PC. Il serait interessant d'avoir le port coté PC aussi.
Je ne vois pas comment tu pourrais faire ça!
-
Question sans intérêt (réponse c'est en vert).
Ce qui s'affiche aujourd'hui n'est pas le souci, la plage étant très large.
Bien sur que cela peut être dans la plage verte, mais normalement cela ne devrait pas toujours être dans la plage verte, c'est pour ça que j'ai mis des couleurs : tu devrais remarquer le rouge rien qu'en fessant défiler la page si tu passes dans la plage rouge un jour.
Je suis toujours preneur d'idées sur le logiciel qui aurait modifié la configuration.
-
Les ports "clients" pour une connexion UDP ou TCP sont appelés "ports éphémères" (c'est le nom canonique bien que parfois on croise "ports dynamiques" et "ports de retour").
De quand date ce concept bizarroïde?
Est-ce une nouveauté de TCP ou bien cela vient-il d'un protocole plus ancien?
-
Cela a toujours existé.
-
Depuis l'invention du télégraphe ou plus tôt?
-
Bien sur que cela peut être dans la plage verte, mais normalement cela ne devrait pas toujours être dans la plage verte, c'est pour ça que j'ai mis des couleurs : tu devrais remarquer le rouge rien qu'en fessant défiler la page si tu passes dans la plage rouge un jour.
Voilà, c'est en rouge : "Vous utilisez IPv6 (Félicitations!) avec le port TCP 26458"
Content?
(Je ne vois pas l'intérêt de truc.)
-
Cela permet de voir que la plage de port (1025 => 65535) n'est pas qu'une illusion : tu es sorti de la plage 49152 => 65535 de Windows 7.
Il me reste à comprendre ce qui a fait cette modification.
-
Vous utilisez IPv4 avec le port TCP 15142
(Tor, IP 109.163.234.5)
-
Bonjour,
Donc si j'ai çà :
>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
C'est bon pour ipv6 ?
-
Pourquoi ce serait mauvais?
Qu'est-ce qui est mauvais pour IPv6?
-
C'est bon pour ipv6 ?
Je t'aide :
>netsh int ipv4 show dynamicport tcp
-
idem même si je mets ipv6
-
Pourquoi tu t'inquiètes pour les ports?
-
Les ports permettent juste de mettre en évidence l’utilisation de CG-Nat par certains FAI.
En aucun cas avoir un port de retour hors de la plage habituelle ne pose problème.
-
Les ports permettent juste de mettre en évidence l’utilisation de CG-Nat par certains FAI.
En aucun cas avoir un port de retour hors de la plage habituelle ne pose problème.
moi je vois souvent la ligne en rouge quand je suis en 4G chez bouygues
-
Pas étonnant pour un CG-NAT.
-
Cela permet de voir que la plage de port (1025 => 65535) n'est pas qu'une illusion : tu es sorti de la plage 49152 => 65535 de Windows 7.
Il me reste à comprendre ce qui a fait cette modification.
Je me demande si ce que retourne la commande windows sert à quelque chose, c'est bien la box qui choisit le port de sortie final... Donc çà ne sert à rien de le mettre en rouge ou en vert non ?
Sur un connexion VDSL SFR j'ai le port 1694 alors que W8 indique bien 49152 et +
-
La NAT-box peut laisser ou modifier les ports.
La Freebox préserve autant que faire se peut.
-
Étonnant buddy, tu as ce phénomène en IPv4 et en IPv6 ?
En IPv6, il n'y a pas de raison de modifier le port source.
L'activation de l'IPv6 se fait dans la Neufbox.
-
Je crois que corrector faisait référence à la petite XSS, mais une XSS qui demande de modifier les en-têtes client + sur un site qui ne reçoit pas d'entrée utilisateur particulière et ne stocke rien + qui n'a même pas d'intérêt de détournement, l'intérêt est limité.
En fait c'est surtout l'idée qu'on produise du HTML par assemblage de chaines de caractères qui me hérisse.
Le PHP est presque aussi mal adapté au Web que le C. C'est de la merde.
-
Perso je suis 2 fois sur 3 en rouge, sous Win 10 pro.
Bizarre. :-\
-
En 4G, c'est normal Breizh 29 : il y a du CG-Nat dans le réseau.
Avec la livebox ou la Bbox, en xDSL ou FTTH, je suis étonné.
-
Je ranime un peu ce sujet, mais j'ai remarqué que j'avais le port TCP marqué en rouge, alors que je suis sous windows 10 1803.
Vous utilisez IPv6 (Félicitations!) avec le port TCP 11370 (Plus d'informations)
Lorsque je recherche la plage de ports utilisés, elle est bien entre 1024 et 64511 :
C:\>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1024
Nombre de ports : 64511
C:\>netsh int ipv6 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1024
Nombre de ports : 64511
En UDP, je suis par contre sur la plage de ports normale :
C:\>netsh int ipv6 show dynamicport udp
Plage de ports dynamique du protocole udp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
C:\>netsh int ipv4 show dynamicport udp
Plage de ports dynamique du protocole udp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
Je suis à peu près sûr qu'auparavant j'avais bien un port en vert au dessus de 49152. J'ai VirtualBox d'installé.
-
Je ranime un peu ce sujet, mais j'ai remarqué que j'avais le port TCP marqué en rouge, alors que je suis sous windows 10 1803.
Lorsque je recherche la plage de ports utilisés, elle est bien entre 1024 et 64511 :
C:\>netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1024
Nombre de ports : 64511
C:\>netsh int ipv6 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 1024
Nombre de ports : 64511
Ah oui, c'est intéressant de savoir :
- quel logiciel a fait la modification
- pourquoi un tel changement a été réalisé. 16384 ports c'est suffisant pour tous les usages grand public sans exception.
-
Je n'ai rien installé récemment, c'est pourquoi je me demandais si ce n'était pas une mise à jour windows ? Car sinon, comme d'autres, j'ai Virtualbox (avec peut-être une mise à jour récente, je ne me rappelle plus de la date de la dernière), qui, en tant que logiciel de virtualisation, change peut-être la plage de ports...
-
Avec les dernières mises à jour de Windows 10, j'ai :
netsh int ipv4 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
netsh int ipv6 show dynamicport tcp
Plage de ports dynamique du protocole tcp
-------------------------------------------
Port de démarrage : 49152
Nombre de ports : 16384
Ensuite, j'ai installé VirtualBox 5.2 et je n'ai aucun changement.
-
J'avais fait les tests avec mon PC fixe. J'ai testé avec mon PC portable, même chose. Puis j'ai testé sur deux PCs au travail (un nouveau et un ancien, tous les deux en windows 10). L'un avaient les ports dynamiques commençant à 1024, l'autre, l'ancien, à 49152. L'ancien était en 1607, je l'ai upgradé en 1803, mais il est resté à 1024.
J'ai regardé aussi sur quelques serveurs, les uns en 2012 R2 et d'autres en 2016. Certains commencent à 1024, les autres à 49152.
Un point commun de ceux dont les ports dynamiques commencent à 1024 pourrait être qu'ils ont une version assez récente de nmap (zenmap). A confirmer...
-
Vivien,
lorsque sur ip.lafibre.info, mes informations TCP sont en rouge,est-ce que cela signifie qque chose? Elles sont en vert aujourd'hui.Je suis connecté à la LB4 directement par RJ45.Si tu jettes un œil sur l'historique de mes connections à IPinfo,tu devrais voir ces fameux ports en rouge.
Merci.
-
Nouveau en FTTH FREE 10G-OPON sur STA38, je danse la gigue pour l'IPV6-V4 sur le forum....
Il y a une heure, en IPV6, a l'instant en IPV4 ... sans rien changer de chez moi ...
Surement la neige qui ralenti la fibre, faudra bientôt mettre des chaines a Grenoble ...
Hé, pschitt, la haut dessus, c'est une forme d'humour et de réalité pour celui qui comprends pas ( il se reconnaîtra )
-
lorsque sur ip.lafibre.info, mes informations TCP sont en rouge,est-ce que cela signifie qque chose? Elles sont en vert aujourd'hui.Je suis connecté à la LB4 directement par RJ45.Si tu jettes un œil sur l'historique de mes connections à IPinfo,tu devrais voir ces fameux ports en rouge.
Quand le port est en rouge, c'est qu'il est inférieur à 32768.
Windows (sauf Windows XP), comme Linux et MacOS utilisent par défaut des ports > ou = à 32768.
Par contre un client qui est derrière un CG-Nat ou un autre équipement qui coupe la connexion TCP va avoir régulièrement un port < 32768.
C'est donc un indicateur que la connexion n'est pas directe mais est coupée.
Comme le Livebox v4 ne coupe pas la connexion ni Orange sur son réseau fixe, je pense dans ton cas à un paramétrage de Windows modifié par un logiciel. Pourrais-tu vérifier ?
Comment vérifier la plage de port de mon système d'exploitation ?
Sous Windows :
1/ Démarrer une "Invite de commandes"
2/ Copier / coller la commande netsh int ipv4 show dynamicport tcp
(https://lafibre.info/testdebit/windows10/201512_ports_dynamique_winows10_10586.png)
Sous Linux :
1/ Démarrer un terminal
2/ Copier / coller la commande cat /proc/sys/net/ipv4/ip_local_port_range
(https://lafibre.info/testdebit/ubuntu/201512_ports_dynamique_ubuntu.png)
Sous MacOS X :
1/ Démarrer un terminal
2/ Copier / coller la commande sysctl net.inet.ip.portrange.first net.inet.ip.portrange.last
-
Alors,Vivien,j'ai lancé la cmd et j'ai :
port de démarrage 1025
nombre de ports 64510
et en ce moment le forum m'indique que je suis le port TCP 31500 (En rouge)
-
J'avais aussi les mauvaises plages suite à l'installation d'Hamachi, malgré la désinstallation de les ports étaient pas revenus à la normal.
Après on peut régler à nouveau la bonne plage de port avec : netsh int ipv4 set dynamicportrange protocol=tcp startport=49152 numberofports=16384
-
il n'y a pas de 'mauvaises plages' c'est juste une indication.
-
Je me suis mal exprimé, je voulais dire la plage par défaut.
-
Désolé pour la réponse tardive :'( ...
En ce moment,les ports sont les suivants:
Informations TCP :
•Port TCP source utilisé par votre connexion IPv4 : TCP 16507
•Port TCP source utilisé par votre connexion IPv6 : TCP 16506 (Plus d'informations)
•Port TCP destination utilisé : TCP 443
Tout le monde reste assez pudique,j'ai l'impression.Je pose la question: Est-ce que mon trafic Internet est intercepté par un logiciel?
-
Non, dans ton cas c'est simplement qu'un logiciel a modifié les paramètres par défaut pour une raison que j'ignore...
-
Grand merci pour ta patience,Vivien.
Mais je vois que ce mystère perdure depuis qque temps déjà.C'est vraiment stressant.Est-ce que cela pourrait être l'AV?
-
Les anti-virus sont des logiciels qui modifient en profondeur un système d'exploitation et qui ne remettent pas forcement tout en ordre après la désinstallation.
Cela pourrait être différents logiciels qui ont besoins d'intercepter du trafic (anti-virus / firewall), de faire du NAT (VPN, logiciel de virtualisation) ou qui nécessitent beaucoup de ports ouverts simultanèment (je n'ai pas d'exemple à donner, 16383 ports, c'est déjà pas mal)
Bref, ce n'est pas un logiciel de bureautique ou un jeu qui va faire cette modification assez spécifique.
-
Tu m'y fais penser.J'ai appliqué TCP Optimizer et voilà le résultat.C'est la seule modification réseau à laquelle j'ai procédé récemment.
-
heu, pour ces "logiciels d'optimisation TCP" généralement c'est plutôt contre productif sur les connexions FTTH (qui généralement ne souffre pas de problèmes de saturation d'upload/download)...
Est-ce qu'il y a une raison particulière à l'utiliser ?
-
Les logiciels d’optimisation TCP étaient nécessaire avec Windows XP et sa Rwin fixe de 64Ko.
Depuis Windows Vista, c'est une Rwin dynamique et il n'y rien à optimiser, sauf des cas d'usages très spécifiques, mais cela concerne presque personne (exemple: réduire au maximum l'empreinte mémoire de TCP/IP, faire des connexion 10 Gb/s entre deux continents, ...)
Effectivement, je pense que ce type de logiciels ne sont pas pertinents aujourd'hui.
Je serais intéressé par la liste des modifications qu'ils apportent.
-
C'est un genre de GUI sur l'équivalent de /proc/sys/net Windowsien. Ca me semble dangereux de mettre ca dans les mains de quelqu'un qui ne maitrise pas la stack TCP/IP dans ses moindres recoins :P
Donc oui, ne pas comprendre les réglages qu'on applique ici, c'est prendre un gros risque de déteriorer non seulement la partie réseau de son coté, mais possiblement une partie du réseau Internet (en le sous-exploitant avec un Rwin minuscule par exemple, ou toucher aux différents TTL TCP, à Nagle, etc...)
Ca modifie surement la plage de ports sources TCP, entre autres joyeusetés.
Après c'est sûr que contrairement à Linux, sous Windows tout se fait en root, par des personnes qui comprennent pas forcèment ce qu'elles font, et donc ça peut tout casser ^^)
-
Il existe quand même une vidéo explicative:
https://www.youtube.com/watch?v=x3iJkU3UyVw
(https://lafibre.info/images/smileys/@GregLand/cs.gif)
-
Mwé , beaucoup de monde savent beaucoup de choses sur le Web.
Mais souvent, faut pas trop creuser hein ^^
Après je pense que les gens qui ont fait le softs, ont du proposer des réglages de base, sans avoir à toucher à chaque paramètre individuellement
-
Tout ses réglages sont connus et documentés par Microsoft dans la doc sur la base de registre. Tcpoptimizer n'est qu'un GUI sur la base de registre.
Franchement en 2019 avec une connexion fibre ce logiciel n'a plus trop d'intérêt sauf si on veut perdre en performance :P
-
...Effectivement, je pense que ce type de logiciels ne sont pas pertinents aujourd'hui...
...Franchement en 2019 avec une connexion fibre ce logiciel n'a plus trop d'intérêt sauf si on veut perdre en performance :P
Merci pour ces conseils avisés. (https://lafibre.info/images/smileys/@GregLand/ab.gif)
-
Ouai en gros, pour du usage end-user, utilise un OS récent , et ça devrait suffir ; point final ;-)
-
Ouai en gros, pour du usage end-user, utilise un OS récent , et ça devrait suffir ; point final ;-)
Win7 ! Ce n'est pas ce qu'il y a de très récent ! (https://lafibre.info/images/smileys/@GregLand/ad.gif)
-
C'est suffisant. MS backport les patchs d'optim pour les stacks TCP de tous ses OS supportés. Mais Win7 est actuellement en sursis, en Security Only , encore pour un an à la date d'aujourd'hui.
Peu à peu, cet OS va devenir trop "vieux" , à l'image de XP aujourd'hui qui a une stack TCP loin d'être optimisée pour les réseaux courants (notamment sa RWIN fixe, d'où ces logiciels qui permettent de jouer avec, lorsque c'est possible).
Ya encore le temps ;-)
-
C'est suffisant...
Merci pour l'appréciation. (https://lafibre.info/images/smileys/@GregLand/ay.gif)
...Mais Win7 est actuellement en sursis, en Security Only , encore pour un an à la date d'aujourd'hui...
Je suis au courant et, si Micro$oft ne le prolonge pas comme il l'a fait avec XP, je vais être obligé de me familiariser plus avant avec Linux Mint. (https://lafibre.info/images/smileys/Triste/triste_1.gif)
-
Sur un Windows 10 upgradé (machine vendue avec Windows 8 ), j'ai la plage standard en UDP et la plage 1025-15000 en TCP.
Aucune idée du logiciel responsable de ces changements... mais je suis pas le seul avec ce range de 13976 ports démarrant au 1025 (https://superuser.com/questions/1090122/what-is-the-default-range-of-ephemeral-ports-in-windows-7/1090129).
-
Installation de NetBSD 7.2 sur SGI MIPS (http://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-7.2/sgimips/INSTALL.html#Preparing%20your%20System%20for%20NetBSD%20installation):
Note that some older bootproms have an interesting bug in reading the
kernel via TFTP. They handle the port number as a signed entity, and can
thus not connect to ports >32767. You can work around this problem on
the TFTP server (given that it is a NetBSD host) by using ``sysctl'' to
set ``net.inet.ip.anonportmin'' and ``net.inet.ip.anonportmax'' to more
suitable values. For example:
# sysctl -w net.inet.ip.anonportmin=16384
# sysctl -w net.inet.ip.anonportmax=32767
Cela peut expliquer pourquoi quelques vieux *nix ont la plage [16384;32767].