Ich habe mehrere Dienste auf aufeinanderfolgenden Ports laufen (und lausche auf ihnen) in einem eingeschränkten Bereich (1024+). Von Zeit zu Zeit muss ich diese Dienste neu starten und es kommt vor, dass einer der Dienste den Port eines anderen Dienstes als lokalen Port verwendet, um eine Verbindung zur Datenbank herzustellen. Als Ergebnis beschwert sich ein anderer Dienst, dass er auf dem jetzt belegten Port nicht lauschen kann. Ich muss den Dienst manuell mit netstat ermitteln, um eine Portänderung zu erzwingen, indem ich genau diesen Dienst neu starte, damit der Port jetzt für die Verwendung durch einen anderen Dienst frei ist.
Gibt es eine Methode, um zu verhindern, dass der Port zum Öffnen verwendet wird, und um zuzulassen, dass er nur im Abhörmodus geöffnet wird?
System: Linux
Derzeit wird der Portbereich von 9000-9100 verwendet.
Antwort1
Normalerweise sollten diese Ports bereits außerhalb des "flüchtigen" Portbereichs liegen (der nicht dasselbe ist wie unprivilegierte Ports). Der Bereich wird durch dennet.ipv4.ip_local_port_range
sysctl, und auf meinem System werden standardmäßig 32768–60999 angezeigt.
Wenn der local_port_range hoch genug ist, bedeutet dies, dass Port 9000 nie automatisch als Quellport ausgewählt werden sollte (obwohl dies Programme nicht daran hindert,ausdrücklichBindung an diesen Port).
Sie können Ihre Ports auch zum net.ipv4.ip_local_reserved_ports
Sysctl hinzufügen (über /etc/sysctl.d); diese Option erfordert eine durch Leerzeichen getrennte Liste einzelner Portnummern.