Anda tidak dapat melakukan ping port, karena Ping menggunakan ICMP yang tidak memiliki konsep port. Port milik protokol transport layer seperti TCP dan UDP. Namun, Anda bisa menggunakan nmap untuk melihat apakah port terbuka atau tidak
nmap -p 80 example.com
Sunting: Seperti yang disebutkan flokra, nmap lebih dari sekadar ping-for-ports-thingy. Ini adalah pengawas keamanan dan peretas sahabat terbaik dan dilengkapi dengan banyak opsi keren. Periksa dokumen untuk semua kemungkinan bendera.
Anda mungkin ingin menambahkan -PNuntuk melewati penemuan host yang biasanya dilakukan nmap sebelum menguji port yang diberikan.
flokra
27
Untuk menyelamatkan beberapa orang dari beberapa masalah: nmap / can / diinstal pada windows dari tautan (atau google nmap windows), TETAPI itu tidak berfungsi pada VPN. PaPing tampaknya tidak dapat memindai berbagai alamat. Saya telah memposting skrip Python di bawah ini yang akan berfungsi melalui VPN untuk memindai berbagai port pada berbagai alamat.
23
Untuk yang lain: nmap tidak ada di Mac OS X, Anda dapat menginstal nmap melalui homebrew brew install nmapatau MacPorts.
Highway of Life
17
nping lebih cocok untuk tugas ini daripada nmap. nping adalah bagian dari distribusi nmap.
CMCDragonkai
6
Mac OSX memiliki 'Network Utility' yang memiliki tab port scanner
Shanimal
192
Buka sesi telnet ke port tertentu, misalnya:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Perintah di atas akan mengembalikan Gagal pada kode status keluar non-nol. Dalam beberapa kasus tertentu, seperti respons kosong atau cacat (lihat man curl), Anda mungkin ingin menangani kode keluar tertentu sebagai berhasil, jadi silakan periksa posting ini untuk penjelasan lebih rinci.
Saya suka ini karena curlhadir secara default pada CentOS, jadi saya tidak perlu menginstal apa pun.
bdemarest
curl bekerja pada Raspberry Pi (distro Raspian)
John M
1
Sejauh ini, ini adalah solusi paling elegan dan universal. Saya men-tweak sedikit untuk membuatnya oneliner rapi:IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
Lefty G Balogh
21
Saya menemukan solusi yang lebih sederhana menggunakan PsPing:
Juga PsPing berasal dari tim Microsoft SysInternal sehingga mungkin dianggap sedikit lebih sah ketika berhadapan dengan orang-orang yang berorientasi Microsoft lainnya. (Dan memiliki fungsionalitas yang lebih baik daripada PortQry yang sangat lama)
martyvis
PSPing memiliki keuntungan menyediakan pengukuran latensi saat menggunakan port khusus, sesuatu yang tidak dapat dilakukan Test-NetConnection (hanya melaporkan waktu respons ICMP).
Jeff Miles
14
Di Linux Anda dapat menggunakan hping tetapi menggunakan TCP, bukan ICMP.
hping (hping3 di ubuntu saya) sangat bagus. Ini mengulangi pemeriksaan seperti ping secara berkala, dan tidak seperti banyak alat yang disarankan di sini. Ini juga menguji apakah paket melewati, dan apakah port terbuka. Jika terbuka Anda dapatkan flags=SA(yaitu SYN ACK), dan jika ditutup Anda dapatkan flags=SR(yaitu SYN RST). Perhatikan bahwa Anda mungkin tidak perlu -Vbendera di sini, tetapi Anda perlu sudo / root untuk menjalankan hping.
mc0e
Luar biasa! Tidak seperti banyak jawaban lain, ini melaporkan RTT suka latensi suka pingdan ping sampai berhenti.
Edward Anderson
11
Ping sangat spesifik tetapi jika Anda ingin memeriksa apakah port terbuka atau tidak, dan menjalankan kotak Windows maka PortQry adalah teman Anda.
Saya hanya menggunakannya untuk menguji Pengontrol Domain untuk masalah konektivitas, tapi itu berhasil untuk itu, jadi seharusnya bekerja untuk Anda.
PortQry awalnya dirilis pada tahun 1999/2000 oleh tim MS Exchange tetapi versi MS terbaru tampaknya menghambatnya dengan menghilangkan kemampuan untuk menanyakan port jarak jauh (kesehatan & keselamatan).
Luke Puplett
8
Berikut adalah aplikasi konsol .NET yang cepat dan kotor:
static void Main(string[] args)
{
string addressArgument = null, portArgument = null;
System.Net.Sockets.TcpClient tcpClient = null;
try
{
addressArgument = args[0];
portArgument = args[1];
int portNumber;
portNumber = Int32.Parse(portArgument);
tcpClient = new System.Net.Sockets.TcpClient();
tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;
IPAddress address;
if (IPAddress.TryParse(args[0], out address))
{
var endPoint = new System.Net.IPEndPoint(address, portNumber);
tcpClient.Connect(endPoint);
}
else
{
tcpClient.Connect(addressArgument, portNumber);
}
Console.WriteLine("Port {0} is listening.", portArgument);
}
catch (Exception e)
{
if (e is SocketException || e is TimeoutException)
{
Console.WriteLine("Not listening on port {0}.", portArgument);
}
else
{
Console.WriteLine("Usage:");
Console.WriteLine(" portquery [host|ip] [port]");
}
}
finally
{
if (tcpClient != null)
tcpClient.Close();
}
}
Tidak ada jaminan bahwa layanan yang berjalan di port memahami ping. Ini juga membuka pertanyaan tentang "rasa" port apa yang ingin Anda ping, TCP atau UDP? Karena ping "protokol" tidak menggunakan keduanya (ping diimplementasikan menggunakan ICMP ), itu tidak masuk akal.
Saya cukup yakin bahwa pemeriksaan Nagios check_tcp melakukan apa yang Anda inginkan. Mereka dapat ditemukan di sini dan meskipun dirancang untuk digunakan dalam konteks Nagios, mereka semua adalah program mandiri.
$ ./check_tcp -H host -p 22
TCP OK - 0.010 second response time on port 22|time=0.009946s;0.000000;0.000000;0.000000;10.000000
Ini adalah satu - satunya solusi yang berfungsi untuk VPN dengan mesin klien menjadi Windows Vista atau Windows 7 , karena jawaban yang terdaftar lainnya tidak berfungsi. Jawaban ini sebelumnya dihapus dan seharusnya tidak, karena ini adalah satu-satunya solusi untuk kasus umum dunia nyata. Karena tidak ada banding yang tersedia untuk penghapusan, saya mengepos ulang untuk menyelamatkan orang lain dari frustrasi yang saya miliki ketika mencoba menggunakan jawaban lain.
Contoh di bawah ini menemukan IP mana pada VPN yang memiliki VNC / port 5900 terbuka dengan klien yang berjalan pada Windows 7.
Skrip Python (v2.6.6) pendek untuk memindai daftar IP dan Port yang diberikan:
from socket import *
fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]
setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
for p in aiPorts:
s = socket(AF_INET, SOCK_STREAM)
address = ('%s.%d' % (sNetworkAddress, h))
result = s.connect_ex((address,p))
if ( 0 == result ):
print "%s:%d - OPEN" % (address,p)
elif ( 10035 == result ):
#do nothing, was a timeout, probably host doesn't exist
pass
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Scan Completed."
Keempat variabel di atas perlu diubah agar sesuai dengan batas waktu, jaringan, host, dan port apa pun yang diperlukan. 5,0 detik pada VPN saya sepertinya cukup untuk bekerja dengan baik secara konsisten, sedikit yang tidak (selalu) memberikan hasil yang akurat. Di jaringan lokal saya, 0,5 lebih dari cukup.
Bekerja dengan baik pada Win 7 XP Pro client / Win Server 2008 R2 untuk mendiagnosis port tertutup. (Saya harus menggunakan ambang batas waktu 30 detik tetapi itu mungkin menjadi masalah dengan lingkungan server tertentu bukan masalah dengan kode ini)
Jika Anda menjalankan sistem operasi * nix, coba instal dan gunakan "zenmap", ini adalah GUI untuk nmap dan memiliki beberapa profil pemindaian yang berguna yang sangat membantu pengguna baru.
Jawaban:
Anda tidak dapat melakukan ping port, karena Ping menggunakan ICMP yang tidak memiliki konsep port. Port milik protokol transport layer seperti TCP dan UDP. Namun, Anda bisa menggunakan nmap untuk melihat apakah port terbuka atau tidak
Sunting: Seperti yang disebutkan flokra, nmap lebih dari sekadar ping-for-ports-thingy. Ini adalah pengawas keamanan dan peretas sahabat terbaik dan dilengkapi dengan banyak opsi keren. Periksa dokumen untuk semua kemungkinan bendera.
sumber
-PN
untuk melewati penemuan host yang biasanya dilakukan nmap sebelum menguji port yang diberikan.nmap windows
), TETAPI itu tidak berfungsi pada VPN. PaPing tampaknya tidak dapat memindai berbagai alamat. Saya telah memposting skrip Python di bawah ini yang akan berfungsi melalui VPN untuk memindai berbagai port pada berbagai alamat.brew install nmap
atau MacPorts.Buka sesi telnet ke port tertentu, misalnya:
Untuk menutup sesi Anda, tekan Ctrl+ ].
sumber
netcat
bekerja juga bagus dan kurang verbose.netcat
sekarang built-in MacOS HighSierra, di mana telnet dapat diinstal dari HomeBrewbrew install telnet
sumber
time
suka ditime nc -vz www.example.com 80
dan Anda akan memiliki semacam RTT juga.Jika Anda berada di instalasi windows dengan powershell v4 atau yang lebih baru, Anda dapat menggunakan modul powershell test-netconnection:
Contoh: Test-NetConnection example.com -port 80
Cmdlet ini juga memiliki alias
tnc
. Misalnyatnc example.com -port 80
sumber
Anda dapat menggunakan PaPing:
http://code.google.com/p/paping
sumber
-c *
untuk paping konstan (?).Tidak, Anda tidak bisa, karena
ping
menggunakan protokol ICMP , yang bahkan tidak memiliki konsep port.sumber
Coba
curl
perintah, seperti:Sebagai contoh:
Perintah di atas akan mengembalikan Gagal pada kode status keluar non-nol. Dalam beberapa kasus tertentu, seperti respons kosong atau cacat (lihat
man curl
), Anda mungkin ingin menangani kode keluar tertentu sebagai berhasil, jadi silakan periksa posting ini untuk penjelasan lebih rinci.sumber
curl
hadir secara default pada CentOS, jadi saya tidak perlu menginstal apa pun.IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
Saya menemukan solusi yang lebih sederhana menggunakan PsPing:
Itu bagian dari Windows Sysinternals .
sumber
Di Linux Anda dapat menggunakan hping tetapi menggunakan TCP, bukan ICMP.
sumber
flags=SA
(yaitu SYN ACK), dan jika ditutup Anda dapatkanflags=SR
(yaitu SYN RST). Perhatikan bahwa Anda mungkin tidak perlu-V
bendera di sini, tetapi Anda perlu sudo / root untuk menjalankan hping.ping
dan ping sampai berhenti.Ping sangat spesifik tetapi jika Anda ingin memeriksa apakah port terbuka atau tidak, dan menjalankan kotak Windows maka PortQry adalah teman Anda.
Saya hanya menggunakannya untuk menguji Pengontrol Domain untuk masalah konektivitas, tapi itu berhasil untuk itu, jadi seharusnya bekerja untuk Anda.
sumber
Berikut adalah aplikasi konsol .NET yang cepat dan kotor:
sumber
Tidak.
Tidak ada jaminan bahwa layanan yang berjalan di port memahami ping. Ini juga membuka pertanyaan tentang "rasa" port apa yang ingin Anda ping, TCP atau UDP? Karena ping "protokol" tidak menggunakan keduanya (ping diimplementasikan menggunakan ICMP ), itu tidak masuk akal.
sumber
Saya cukup yakin bahwa pemeriksaan Nagios check_tcp melakukan apa yang Anda inginkan. Mereka dapat ditemukan di sini dan meskipun dirancang untuk digunakan dalam konteks Nagios, mereka semua adalah program mandiri.
sumber
Ini adalah satu - satunya solusi yang berfungsi untuk VPN dengan mesin klien menjadi Windows Vista atau Windows 7 , karena jawaban yang terdaftar lainnya tidak berfungsi. Jawaban ini sebelumnya dihapus dan seharusnya tidak, karena ini adalah satu-satunya solusi untuk kasus umum dunia nyata. Karena tidak ada banding yang tersedia untuk penghapusan, saya mengepos ulang untuk menyelamatkan orang lain dari frustrasi yang saya miliki ketika mencoba menggunakan jawaban lain.
Contoh di bawah ini menemukan IP mana pada VPN yang memiliki VNC / port 5900 terbuka dengan klien yang berjalan pada Windows 7.
Skrip Python (v2.6.6) pendek untuk memindai daftar IP dan Port yang diberikan:
Hasilnya tampak seperti:
Keempat variabel di atas perlu diubah agar sesuai dengan batas waktu, jaringan, host, dan port apa pun yang diperlukan. 5,0 detik pada VPN saya sepertinya cukup untuk bekerja dengan baik secara konsisten, sedikit yang tidak (selalu) memberikan hasil yang akurat. Di jaringan lokal saya, 0,5 lebih dari cukup.
sumber
Ada alat ringan untuk itu, yang disebut tcping: http://www.linuxco.de/tcping/tcping.html
sumber
Di Bash shell, Anda dapat menggunakan file perangkat TCP pseudo , misalnya:
Ini adalah versi yang menerapkan batas waktu 1 detik:
sumber
Jika Anda menjalankan sistem operasi * nix, coba instal dan gunakan "zenmap", ini adalah GUI untuk nmap dan memiliki beberapa profil pemindaian yang berguna yang sangat membantu pengguna baru.
sumber