GNU/Linux >> Belajar Linux >  >> Linux

Kehabisan port jaringan Linux

Anda memiliki dua pertanyaan utama di sini:

1.

Sebenarnya IPv4 berbicara, apakah port exhaustion benar-benar mungkin?

Ya. Ambil, misalnya, router penyeimbang beban yang mengirim semua koneksi ke alamat IP NAT. Hal ini mungkin terjadi jika Anda memiliki banyak SRC IP s terhubung ke hambatan dari satu DST IP .

Artinya, server web Anda dapat memiliki banyak koneksi seperti:

[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 

dan itu baik-baik saja. Namun, jika semua 'Alamat Asing' sama, ini dapat menyebabkan masalah (mis. 'router besar yang menjalankan NAT <---> server dengan satu alamat IP').

Jika saya harus mendalilkan mengapa kehabisan port sementara bukan masalah umum, saya sarankan itu karena setiap port memerlukan layanan mendengarkan dan sumber daya yang cukup untuk merespons - sumber daya lain (memori, cpu) biasanya merupakan hambatan pertama.

Namun, saya pribadi menemukan beberapa masalah kehabisan port saat bekerja di perusahaan penyeimbangan beban.

2. Mengapa port bekas dapat menimbulkan masalah untuk layanan mendengarkan?

"Yang memungkinkan penggunaan port efemeral dari 1024-65535, bahwa jika saya memiliki layanan yang mengikat port 3306 (mySQL, misalnya), terkadang layanan tersebut gagal dimulai karena port sedang digunakan."

Server mySQL tidak dapat mengikat ke port itu jika sedang digunakan - katakanlah oleh localhost:3306 atau di semua antarmuka. Misalnya, lihat baris 0.0.0.0:80 di netstat berikut keluaran?

[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     

Artinya, port 80 mendengarkan semua antarmuka lokal ke server. Jika proses lain menyimpan port 80 sebelum nginx saya server dimulai, nginx tidak akan dapat mengontrol port tersebut dan kemungkinan akan gagal dalam prosedur memulainya.

Biasanya, port 3306 baik-baik saja karena layanan mendengarkan memiliki port (atau rentang) yang telah ditentukan sebelumnya yang diminta dari mesin host - mis. porta 80 dan 443 untuk server web.


Linux
  1. Cara Mengubah Port SSH Di Linux

  2. Linux – Port Serial Raspberrypi?

  3. Menguji secara efisien apakah port terbuka di Linux?

  1. Periksa penggunaan port di Linux

  2. Cara membuka port di Linux

  3. cara menggunakan netstat pada port tertentu di Linux

  1. Perintah Linux dapatkan port yang tidak digunakan

  2. Linux SCP mendefinisikan port tujuan

  3. Penerusan port di Linux tanpa iptables?