Wie viele Ports kann ein Linux-Server maximal öffnen?

Wie viele Ports kann ein Linux-Server maximal öffnen?

Hafenbezogene Konzepte:

In der Netzwerktechnologie gibt es zwei Arten von Ports: logische Ports und physische Ports. Ein physischer Port ist ein physisch vorhandener Port, beispielsweise eine Schnittstelle an einem ADSL-Modem, Hub, Switch oder Router, der zur Verbindung mit anderen Netzwerkgeräten verwendet wird, beispielsweise ein RJ-45-Port, SC-Port usw. Logische Ports beziehen sich auf Ports, die zur logischen Unterscheidung von Diensten verwendet werden, wie z. B. Service-Ports im TCP/IP-Protokoll. Die Portnummer reicht von 0 bis 65535, z. B. Port 80 für Webbrowser-Dienste und Port 21 für FTP-Dienste. Aufgrund der großen Anzahl physischer und logischer Ports wird zur Unterscheidung der Ports jeder Port nummeriert, was die Portnummer darstellt.

Ports können anhand ihrer Portnummern in drei Kategorien unterteilt werden:

1: Bekannter Hafen

Die erkannten Portnummern reichen von 0 bis 1023. Sie sind eng an einige gängige Dienste gebunden. Beispielsweise verwendet der FTP-Dienst Port 21. Sie können diese Zuordnungsbeziehung in /etc/services sehen.

2: Registrierte Ports:

Von 1024 bis 49151. Sie sind lose an einige Dienste gebunden. Das heißt, an diese Ports sind viele Dienste gebunden und diese Ports werden auch für viele andere Zwecke verwendet.

3: Dynamische und/oder private Ports

Dynamische Ports oder private Portnummern sind Portnummern, die von jeder Software zur Kommunikation mit jeder anderen Software unter Verwendung des Transmission Control Protocol (oder User Transport Protocol) des Internets verwendet werden können. Dynamische Ports reichen im Allgemeinen von 49152 bis 65535

In Linux ist die Anzahl der Ports begrenzt. Wenn ich für mein Programm bestimmte Ports reservieren möchte, muss ich diesen Portbereich kontrollieren. /proc/sys/net/ipv4/ip_local_port_range definiert den lokalen TCP/UDP-Portbereich. Sie können net.ipv4.ip_local_port_range = 1024 65000 in /etc/sysctl.conf definieren.

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
[root@localhost ~]# echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

In Bezug auf Häfen und Dienste habe ich einmal eine öffentliche Toilette als Beispiel verwendet. Jede Toilette in der öffentlichen Toilette ist wie jeder Hafen im System. Den Menschen Komfort zu bieten, ist der sogenannte Dienst. Wenn Sie diese Dienste anbieten, müssen Sie den Hafen (die Toilette) öffnen. Wenn jemand auf die Toilette geht, wird an diesen Häfen eine Verbindung hergestellt. Wenn die Toilette von jemandem besetzt ist, bedeutet dies, dass die Anschlussnummer vom Dienst belegt ist. Wenn hier eines Tages der öffentliche Toilettendienst nicht mehr angeboten wird und die öffentliche Toilette abgerissen wird, gibt es natürlich keine Anschlussnummer. Ein anschaulicheres Beispiel ist die Lobby einer Bank. Die Portnummern sind die Schalter, und die Leute, die die Nummern entgegennehmen und Geschäfte abwickeln, sind wie die verschiedenen Clients, die mit dem Server verbunden sind. Sie senden Geschäftskontakte über die Port-Umleitungstechnologie an den Schalter. Ein weiteres leicht verständliches Beispiel: Die Portnummer entspricht den Stationen der Hochgeschwindigkeitsstrecke. Changsha, Yueyang usw. stellen beispielsweise jeweils eine Portnummer dar. Passagiere verwenden Zugfahrkarten, um zu ihren jeweiligen Stationen zu gelangen, was den IP-Paketen entspricht, die von jeder Anwendung an den Serverport gesendet werden.

Beziehung zwischen Häfen und Diensten

Wozu dienen Ports? Wir wissen, dass ein Host mit einer IP-Adresse viele Dienste bereitstellen kann, z. B. Webdienste, FTP-Dienste, SMTP-Dienste usw. Diese Dienste können vollständig über eine IP-Adresse implementiert werden. Wie unterscheidet der Host zwischen verschiedenen Netzwerkdiensten? Offensichtlich können wir uns nicht ausschließlich auf IP-Adressen verlassen, da die Beziehung zwischen IP-Adressen und Netzwerkdiensten eine Eins-zu-viele-Beziehung ist. Tatsächlich werden verschiedene Dienste durch „IP-Adresse + Portnummer“ unterschieden.

Die Entsprechung zwischen Portnummern und entsprechenden Diensten wird in der Datei /etc/services gespeichert, in der die meisten Ports zu finden sind.

Wie kann ich überprüfen, ob der Port geöffnet ist? Wenn Sie das nicht selbst herausfinden, werden Sie gar nicht wissen, dass es so viele Methoden gibt!

1: Das Nmap-Tool erkennt offene Ports

Nmap ist ein Tool zum Scannen von Netzwerken und zur Host-Erkennung. Die Installation von nmap ist sehr einfach, wie unten in der RPM-Installation gezeigt.

[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm 
Warnung: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA-Signatur: NOKEY, Schlüssel-ID 37017186
Vorbereitung... #################################################### [100%]
   1:nmap ####################################################### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm 
Warnung: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA-Signatur: NOKEY, Schlüssel-ID 37017186
Vorbereitung... #################################################### [100%]
   1:nmap-frontend ##################################################### [100%]

Die Verwendung von nmap könnte sehr ausführlich und langatmig beschrieben werden, deshalb werde ich hier nicht näher darauf eingehen. Wie unten gezeigt, überprüft nmap 127.0.0.1 die offenen Ports auf dem lokalen Computer und scannt alle Ports. Natürlich können Sie auch andere Server-Ports scannen.

[root@DB-Server Server]# nmap 127.0.0.1
 
Start von Nmap 4.11 ( http://www.insecure.org/nmap/ ) am 22.06.2016 15:46 CST
Interessante Ports auf localhost.localdomain (127.0.0.1):
Nicht angezeigt: 1674 geschlossene Ports
Hafenstaatsdienst
22/tcp öffne ssh
25/TCP SMTP öffnen
111/tcp öffne rpcbind
631/TCP-IP öffnen
1011/tcp offen unbekannt
3306/tcp MySQL öffnen
 
Nmap fertig: 1 IP-Adresse (1 Host aktiv) in 0,089 Sekunden gescannt
Sie haben neue E-Mails in /var/spool/mail/root
[root@DB-Server Server]#

2: Verwenden Sie das Netstat-Tool, um offene Ports zu erkennen

[root@DB-Server Server]# netstat -anlp | grep 3306
tcp 0 0 :::3306 :::* LISTEN 7358/mysqld         
[root@DB-Server Server]# netstat -anlp | grep 22
tcp 0 0 :::22 :::* LISTEN 4020/sshd           
tcp 0 52 ::ffff:192.168.42.128:22 ::ffff:192.168.42.1:43561 HERGESTELLT 6198/2              
[root@DB-Server Server]#

Wie oben gezeigt, fühlt sich dieses Tool nicht so prägnant an wie nmap. Natürlich ist es nicht so leistungsfähig wie nmap.

3: Das Tool lsof erkennt offene Ports

[root@DB-Server Server]# service mysql start
MySQL wird gestartet... [OK]
[root@DB-Server Server]# lsof -i:3306
BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE KNOTENNAME
mysqld 7860 mysql 15u IPv6 44714 TCP *:mysql (HÖREN)
[root@DB-Server Server]# Dienst MySQL Stop
MySQL wird heruntergefahren. [OK]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 
[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd 3153 root 4u IPv4 9115 TCP localhost.localdomain:ipp (HÖREN)
Portmap 3761 RPC 4u IPv4 10284 TCP *:sunrpc (HÖREN)
rpc.statd 3797 rpcuser 7u IPv4 10489 TCP *:1011 (HÖREN)
sshd 4020 root 3u IPv6 12791 TCP *:ssh (HÖREN)
sendmail 4042 root 4u IPv4 12876 TCP localhost.localdomain:smtp (HÖREN)

4: SS-Tool erkennt offene Ports

[root@localhost ~]# ss -ntl
Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port              
HÖREN 0 50 *:3306 *:*                  
HÖREN 0 128 *:111 *:*                  
HÖREN 0 128 *:22 *:*                  
HÖREN 0 32 *:8808 *:*                  
HÖREN 0 128 [::]:111 [::]:*                  
HÖREN 0 128 [::]:22 [::]:*                  
[root@localhost ~] 

5: Mit Telnet prüfen, ob der Port geöffnet ist

Auch wenn der Server-Port im Listening-Status ist, die iptables-Firewall den Port jedoch blockiert, kann mit dieser Methode nicht erkannt werden, ob der Port geöffnet ist.

6: Überprüfen Sie mit dem Netcat-Tool, ob der Port geöffnet ist

[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Verbindung zum Port 192.168.42.128 1521 [tcp/ncube-lm] erfolgreich!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Verbindung zum Port 192.168.42.128 1521 [tcp/ncube-lm] erfolgreich!
0
[root@DB-Server ~]# nc -vv 192.168.42.128 1433
nc: Verbindung zu 192.168.42.128 Port 1433 (TCP) fehlgeschlagen: Keine Route zum Host

Geschlossene Ports und offene Ports

Das Schließen und Öffnen eines Ports sollten zwei verschiedene Konzepte sein. Jeder Port hat einen entsprechenden Dienst. Um einen Port zu schließen, müssen Sie daher nur den entsprechenden Dienst schließen. Wie im folgenden Beispiel gezeigt, ist der MySQL-Dienst eingeschaltet und Port 3306 befindet sich im Abhörstatus. Nachdem der MySQL-Dienst ausgeschaltet wurde, wird Port 3306 natürlich geschlossen.

[root@DB-Server Server]# service mysql start
MySQL wird gestartet... [OK]
[root@DB-Server Server]# lsof -i:3306
BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE KNOTENNAME
mysqld 7860 mysql 15u IPv6 44714 TCP *:mysql (HÖREN)
[root@DB-Server Server]# Dienst MySQL Stop
MySQL wird heruntergefahren. [OK]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]#

Aus Sicherheitsgründen oder zur Ressourcenerhaltung sollten daher einige nicht benötigte Ports und Dienste im System geschlossen werden. Schließen Sie den entsprechenden Port. Darüber hinaus schränkt die Firewall den entsprechenden Port ein, selbst wenn der Dienst aktiviert ist, sodass auf den Port nicht zugegriffen werden kann. Der Port selbst wird jedoch nicht geschlossen, sondern nur blockiert.

Damit ist dieser Artikel darüber, wie viele Ports ein Linux-Server maximal öffnen kann, abgeschlossen. Weitere Informationen zu offenen Ports auf Linux-Servern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Linux-Indexknoten-Inode
  • Linux: Kein Speicherplatz mehr auf Gerät 500 – Fehler aufgrund voller Inodes
  • Details zur Linux-Netzwerkeinrichtung
  • So implementieren Sie mit MyCat die Lese-/Schreibtrennung von MySQL-Master und -Slave unter Linux
  • Versteckter Overhead von Unix/Linux-Forks
  • Informationen zu UDP in Linux
  • Linux-Swap-Partition (ausführliche Erklärung)
  • C++-Netzwerkprogrammierung unter Linux, Epoll-Technologie und IOCP-Modell unter Windows
  • Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

<<:  Lösen Sie das Problem der Datensynchronisierung beim Scrollen und Liken von Vue-Seamless-Scroll

>>:  Der gesamte Prozess der Installation von mysql5.7.22 unter der ARM64-Architektur

Artikel empfehlen

Detaillierte Erklärung der MySQL-Injektion ohne Kenntnis des Spaltennamens

Vorwort Ich habe in letzter Zeit das Gefühl, dass...

Ubuntu 15.04 öffnet den MySQL-Remote-Port 3306

Ubuntu 15.04 öffnet den MySQL-Remote-Port 3306. A...

Beispiel für automatischen Stoppeffekt nach Text-Scrollen

Die Wirkung ist ganz einfach: Kopieren Sie einfach...

Grundlegende Verwendung und Beispiele von yum (empfohlen)

yum-Befehl Yum (vollständiger Name Yellow Dog Upd...

Vue verwendet MockJS, um simulierte Datenfalldetails zu generieren

Inhaltsverzeichnis Installieren Sie Mockjs in Ihr...

So erstellen Sie ein Docker-Repository mit Nexus

Das mit dem offiziellen Docker-Register erstellte...

MySQL 8.X Installations-Tutorial unter Windows

Zuvor habe ich MySQL 5.7 verwendet, aber da MySQL...

Detaillierte Erläuterung des MySQL-Mechanismus zur gemeinsamen Abfrageoptimierung

Inhaltsverzeichnis Strategie zur Ausführung föder...

Grafisches Beispiel für die Verwaltung von Datenträgerkontingenten unter Linux

Das Datenträgerkontingent ist die Speichergrenze ...

So kompilieren Sie Nginx neu und fügen Module hinzu

Beim Kompilieren und Installieren von Nginx werde...

Informationen zur Bildlaufleiste in HTML/Bildlaufleiste entfernen

1. Die Farbe der Bildlaufleiste unter xhtml Im Ori...