Bagaimana saya bisa memeriksa apakah port mendengarkan di server Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Jika output kosong, port tidak digunakan.
Bagaimana saya bisa memeriksa apakah port mendengarkan di server Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Jika output kosong, port tidak digunakan.
Jawaban:
Anda dapat memeriksa apakah suatu proses mendengarkan pada port TCP atau UDP dengan netstat -tuplen
.
Untuk memeriksa apakah beberapa port dapat diakses dari luar (ini mungkin yang Anda inginkan), Anda dapat menggunakan pemindai port seperti Nmap dari sistem lain . Menjalankan Nmap pada host yang sama yang ingin Anda periksa tidak berguna untuk tujuan Anda.
-t
, -u
, -p
, -l
, -e
, dan -n
. Berkat parser opsi itu dapat dinyatakan sebagai -tuplen
. linux.die.net/man/8/netstat
telnet
perintah biasanya hanya mendukung TCP, jadi Anda kurang beruntung jika layanan yang ingin Anda periksa berjalan pada protokol lain.
sudo netstat -tuplen
. Ini akan memberi Anda proses yang dimiliki bukan hanya oleh Anda, tetapi juga oleh orang lain, dan, itu akan mencetak detail tambahan (seperti PID / Nama Program) jika belum ditampilkan sebagai pengguna non-root.
Cara tercepat untuk menguji apakah port TCP terbuka (termasuk firewall perangkat keras yang mungkin Anda miliki), adalah dengan mengetik, dari komputer jarak jauh (mis. Desktop Anda):
telnet myserver.com 80
Yang akan mencoba membuka koneksi ke port 80 di server itu. Jika Anda mendapatkan waktu istirahat atau menolak, porta tidak terbuka :)
if you get a time out or deny, the port is not open
OK, secara ringkas, Anda memiliki server yang dapat Anda masuki. Anda ingin melihat apakah ada sesuatu yang mendengarkan pada beberapa port. Sebagai root, jalankan:
netstat -nlp
ini akan menampilkan daftar proses mendengarkan pada port TCP dan UDP. Anda dapat memindai (atau menerima) proses yang Anda minati, dan / atau nomor port yang ingin Anda lihat.
Jika proses yang Anda harapkan tidak ada, Anda harus memulai proses itu dan memeriksa netstat lagi. Jika prosesnya ada, tetapi mendengarkan pada antarmuka dan port yang tidak Anda harapkan, maka ada masalah konfigurasi (misalnya, itu bisa mendengarkan, tetapi hanya pada antarmuka loopback, sehingga Anda akan melihat 127.0.0.1::3030 dan tidak ada baris lain untuk port 3306, dalam hal konfigurasi default untuk MySQL).
Jika prosesnya sudah selesai, dan sedang mendengarkan pada port yang Anda harapkan, Anda dapat mencoba menjalankan "telnet" ke port itu dari Macbook Anda di kantor / rumah Anda, misalnya,
telnet xxxxxxxxxxxx.co.uk 443
Itu akan menguji apakah (dengan asumsi port standar) bahwa ada server web yang dikonfigurasi untuk SSL. Perhatikan bahwa tes ini menggunakan telnet hanya akan berfungsi jika proses mendengarkan pada port TCP. Jika ini adalah port UDP, Anda dapat juga mencoba dengan klien apa pun yang akan Anda gunakan untuk menghubungkannya. (Saya melihat bahwa Anda menggunakan port 224. Ini masqdialer, dan saya tidak tahu apa itu).
Jika layanan ada di sana, tetapi Anda tidak dapat mencapainya secara eksternal, maka ada firewall yang memblokir Anda. Dalam hal ini, jalankan:
iptables -L -n
Ini akan menampilkan semua aturan firewall seperti yang didefinisikan pada sistem Anda. Anda dapat memposting itu, tetapi, secara umum, jika Anda tidak mengizinkan semua yang ada di rantai INPUT, Anda mungkin perlu secara eksplisit mengizinkan lalu lintas di port yang dimaksud:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
atau sesuatu di sepanjang garis itu. Jangan jalankan perintah firewall Anda secara membabi buta berdasarkan apa yang dikatakan orang asing kepada Anda di Internet. Pertimbangkan apa yang Anda lakukan.
Jika firewall Anda di kotak memungkinkan lalu lintas yang Anda inginkan, maka perusahaan hosting Anda mungkin menjalankan firewall (misalnya, mereka hanya mengizinkan SSH (22 / tcp), HTTP (80 / tcp) dan HTTPS (443 / tcp) dan menolak semua lalu lintas masuk lainnya). Dalam hal ini, Anda harus membuka tiket helpdesk dengan mereka untuk menyelesaikan masalah ini, meskipun saya kira mungkin ada sesuatu di cPanel Anda yang memungkinkan.
Saya menggunakan kombo netstat
dan lsof
:
netstat -an | grep <portnumber>
lsof -i:<portnumber>
Untuk melihat apakah port digunakan, dan apa yang menggunakannya.
Jika Anda terhubung ke sistem dan dapat menjalankan perintah sebagai root maka Anda dapat memeriksa output dari iptables
iptables -L -vn
ini akan mencantumkan aturan firewall dan port mana yang menjadi target terbuka ACCEPT
dan target port apa pun yang ditutup secara eksplisit REJECT
.
firewall-cmd --query-port=port/protocol
, mis firewall-cmd --query-port=80/tcp
.
lsof -i :ssh
akan mencantumkan semua proses dengan port ssh terbuka, baik koneksi mendengarkan maupun aktif.
sudo
jika tidak mengembalikan output apa pun.