Tidak jelas apa yang Anda minta. Apa yang Anda maksud dengan "terbuka"? Apakah maksud Anda beberapa server mendengarkan pada port itu? Atau maksud Anda diizinkan oleh firewall sistem? Atau apa?
David Schwartz
Saya pikir port sedang diblokir di server saya dan ingin membuka blokir / membukanya lagi.
James Anderson
14
netstat -an | grep PORTNUMBER | grep -i listenJika output kosong, port tidak digunakan.
automatix
Jawaban:
187
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.
GNU netstat tahu parameter -t, -u, -p, -l, -e, dan -n. Berkat parser opsi itu dapat dinyatakan sebagai -tuplen. linux.die.net/man/8/netstat
joschi
3
Juga, telnetperintah biasanya hanya mendukung TCP, jadi Anda kurang beruntung jika layanan yang ingin Anda periksa berjalan pada protokol lain.
joschi
1
ya, saya menggunakan windows karena itu kebingungan.
Dexter
2
nc adalah alternatif (lebih baik) dari telnet. Ini mendukung UDP juga.
Tsvetomir Dimitrov
1
Menggunakannya dengan sudo: 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.
John Red
102
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 :)
mengatakan bahwa itu tidak mengenali "telnet" sebagai perintah ...
James Anderson
6
"yum install telnet" untuk menginstal paket klien telnet.
cjc
8
Ditulis di atas:if you get a time out or deny, the port is not open
Industri
2
Bagaimana jika Anda tidak memiliki izin untuk menginstal telnet? Apakah ada alat standar lain?
KC Baltz
3
Saya mencoba "telnet myhost 22" dan mendapatkan batas waktu. Tapi saya bisa ssh ke mesin itu. ?!
Torsten Bronger
30
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.
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.
sumber
-t
,-u
,-p
,-l
,-e
, dan-n
. Berkat parser opsi itu dapat dinyatakan sebagai-tuplen
. linux.die.net/man/8/netstattelnet
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):
Yang akan mencoba membuka koneksi ke port 80 di server itu. Jika Anda mendapatkan waktu istirahat atau menolak, porta tidak terbuka :)
sumber
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:
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,
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:
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:
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.
sumber
Saya menggunakan kombo
netstat
danlsof
:Untuk melihat apakah port digunakan, dan apa yang menggunakannya.
sumber
Jika Anda terhubung ke sistem dan dapat menjalankan perintah sebagai root maka Anda dapat memeriksa output dari iptables
ini akan mencantumkan aturan firewall dan port mana yang menjadi target terbuka
ACCEPT
dan target port apa pun yang ditutup secara eksplisitREJECT
.sumber
firewall-cmd --query-port=port/protocol
, misfirewall-cmd --query-port=80/tcp
.lsof -i :ssh
akan mencantumkan semua proses dengan port ssh terbuka, baik koneksi mendengarkan maupun aktif.sumber
sudo
jika tidak mengembalikan output apa pun.