[Linux] [MASQUERADING] Les ports, c'est quoi ?

Éric Bischoff eric.bischoff.fr@::1
Mer 18 Aou 19:06:46 CEST 2021


Salut le Toine,


Le mardi 17 août 2021, 14:33:42 CEST Antoine Delaporte a écrit :
> (...)
> Bon. Ma question est : quel est ce f...u range par defaut ?
> 
> J'ai trouvé comment le parametré via ipables (et j'etais tellement
> persuadé que cela se reglé via le /proc...)
> 
> pex "*iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports
> 1024-31000*" (issue de
> https://inetdoc.net/guides/iptables-tutorial/masqueradetarget.html )
> 
> Mais cela ne me donnes pas la valeur par defaut !!!

La RFC 2663 constate l'usage suivant :

   https://datatracker.ietf.org/doc/html/rfc2663#section-2.4

   For most TCP/IP hosts, TU port range 0-1023 is used by servers
   listening for incoming connections. Clients trying to initiate a
   connection typically select a source TU port in the range of 1024-
   65535. However, this convention is not universal and not always
   followed. Some client stations initiate connections using a source TU
   port number in the range of 0-1023, and there are servers listening
   on TU port numbers in the range of 1024-65535.

donc en gros "l'habitude c'est de piocher des ports dans les ports 
utilisateurs, au-dessus de 1024, mais ce n'est pas normalisé".

Dans le cas particulier du noyau Linux et de la commande iptables, j'ai 
l'impression que c'est cette règle par défaut qui s'applique:

   https://www.frozentux.net/iptables-tutorial/chunkyhtml/x4422.html
   (masquerade, fait référence à snat:)

   https://www.frozentux.net/iptables-tutorial/chunkyhtml/x4679.html

   iptables will always try to avoid making any port alterations if
   possible, but if two hosts try to use the same ports, iptables will
   map one of them to another port. If no port range is specified, then if
   they're needed, all source ports below 512 will be mapped to other ports
   below 512. Those between source ports 512 and 1023 will be mapped to ports
   below 1024. All other ports will be mapped to 1024 or above. 

Donc, en gros toujours, iptables chercherait à respecter les limites de 512 et 
1024, en restant aussi bien en-dessous qu'au-dessous .

Et si j'ai bien compris, une fois que la commande iptables a déterminé 
l'intervalle, il le passe au noyau, qui obéit.


À prendre avec de très très grosses pincettes... la doc ci-dessus est pour 
iptables 1.2.1, on en est plutôt à la version 1.8.4, et il y a une grosse dose 
d'interprétation dans ce que je raconte.


-- 
Éric Bischoff




Plus d'informations sur la liste de diffusion linux