Auteur Sujet: Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports  (Lu 427911 fois)

0 Membres et 1 Invité sur ce sujet

alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 170
  • Delta S 10G-EPON sur Les Ulis (91)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #732 le: 20 février 2016 à 16:44:31 »
Marin, je ne sais pas si tu as suivi l'échange, mais on essaye de comprendre pourquoi un abonné qui a plage de port 32768 à 49151, n'arrive pas à s'authentifier sur le site EDF avec son smartphone ou sa tablette android en WiFi (mais OK avec 3G/4G), pas plus avec son PC en Ubuntu, mais OK avec son PC en seven, avec un message d'erreur sur la connexion SSL.

Toute cette chaîne complexe, comme tu l'as rappelé, pourrait entrainer, dans ce contexte A+P, une erreur liée aux ports source utilisés pour les différentes connexions initiées.
« Modifié: 20 février 2016 à 20:44:57 par alain_p »

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #733 le: 20 février 2016 à 16:52:07 »
A priori le système continue à faire ce qu'il veut, j'ai du mal à voir pourquoi ça poserait problème dans ce cas. Pour moi la théorie est la suivante : le navigateur utilise un port P1 qui dépend de la configuration de l'OS, s'il est pas dans le bon intervalle, la Freebox va changer le port en P2 (compris entre 32768 à 49151 dans ce cas), le serveur va répondre en utilisant P2 et la Freebox va faire suivre à la machine source vers P1.
C'est même le principe de base du NAPT dès que deux périphériques utilisent le même port TCP/UDP/..., netfilter va chercher un port libre et changer le port; la fonction nf_nat_l4proto_unique_tuple est appelée depuis les gestionnaires TCP, UDP, UDPLITE, SCTP et DCCP :

http://lxr.free-electrons.com/source/net/netfilter/nf_nat_proto_common.c#L37
37 void nf_nat_l4proto_unique_tuple(const struct nf_nat_l3proto *l3proto,
 38                                  struct nf_conntrack_tuple *tuple,
 39                                  const struct nf_nat_range *range,
 40                                  enum nf_nat_manip_type maniptype,
 41                                  const struct nf_conn *ct,
 42                                  u16 *rover)
 43 {
 44         unsigned int range_size, min, i;
 45         __be16 *portptr;
 46         u_int16_t off;
 47
 48         if (maniptype == NF_NAT_MANIP_SRC)
 49                 portptr = &tuple->src.u.all;
 50         else
 51                 portptr = &tuple->dst.u.all;
 52
 53         /* If no range specified... */
 54         if (!(range->flags & NF_NAT_RANGE_PROTO_SPECIFIED)) {
 55                 /* If it's dst rewrite, can't change port */
 56                 if (maniptype == NF_NAT_MANIP_DST)
 57                         return;
 58
 59                 if (ntohs(*portptr) < 1024) {
 60                         /* Loose convention: >> 512 is credential passing */
 61                         if (ntohs(*portptr) < 512) {
 62                                 min = 1;
 63                                 range_size = 511 - min + 1;
 64                         } else {
 65                                 min = 600;
 66                                 range_size = 1023 - min + 1;
 67                         }
 68                 } else {
 69                         min = 1024;
 70                         range_size = 65535 - 1024 + 1;
 71                 }
 72         } else {
 73                 min = ntohs(range->min_proto.all);
 74                 range_size = ntohs(range->max_proto.all) - min + 1;
 75         }
 76
 77         if (range->flags & NF_NAT_RANGE_PROTO_RANDOM) {
 78                 off = l3proto->secure_port(tuple, maniptype == NF_NAT_MANIP_SRC
 79                                                   ? tuple->dst.u.all
 80                                                   : tuple->src.u.all);
 81         } else if (range->flags & NF_NAT_RANGE_PROTO_RANDOM_FULLY) {
 82                 off = prandom_u32();
 83         } else {
 84                 off = *rover;
 85         }
 86
 87         for (i = 0; ; ++off) {
 88                 *portptr = htons(min + off % range_size);
 89                 if (++i != range_size && nf_nat_used_tuple(tuple, ct))
 90                         continue;
 91                 if (!(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL))
 92                         *rover = off;
 93                 return;
 94         }
 95 }
 96 EXPORT_SYMBOL_GPL(nf_nat_l4proto_unique_tuple);
 

nf_nat_used_tuple est défini ici :
http://lxr.free-electrons.com/source/net/netfilter/nf_nat_core.c#L134
132 /* Is this tuple already taken? (not by us) */
133 int
134 nf_nat_used_tuple(const struct nf_conntrack_tuple *tuple,
135                   const struct nf_conn *ignored_conntrack)
136 {
137         /* Conntrack tracking doesn't keep track of outgoing tuples; only
138          * incoming ones.  NAT means they don't have a fixed mapping,
139          * so we invert the tuple and look for the incoming reply.
140          *
141          * We could keep a separate hash if this proves too slow.
142          */
143         struct nf_conntrack_tuple reply;
144
145         nf_ct_invert_tuplepr(&reply, tuple);
146         return nf_conntrack_tuple_taken(&reply, ignored_conntrack);
147 }
148 EXPORT_SYMBOL(nf_nat_used_tuple);

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #734 le: 20 février 2016 à 16:57:41 »
Marin, je ne sais pas si tu as suivi l'échange, mais on essaye de comprendre pourquoi un abonné qui a plage de port 32768 à 49151, n'arrive pas à s'authentifier sur le site EDF avec son smartphone ou sa tablette android en WiFi (mais OK avec 3G/4G), pas plus avec son PC en Ubuntu, mais OK avec son PC en seven, avec un message d'erreur sur le connexion SSL.

Toute cette chaîne complexe, comme tu l'as rappelé, pourrait entrainer, dans ce contexte A+P, une erreur liée aux ports source utilisés pour les différentes connexions initiées.
Non, parce que SSL ne s'occupe pas des ports ou des IP ou de TCP.

SSL est indépendant de TCP/IP.

alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 170
  • Delta S 10G-EPON sur Les Ulis (91)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #735 le: 20 février 2016 à 17:15:11 »
Mais il y a clairement différentes sessions SSL initiées avec différentes adresses, avec des ports source différents. Par exemple, dans ma capture, dans la première session, le port source est 54214, et dans la deuxième 54208. Donc il est théoriquement possible qu'une connexion sous Linux soit faite sans translation et l'autre avec et que le passage de l'une à l'autre provoque des problèmes dans l'établissement de connexion SSL. Pour windows, il est clair que l'on est hors plage de ports attribués, et que donc tout se fait sous translation de port.

Maintenant, je vous le demande, si le problème n'est pas là, pourquoi une différence de comportement entre 2 machines windows 7, et le reste en Android/Linux, mais qui marche quand on est en 3G !

D'ailleurs, là encore, on a de la chance de voir un utilisateur qui possède toutes ces configurations pour tester, même si c'est sur l'ADUF. J'attends de voir les Corps de l'ADUF sortir leur explication ! Ils ne savent que vérifier administrativement les dossiers.

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #736 le: 20 février 2016 à 17:23:42 »
Mais il y a clairement différentes sessions SSL initiées avec différentes adresses, avec des ports source différents. Par exemple, dans ma capture, dans la première session, le port source est 54214, et dans la deuxième 54208. Donc il est théoriquement possible qu'une connexion sous Linux soit faite sans translation et l'autre avec et que le passage de l'une à l'autre provoque des problèmes dans l'établissement de connexion SSL. Pour windows, il est clair que l'on est hors plage de ports attribués, et que donc tout se fait sous translation de port.
Les adresses sources sont toujours "translatées" : l'adresse source d'une connexion TCP, c'est IP+port.

Maintenant, je vous le demande, si le problème n'est pas là, pourquoi une différence de comportement entre 2 machines windows 7, et le reste en Android/Linux, mais qui marche quand on est en 3G !
Pour moi c'est uniquement une question de navigateur.

alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 170
  • Delta S 10G-EPON sur Les Ulis (91)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #737 le: 20 février 2016 à 17:30:36 »
Sur le smartphone ou la tablette android, le navigateur est le même que l'on soit en 3G ou en WiFi... En tout cas, je suppose que l'utilisateur ne s'amuse pas à en changer entre les tests !

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #738 le: 20 février 2016 à 17:32:58 »
Puis, chargement page privée :
163.116.9.13:443
qui me redirige vers
http://www-edf-particulier-ru1.bisystem.com/141001i/EDF-Particuliers.html
qui n'existe pas!

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #739 le: 20 février 2016 à 17:35:10 »
Sur le smartphone ou la tablette android, le navigateur est le même que l'on soit en 3G ou en WiFi... En tout cas, je suppose que l'utilisateur ne s'amuse pas à en changer entre les tests !
ou bien c'est l'antiporn de la box?

alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 170
  • Delta S 10G-EPON sur Les Ulis (91)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #740 le: 20 février 2016 à 17:35:55 »
Les adresses sources sont toujours "translatées" : l'adresse source d'une connexion TCP, c'est IP+port.

Je te parle bien du TCP source port. Dans Wireshark, cela se présente comme cela :
'Transmission Control Protocol, Src Port: 54208 (54208), Dst Port: https (443)'

Et elle devra être translatée si ce source port n'est pas dans la plage attribuée à la box.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #741 le: 20 février 2016 à 17:37:16 »
Pour revenir au sujet, je viens de tomber sur un cas intéressant sur le forum de l'ADUF.

La personne en question vient d'être migrée en FTTH à Saint Ouen l'Aumône et a donc une IPv4 partagée (ports 32768 à 49151). Depuis la migration elle rencontre des problèmes de connexion à certains sites HTTPS (sont cités EDF et Hotmail) mais seulement depuis certains appareils (smartphone, tablette Android et un PC sous Lubuntu) alors que tout fonctionne sur ses machines tournant sous Seven. Le plus bizarre c'est que même sur les appareils problématiques, il arrive visiblement à afficher la page de connexion (déjà en HTTPS) et c'est seulement au moment de s'authentifier qu'il a un message d'erreur.

Des idées ?

Je doute fort que l'A+P y soit pour quelque chose.

IPv6 qui fout la zone peut-etre.

check la config DNS aussi. peut-être le PC qui marche utilise une config DNS différente.


alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 170
  • Delta S 10G-EPON sur Les Ulis (91)
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #742 le: 20 février 2016 à 17:38:01 »
ou bien c'est l'antiporn de la box?

Le site EDF est connu comme tel par le filtre parental, et cela change quand on passe de l'ADSL à la fibre ? Non, il faudra trouver mieux.

corrector

  • Invité
Manque d'IPv4 chez Free: Une IPv4 est partagée par 4 clients avec 1/4 des ports
« Réponse #743 le: 20 février 2016 à 17:47:05 »
Je te parle bien du TCP source port. Dans Wireshark, cela se présente comme cela :
'Transmission Control Protocol, Src Port: 54208 (54208), Dst Port: https (443)'

Et elle devra être translatée si ce source port n'est pas dans la plage attribuée à la box.
Mais le port source n'a pas de sens tout seul, il est accompagné par l'adresse.

Donc je n'y crois pas du tout.