GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erschöpfung des Linux-Netzwerkports

Sie haben hier zwei Hauptfragen:

1.

Ist die Port-Erschöpfung im strengen Sinne von IPv4 tatsächlich möglich?

Ja. Nehmen Sie zum Beispiel einen Load-Balancing-Router, der alle Verbindungen an eine NAT-IP-Adresse sendet. Dies ist wahrscheinlich der Fall, wenn Sie viele SRC IP haben s Verbindung zum Engpass eines einzelnen DST IP .

Das bedeutet, dass Ihr Webserver eine Reihe von Verbindungen haben könnte wie:

[email protected]:~# netstat -pnt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 173.200.1.18:80      10.100.1.100:49923        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.200.1.200:10155        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:14400        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:50652        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.20.1.20:57554        ESTABLISHED 13939/nginx: worker 

und das ist vollkommen in Ordnung. Wenn jedoch alle „Fremdadressen“ gleich sind, kann dies ein Problem verursachen (z. B. „großer Router, der NAT ausführt <---> Server mit einer IP-Adresse“).

Wenn ich postulieren müsste, warum kurzlebige Porterschöpfung kein häufiges Problem ist, würde ich vorschlagen, dass dies daran liegt, dass jeder Port einen lauschenden Dienst und genügend Ressourcen zum Antworten benötigt – eine andere Ressource (Speicher, CPU) ist normalerweise zuerst ein Engpass.

Allerdings bin ich persönlich auf ein paar Port-Erschöpfungsprobleme gestoßen, als ich bei einem Load-Balancing-Unternehmen gearbeitet habe.

2. Warum kann ein verwendeter Port ein Problem für einen Überwachungsdienst darstellen?

"Was die Verwendung von ephemeren Ports von 1024-65535 zulässt, dass, wenn ich Dienste habe, die an Port 3306 gebunden sind (z. B. mySQL), sie manchmal nicht gestartet werden können, weil der Port verwendet wird."

Der mySQL-Server kann sich nicht an diesen Port binden, wenn er verwendet wird - beispielsweise von localhost:3306 oder auf allen Schnittstellen. Siehe beispielsweise die Zeile 0.0.0.0:80 im folgenden netstat Ausgabe?

[email protected]:~# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      PID/Program name
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      964/php-fpm.conf)
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1660/mysqld     
tcp        0      0 0.0.0.0:842             0.0.0.0:*               LISTEN      1317/inetd      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13938/nginx     

Das bedeutet, dass Port 80 alle überwacht lokale Schnittstellen zum Server. Wenn ein anderer Prozess Port 80 vor meinem nginx hält Server startet, nginx wird nicht in der Lage sein, die Kontrolle über diesen Port zu übernehmen und wird wahrscheinlich beim Startvorgang fehlschlagen.

Normalerweise ist Port 3306 in Ordnung, da Listening-Dienste vordefinierte Ports (oder Bereiche) haben, die von der Hostmaschine angefordert werden – z. Port 80 und 443 für Webserver.


Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. Linux – Raspberrypi Serielle Schnittstelle?

  3. Top-Port-Scanner unter Ubuntu Linux

  4. Effizient testen, ob ein Port unter Linux offen ist?

  5. Portweiterleitung unter Linux ohne iptables?

So konfigurieren Sie das Netzwerk in Vagrant

So finden Sie die Portnummer eines Dienstes in Linux

So ändern Sie den SSH-Port unter Linux

So pingen Sie eine Portnummer in Linux an

Öffnen eines Ports unter Linux

ip-Befehlsbeispiele zum Verwalten von Netzwerken in Linux