Jawaban:
Gunakan "netstat" untuk memeriksa port yang saat ini menggunakan.
netstat -antp Proto Recv-Q Kirim-Q Alamat Lokal Alamat Asing Negara PID / Nama program tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 127.0.0.1:53 0.0.0.0:* DENGARKAN 16297 / bernama
Ini (netstat) adalah solusi tercepat ...
netstat -lnt
... tapi ini memberi Anda lebih banyak kontrol (dengan biaya kecepatan (kadang-kadang banyak kecepatan)) ...
lsof -n -i -a -u www-data
Contoh di atas misalnya menunjukkan kepada Anda semua port TCP terbuka dan dalam LISTEN
status, AND ( -a
) milik pengguna Apache ( www-data
).
Semua jawaban bagus.
Namun Anda tidak menyebutkan apakah Anda masuk ke komputer yang dimaksud. ; P
Jika tidak, maka nmap adalah teman Anda.
untuk pemula coba:
nmap -O
target
amap juga merupakan pilihan yang baik yang juga akan mencoba menebak perangkat lunak server dengan meraih halaman spanduk.
untuk pemula coba:
amap
target
1-6000
Mencoba
lsof -i :<port number>
Jika Anda mendapatkan hasil apa pun, ada sesuatu yang mendengarkan dan terikat, misalnya
# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1833 nobody 3u IPv4 51091229 0t0 TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx 1833 nobody 5u IPv4 46221856 0t0 TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx 1833 nobody 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 1833 nobody 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
nginx 1833 nobody 14u IPv4 46221857 0t0 TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx 1833 nobody 15u IPv4 51091030 0t0 TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx 11832 root 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 11832 root 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
netstat -tlnp
Tampilkan t
port cp yang sedang l
istening, tampilkan n
umbers saja (jangan pecahkan nama - buatlah lebih cepat) dan perlihatkan p
rocess yang melakukan mendengarkan ( p
hanya berfungsi jika Anda root)
netstat -ulnp
Tampilkan u
port dp yang sedang l
istening, tampilkan n
umbers saja (jangan pecahkan nama - buatlah lebih cepat) dan perlihatkan p
rocess yang melakukan mendengarkan ( p
hanya berfungsi jika Anda root)
netstat -unp
Tampilkan u
port dp yang terbuka tetapi tidak mendengarkan, tampilkan banyak n
saja (jangan pecahkan nama - buatlah lebih cepat) dan tunjukkan p
rocess yang melakukan mendengarkan ( p
hanya berfungsi jika Anda root)
netstat -an
Tampilkan a
ll port yang digunakan, tampilkan n
umbers saja - jangan pecahkan nama
lsof -i <proto>@<host>:<port>
misalnya
lsof -i tcp@localhost:25
untuk melihat apakah ada yang mendengarkan di port localhost 25 / TCP, atau
lsof -i tcp@0.0.0.0:636
untuk melihat apakah ada soket baik lokal atau jarak jauh baik mendengarkan (lokal) atau terhubung ke (lokal atau jauh) untuk setiap host / antarmuka
Anda tidak menyebutkan protokol apa yang ingin Anda gunakan, yaitu TCP atau UDP - dan juga penting untuk menyadari bahwa "port" tidak cukup granular yang didukung sistem untuk mengacaukan soket. Misalnya jika sistem Anda memiliki beberapa alamat IP maka port 80 mungkin digunakan pada semua alamat IP (baik aplikasi telah terikat ke "0.0.0.0" atau "::" atau ke setiap alamat IP berturut-turut), atau mungkin dalam gunakan hanya pada subset dari alamat IP tersebut.
Cara terbaik, dan paling pasti, untuk menentukan apakah port / alamat itu gratis dan tersedia adalah berusaha mengikatnya. Netcat berguna untuk ini.
nc -l [-s abcd] -p NN
akan mencoba untuk mengikat ke port TCP NN aktif (opsional, default akan menjadi semua alamat) abcd Tambahkan opsi -u untuk melakukan hal yang sama di UDP
Selanjutnya, untuk mengetahui apakah port benar-benar "terbuka" seperti yang Anda minta - Anda harus mulai melihat aturan firewall potensial. Lagi-lagi hal yang paling mudah adalah mencoba terhubung ke port. Gunakan netcat seperti di atas, di server, dan dari klien gunakan netcat untuk mencoba menyambungkan ke port yang Anda buka.
nc [-u] abcd NN
akan terhubung ke port NN pada abcd, menggunakan UDP jika flag -u ditentukan. Anda kemudian dapat mengetik input ke ujung klien, dan itu akan muncul di server. Jika tidak, Anda perlu melihat alat khusus sistem dan jaringan.
One-liner ini akan memberi Anda daftar semua port TCP yang digunakan. Ia bekerja di bash di Ubuntu dan OS X.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
Daftar ini akan memiliki satu port per baris tanpa informasi tambahan.
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
Banyak cara melakukannya memberi saya masalah karena mereka tidak bekerja di linux dan osx, dan / atau karena mereka tidak menunjukkan port yang digunakan oleh buruh pelabuhan, atau proses yang dimiliki oleh root. Sekarang saya hanya menggunakan program javascript ini:
(pastikan Anda telah menginstal node dan berfungsi dengan node
tidak adil nodejs
atau ubah programnya)
simpan berikut ini ke file yang disebut check-port
di jalur Anda atau di proyek Anda
#!/usr/bin/env node
var http = require('http');
var app = new http.Server();
app.listen(process.argv[2], () => {
process.exit(0)
});
mengatur izin
chmod +x path/to/check-port
lari dari jalurmu
check-port 8080
atau lari dari direktori yang sama
./check-port 8080
sejauh ini bekerja dengan cukup baik.