Wie sicher ist es, den Linux Ephemeral Port-Bereich zu ändern?

14

Auf meiner Linux-Box wird der folgende kurzlebige Portbereich angezeigt.

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

Ich möchte den Portbereich auf ungefähr 16000 erweitern. Eine kurze Frage lautet hier: Wie sicher ist es, den Bereich im Kontext der anderen Anwendungen zu ändern? Sind andere Anwendungen von dieser Änderung betroffen? Ich verstehe, dass eine Anwendung nur betroffen ist, wenn sie die Ports im angegebenen Portbereich verwendet. Aber wie werden diese Probleme im Allgemeinen behandelt?

Ashwin Tumma
quelle
Ich glaube nicht, dass es Auswirkungen auf andere Anwendungen gibt, bin mir aber nicht sicher. Interessante Frage.
ikrabbe
Richtig. Sogar ich habe versucht, eine andere Dokumentation nachzuschlagen, und keine Auswirkungen auf andere Anwendungen festgestellt. Die folgenden beiden Links sind hervorragende Erklärungen für den Grund, warum ich mit diesem Problem konfrontiert war : vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html ncftp.com/ncftpd/doc/misc /ephemeral_ports.html
Ashwin Tumma
@ikrabbe Es hat sicherlich Auswirkungen auf andere Anwendungen, wenn z. B. Ihr Browser einen kurzlebigen Port öffnet, um eine Website zu kontaktieren, und jemand versucht, eine Anwendung zu starten, die diesen Port zufällig verwendet. Die Anwendung schlägt fehl.
Goldlöckchen
3
Der Vollständigkeit halber lautet die Syntax zum Bearbeiten des Portnummernbereichs wie folgt: $ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin Tumma

Antworten:

10

Das Ändern des kurzlebigen Portbereichs kann zu Problemen führen, wenn Sie Mesos verwenden .

Mesos kündigt die Ressourcen eines Hosts an verschiedene Mesos-Frameworks an, die dann die angekündigten Ressourcen verwenden können. Zu den angekündigten Ressourcen gehören CPU, Arbeitsspeicher, Ports usw. Die von Mesos angekündigte Standardgruppe von Ports ist 31000-32000 . Dies vermeidet einen Konflikt mit dem ephemeren Standardportbereich von Linux von 32768-61000 .

Insbesondere weiß Mesos nicht, ob ein Port von einem anderen Prozess verwendet wird, sondern verfolgt lediglich die Zuweisung von Ports zu den von ihm orchestrierten Entitäten ( Mesos Tasks & Mesos Executors ). Wenn Sie also den kurzlebigen Portbereich so ändern, dass er sich mit dem Mesos-Portbereich überschneidet, wird wahrscheinlich ein beliebiger Prozess einen kurzlebigen Port verwenden, der tatsächlich einer dieser "Mesos-Ports" ist. Dies könnte dazu führen, dass Mesos diesen Port einem Mesos Framework anbietet , bei dem scheinbar zufällige Fehler der Mesos Executors und / oder Mesos Tasks auftreten, da sie sich nicht an diesen Port binden können.

Wenn Sie Ihren kurzlebigen Portbereich erweitern und Mesos ausführen müssen, können Sie die angekündigten Ports über den mesos-slave(bald umbenannten mesos-agent) Konfigurationsparameter von ändern --resources.

erik.weathers
quelle
4

Sie können eine Liste der potenziell betroffenen Dienste abrufen, indem Sie in Ihrer lokalen /etc/servicesDatei nachsehen, was sich in diesem Bereich befindet. Beispiel:

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

Oder am maßgeblichen Ort:

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
quelle
Vielen Dank für das awk-Skript, es hilft definitiv bei der Identifizierung der Ports, die in den Diensten aufgeführt sind!
Ashwin Tumma