GNU/Linux >> Belajar Linux >  >> Linux

Cara Memeriksa Port yang Mendengarkan di Linux (Port yang digunakan)

Saat memecahkan masalah konektivitas jaringan atau masalah khusus aplikasi, salah satu hal pertama yang harus diperiksa adalah port apa yang sebenarnya digunakan pada sistem Anda dan aplikasi mana yang mendengarkan pada port tertentu.

Artikel ini menjelaskan cara menggunakan netstat , ss dan lsof perintah untuk mengetahui layanan mana yang mendengarkan di port mana. Petunjuk ini berlaku untuk semua sistem operasi berbasis Linux dan Unix seperti macOS.

Apa itu Listening Port #

Port jaringan diidentifikasi berdasarkan nomornya, alamat IP terkait, dan jenis protokol komunikasi, seperti TCP atau UDP.

Port pendengar adalah port jaringan tempat aplikasi atau proses mendengarkan, bertindak sebagai titik akhir komunikasi.

Setiap port mendengarkan dapat dibuka atau ditutup (difilter) menggunakan firewall. Secara umum, port terbuka adalah port jaringan yang menerima paket masuk dari lokasi yang jauh.

Anda tidak dapat memiliki dua layanan yang mendengarkan port yang sama pada alamat IP yang sama.

Misalnya, jika Anda menjalankan server web Apache yang mendengarkan pada port 80 dan 443 dan Anda mencoba menginstal Nginx, nanti akan gagal untuk memulai karena port HTTP dan HTTPS sudah digunakan.

Periksa Port Pendengaran dengan netstat #

netstat adalah alat baris perintah yang dapat memberikan informasi tentang koneksi jaringan.

Untuk membuat daftar semua port TCP atau UDP yang sedang didengarkan, termasuk layanan yang menggunakan port dan status soket, gunakan perintah berikut:

sudo netstat -tunlp

Opsi yang digunakan dalam perintah ini memiliki arti sebagai berikut:

  • -t - Tampilkan port TCP.
  • -u - Tampilkan port UDP.
  • -n - Tampilkan alamat numerik alih-alih menyelesaikan host.
  • -l - Hanya tampilkan port mendengarkan.
  • -p - Tampilkan PID dan nama proses pendengar. Informasi ini hanya ditampilkan jika Anda menjalankan perintah sebagai root atau sudouser.

Outputnya akan terlihat 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  

Kolom penting dalam kasus kami adalah:

  • Proto - Protokol yang digunakan oleh soket.
  • Local Address - Alamat IP dan nomor port tempat proses mendengarkan.
  • PID/Program name - PID dan nama prosesnya.

Jika Anda ingin memfilter hasilnya, gunakan grep memerintah. Misalnya, untuk menemukan proses apa yang mendengarkan pada port TCP 22 Anda akan mengetik:

sudo netstat -tnlp | grep :22

Outputnya menunjukkan bahwa pada mesin ini port 22 digunakan oleh server SSH:

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

Jika output kosong berarti tidak ada yang mendengarkan di port.

Anda juga dapat memfilter daftar berdasarkan kriteria, misalnya, PID, protokol, status, dan sebagainya.

netstat sudah usang dan diganti dengan ss dan ip , tetapi tetap merupakan perintah yang paling sering digunakan untuk memeriksa koneksi jaringan.

Periksa Port Pendengaran dengan ss #

ss adalah netstat . yang baru . Ini tidak memiliki beberapa netstat fitur, tetapi memperlihatkan lebih banyak status TCP dan ini sedikit lebih cepat. Opsi perintah sebagian besar sama, jadi transisi dari netstat ke ss tidak sulit.

Untuk mendapatkan daftar semua port yang mendengarkan dengan ss Anda akan mengetik:

sudo ss -tunlp

Outputnya 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))

Periksa Port Pendengaran dengan lsof #

lsof adalah utilitas baris perintah yang kuat yang menyediakan informasi tentang file yang dibuka oleh proses.

Di Linux, semuanya adalah file. Anda dapat menganggap soket sebagai file yang menulis ke jaringan.

Untuk mendapatkan daftar semua port TCP yang mendengarkan dengan lsof ketik:

sudo lsof -nP -iTCP -sTCP:LISTEN

Opsi yang digunakan adalah sebagai berikut:

  • -n - Jangan mengubah nomor port menjadi nama port.
  • -p - Jangan menyelesaikan nama host, tampilkan alamat numerik.
  • -iTCP -sTCP:LISTEN - Hanya tampilkan file jaringan dengan status TCP DENGARKAN.
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)

Sebagian besar nama kolom keluaran cukup jelas:

  • COMMAND , PID , USER - Nama, pid, dan pengguna yang menjalankan program yang terkait dengan port tersebut.
  • NAME - Nomor port.

Untuk menemukan proses apa yang mendengarkan pada port tertentu, misalnya, port 3306 Anda akan menggunakan:

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

Output menunjukkan bahwa server MySQL menggunakan port 3306 :

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

Untuk informasi lebih lanjut, kunjungi halaman manual lsof dan baca tentang semua opsi canggih lainnya dari alat ini.

Kesimpulan #

Kami telah menunjukkan kepada Anda beberapa perintah yang dapat Anda gunakan untuk memeriksa port apa yang digunakan pada sistem Anda, dan cara menemukan proses apa yang mendengarkan pada port tertentu.

Jika Anda memiliki pertanyaan atau komentar, silakan tinggalkan komentar di bawah.


Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara menggunakan rsync lanjutan untuk cadangan Linux besar

  3. Cara Memeriksa Mendengarkan / Membuka Port dengan Netstat di Linux

  1. Bagaimana saya menggunakan cron di Linux

  2. Cara menggunakan systemd-nspawn untuk pemulihan sistem Linux

  3. Cara menggunakan Perintah Su di Linux

  1. Cara Memeriksa Port Terbuka di Linux dengan netstat, lsof, dan nmap

  2. Periksa layanan mana yang mendengarkan pada port linux yang diberikan

  3. Periksa penggunaan port di Linux