[Linux] [MASQUERADING] Les ports, c'est quoi ?
Antoine Delaporte
adlp@::1
Mer 18 Aou 20:04:25 CEST 2021
MERVEILLEUX !!!
FABULEUX !!!!
Pile poil ce que je recherchais comme explication !!!
25k merci !!!
(Bon, a Jean-Marc et Eric aussi, mais là, moi je dis chapi chapo
chamallow, chapi chapo bravo !!!!!)
Merci les keums merci Daniel !
Le 18/08/2021 à 18:41, Daniel Huhardeaux a écrit :
> Complément
>
> Le 18/08/2021 à 14:55, Antoine Delaporte a écrit :
>
>
>> [...]
>>> . si je prends un poste IP SNOM il sort systematiquement avec le
>>> port 2048 comme port source de l'IP publique.
>>
>> Bon, ca c'est plus sérieux, on tape dans mon acculturation : Selon
>> une légende que j'ai entendu (ie, jamais pris le temps de regarder,
>> ni comprendre comment ça marche) mais il existerais un mécanisme qui
>> permettrais a un équipement Internet de se faire natter a l’extérieur
>> sur un port particulier. Cela me dérange bcp intellectuellement (coté
>> sécu c'est pas GG, c'est plutôt LéGé, pour LaGaffe Gaston)
>>
>> Donc si quelqu'un un jour s'ennuie, je ne suis pas contre un bon
>> pointeur.
>
> Si déjà je m'ennuie, que ce soit pour la bonne cause :D
>
> dh@::1:~$ sudo cat /proc/sys/net/ipv4/ip_local_port_range
> 32768 60999
>
> J'ai réalisé le test sur Debian 10, Ubuntu 20 et RHEL8, même valeurs.
> Info donnée par la liste NetFilter.
>
> En fait il semble que ce soit la source et non le NAT qui décide du
> port source externe. qui sera rectifié par le FW si pas libre.
>
> Extraits:
> 1) Are you talking about SNAT/MASQUERADE?
>
> It will try to use whatever port is used. If the source address
> replacement results in a collision, it tries to pick a different source
> port between 1024 and 65535. The initiator is free to pick whatever
> source port they like
>
> 2) the port number for outgoing NATted connections is chosen from the
> emphemeral port number range, which can be read and configured via the
> /proc/sys/net/ipv4/ip_local_port_range file.
>
> While one probably could use NAT rules to force an outgoing connection
> to use a particular source port, it would not make sense to do so
> because that would lead to problems when two hosts on the internal
> network would try to connect to the same outside service, since the
> port tuple for both connections would be identical, which means that
> they would be mapped to the same connection.
>
> I'm guessing that on the system that establishes an outgoing
> connection, i.e. a SNOM phone, one can chose to use a fixed source
> port programmatically by setting a port number in the sockaddr_in
> structure that's passed to the connect() syscall. I'm presuming you'd
> get a EADDRNOTAVAIL error when that port is already in use. You can
> probably look this up in Stevens' TCP/IP Illustrated.
>
> 3) a tuple is "src-ip:src-port dst-ip:dst-port" and as long there is
> no collision it's 1:1, if there is a collison a random port is used -
> that's what conntrack is for
>
> 4) bind() fails for listener socket, connect() fails for outgoing (if
> everything is full). On conntrack machine, connection tracking table
> gets queried after SNAT to see if the new tuple is still unique.
>
> Ca te va ;) ?
>
Plus d'informations sur la liste de diffusion linux