Android

Bagaimana untuk menyemak pelabuhan mendengar di linux (port yang digunakan)

How to Check All Open Ports in Ubuntu

How to Check All Open Ports in Ubuntu

Isi kandungan:

Anonim

Apabila masalah penyelesaian masalah rangkaian atau isu khusus aplikasi salah satu perkara pertama yang perlu dipertimbangkan adalah apa yang sebenarnya digunakan oleh pelabuhan pada sistem anda dan aplikasi mana yang didengar pada port tertentu.

Artikel ini menerangkan bagaimana untuk mencari perkhidmatan mana yang mendengar di mana pelabuhan menggunakan perintah netstat , ss dan lsof . Arahan ini boleh digunakan untuk semua sistem operasi berasaskan Linux dan Unix seperti macOS.

Apakah Pelabuhan Mendengar?

Port rangkaian dikenalpasti dengan nombornya, alamat IP yang berkaitan, dan jenis protokol komunikasi seperti TCP atau UDP.

Port pendengaran ialah port rangkaian di mana aplikasi atau proses didengar, bertindak sebagai titik akhir komunikasi.

Setiap pelabuhan mendengar boleh dibuka atau ditutup (ditapis) menggunakan firewall. Secara umum, port terbuka ialah port rangkaian yang menerima paket masuk dari lokasi terpencil.

Anda tidak boleh mempunyai dua perkhidmatan yang mendengar port yang sama pada alamat IP yang sama.

Contohnya, jika anda menjalankan pelayan web Apache yang mendengar pada port 80 dan 443 dan cuba untuk memasang Nginx yang kemudiannya akan gagal dimulakan kerana port HTTP dan HTTPS sudah digunakan.

Semak Pelabuhan Mendengar dengan netstat

netstat adalah alat baris arahan yang dapat memberikan maklumat mengenai sambungan rangkaian.

Untuk menyenaraikan semua port TCP atau UDP yang sedang didengar, termasuk perkhidmatan yang menggunakan port dan status soket menggunakan arahan berikut:

sudo netstat -tunlp

Pilihan yang digunakan dalam perintah ini mempunyai makna yang berikut:

  • -t - Paparkan port TCP. -u - Tunjukkan port UDP. -n - Tunjukkan alamat berangka dan bukannya menyelesaikan tuan rumah. -l - Tunjuk hanya pelabuhan mendengar. -p - Tunjukkan PID dan nama proses pendengar. Maklumat ini ditunjukkan hanya jika anda menjalankan arahan sebagai root atau sudo user.

Output akan kelihatan seperti ini:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

Lajur penting dalam kes kami ialah:

  • Proto - Protokol yang digunakan oleh soket. Local Address - Local Address IP dan nombor port di mana proses mendengar. PID/Program name - PID dan nama proses.

sudo netstat -tnlp | grep:22

Output menunjukkan bahawa pada port mesin ini 22 digunakan oleh pelayan SSH:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

Sekiranya output kosong, bermakna tiada apa yang didengar di pelabuhan.

Anda juga boleh menapis senarai berdasarkan kriteria, contohnya, PID, protokol, keadaan, dan sebagainya.

netstat adalah usang dan digantikan dengan ss dan ip , tetapi masih ia adalah arahan yang paling digunakan untuk memeriksa sambungan rangkaian.

Semak Pelabuhan Mendengar dengan ss

ss adalah netstat baru. Ia tidak mempunyai beberapa ciri netstat tetapi mendedahkan lebih banyak keadaan TCP dan ia lebih cepat sedikit. Pilihan perintah kebanyakannya sama supaya peralihan dari netstat ke ss tidak sukar.

Untuk mendapatkan senarai semua port pendengaran dengan ss anda akan menaip:

sudo ss -tunlp

Keluaran hampir sama dengan yang dilaporkan oleh netstat :

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

Semak Pelabuhan Mendengar dengan lsof

lsof adalah utiliti baris perintah yang kuat yang menyediakan maklumat mengenai fail yang dibuka oleh proses.

Di Linux, semuanya adalah fail. Anda boleh memikirkan soket sebagai fail yang menulis ke rangkaian.

Untuk mendapatkan senarai semua pelabuhan TCP yang mendengar dengan jenis lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

Pilihan yang digunakan adalah seperti berikut:

  • -n - Jangan menukar nombor port ke nama pelabuhan. -p - Jangan selesaikan nama host, tunjukkan alamat berangka. -iTCP -sTCP:LISTEN - Tunjukkan hanya fail rangkaian dengan keadaan TCP LISTEN.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

Kebanyakan nama lajur output adalah jelas:

  • COMMAND , PID , USER - Nama, pid dan pengguna yang menjalankan program yang berkaitan dengan port. NAME - Nombor port.

Untuk mengetahui proses apa yang sedang didengar di port tertentu, misalnya, port 3306 akan anda gunakan:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

Menunjukkan output bahawa port 3306 digunakan oleh pelayan MySQL:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

Untuk mendapatkan maklumat lanjut, lawati halaman lelaki lsof dan baca mengenai semua pilihan berkuasa lain alat ini.

Kesimpulannya

Kami telah menunjukkan kepada anda beberapa arahan yang boleh anda gunakan untuk memeriksa pelabuhan apa yang sedang digunakan pada sistem anda, dan bagaimana untuk mencari proses yang didengar di pelabuhan tertentu.

terminal