GNU/Linux >> Linux Esercitazione >  >> Linux

Esaurimento della porta di rete di Linux

Hai due domande principali qui:

1.

In senso stretto IPv4, è effettivamente possibile l'esaurimento delle porte?

Sì. Prendiamo, ad esempio, un router di bilanciamento del carico che invia tutte le connessioni a un indirizzo IP NAT. È probabile che ciò accada quando hai molti SRC IP è connettersi al collo di bottiglia di un singolo DST IP .

Ciò significa che il tuo server web potrebbe avere una serie di connessioni come:

[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 

e va benissimo. Tuttavia, se tutti gli "indirizzi esterni" fossero uguali, ciò potrebbe causare un problema (ad es. "grande router che esegue NAT <---> server con un indirizzo IP").

Se dovessi postulare il motivo per cui l'esaurimento temporaneo delle porte non è un problema comune, suggerirei che è perché ogni porta richiede un servizio di ascolto e risorse sufficienti per rispondere:un'altra risorsa (memoria, CPU) è normalmente un collo di bottiglia prima.

Tuttavia, personalmente ho riscontrato alcuni problemi di esaurimento delle porte quando lavoravo presso un'azienda di bilanciamento del carico.

2. Perché una porta utilizzata può presentare un problema per un servizio in ascolto?

"Il che consente l'uso di porte temporanee da 1024-65535, che se ho servizi che si collegano alla porta 3306 (mySQL, per esempio), a volte non si avviano perché la porta è in uso."

Il server mySQL non può collegarsi a quella porta se è in uso, ad esempio da localhost:3306 o su tutte le interfacce. Ad esempio, vedi la riga 0.0.0.0:80 nel seguente netstat uscita?

[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     

Ciò significa che la porta 80 è in ascolto su tutti interfacce locali al server. Se un altro processo contiene la porta 80 prima del mio nginx il server si avvia, nginx non sarà in grado di assumere il controllo di quella porta e probabilmente fallirà la procedura di avvio.

Normalmente, la porta 3306 va bene perché i servizi di ascolto hanno porte (o intervalli) predefiniti richiesti dalla macchina host, ad es. porta 80 e 443 per i server web.


Linux
  1. Linux – Porta seriale Raspberrypi?

  2. Controlla l'uso della porta in Linux

  3. Come aprire la porta in Linux

  4. come utilizzare netstat su una porta specifica in Linux

  5. Il comando Linux ottiene la porta inutilizzata

Come configurare la rete in Vagrant

Come trovare il numero di porta di un servizio in Linux

Come modificare la porta SSH in Linux

Come eseguire il ping di un numero di porta in Linux

Apertura di una porta su Linux

Esempi di comandi ip per gestire la rete in Linux