Dans quelle mesure est-il sûr de changer la plage de ports éphémères Linux

14

Je vois la plage de ports éphémères suivante sur ma boîte Linux.

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

Je veux étendre la plage de ports pour commencer à partir d'environ 16 000. Une question rapide ici est: dans quelle mesure est-il sûr de changer la plage en contexte pour les autres applications? D'autres applications seront-elles affectées par ce changement? Je comprends qu'une application n'est affectée que si elle utilise le ou les ports dans la plage de ports spécifiée. Mais en général, comment ces types de problèmes sont-ils traités?

Ashwin Tumma
la source
Je ne pense pas qu'il y ait d'effet sur d'autres applications, mais je n'en suis pas sûr. Question interessante.
ikrabbe
Droite. Même moi, j'ai essayé de rechercher une autre documentation, et je n'ai trouvé aucun effet sur d'autres applications. Les deux liens suivants sont d'excellentes explications de la raison pour laquelle j'étais confronté à ce problème: vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html ncftp.com/ncftpd/doc/misc /ephemeral_ports.html
Ashwin Tumma
@ikrabbe Cela aura certainement un effet sur d'autres applications si, par exemple, votre navigateur ouvre un port éphémère pour contacter un site Web, puis quelqu'un / chose essaie de démarrer une application qui, par coïncidence, utilise ce port. L'application échouera.
goldilocks
3
Par souci d'exhaustivité, la syntaxe pour modifier la plage de numéros de port est la suivante: $ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin Tumma

Réponses:

10

La modification de la plage de ports éphémères peut entraîner des problèmes si vous utilisez Mesos .

Mesos publie les ressources d'un hôte sur divers cadres Mesos qui peuvent ensuite choisir d'utiliser les ressources publiées . Les ressources publiées incluent le processeur, la mémoire, les ports, etc. L'ensemble de ports par défaut que Mesos annonce est 31000-32000 . Cela évite un conflit avec la plage de ports éphémères Linux par défaut de 32768-61000 .

Notamment, Mesos ne sait pas si un port est utilisé par un autre processus, il suit simplement l'affectation des ports aux entités qu'il orchestre ( Mesos Tasks & Mesos Executors ). Donc, si vous modifiez la plage de ports éphémères de telle sorte qu'elle chevauche la plage de ports Mesos, il est probable qu'un processus arbitraire utilisera un port éphémère qui est en fait l'un de ces "ports Mesos". Cela pourrait conduire Mesos à proposer ce port à un framework Mesos , qui rencontrerait des échecs apparemment aléatoires de ses exécuteurs Mesos et / ou tâches Mesos car ils ne pourront pas se lier à ce port.

Si vous devez augmenter votre plage de ports éphémères et devez également exécuter Mesos, vous pouvez modifier les ports publiés via un paramètre de configuration mesos-slave(qui sera bientôt renommé mesos-agent) de --resources.

erik.weathers
la source
4

Vous pouvez obtenir une liste des services potentiellement affectés en recherchant ce qui se trouve dans cette plage dans votre /etc/servicesfichier local , par exemple:

awk '/^#/ { next } $2+0 >= 16000 && $2+0 < 32768 { print }' /etc/services

Ou au lieu faisant autorité:

wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv
awk -F, '$2+0 >= 16000 && $2+0 < 32768 { print }' service-names-port-numbers.csv
Josip Rodin
la source
Merci pour le script awk, cela aide certainement à identifier les ports répertoriés dans les services!
Ashwin Tumma