Sie können keine Ports anpingen, da Ping ICMP verwendet, das nicht das Konzept von Ports hat. Ports gehören zu den Transportschichtprotokollen wie TCP und UDP. Sie können jedoch nmap verwenden , um festzustellen, ob Ports offen sind oder nicht
nmap -p 80 example.com
Edit: Wie bereits erwähnt, ist nmap mehr als nur ein Ping-for-Ports-Ding. Es ist der beste Freund der Sicherheitsprüfer und Hacker und bietet jede Menge coole Optionen. Überprüfen Sie das Dokument auf alle möglichen Flags.
Möglicherweise möchten Sie hinzufügen -PN, um die Hosterkennung zu überspringen, die nmap normalerweise durchführt, bevor Sie den angegebenen Port testen.
Flokra
27
Um einigen Leuten Ärger zu ersparen: nmap / kann / kann unter Windows über Link (oder Google nmap windows) installiert werden , ABER es funktioniert nicht über VPNs. PaPing schien nicht in der Lage zu sein, einen Adressbereich zu scannen. Ich habe unten ein Python-Skript gepostet, das über VPN arbeitet, um einen Bereich von Ports auf einem Bereich von Adressen zu scannen.
23
Für andere: nmap existiert unter Mac OS X nicht, Sie können nmap über Homebrew brew install nmapoder MacPorts installieren .
Highway of Life
17
nping ist für diese aufgabe besser geeignet als nmap. nping ist Teil der nmap-Verteilung.
CMCDragonkai
6
Mac OSX hat "Network Utility", die eine Registerkarte Port-Scanner hat
Shanimal
192
Öffnen Sie eine Telnet-Sitzung für den bestimmten Port. Beispiel:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Anstelle von Paping können Sie auch Cryping verwenden, das schon viel länger verwendet wird und das Pingen einiger Dienste sowie Ports unterstützt.
Kann man damit einen beliebigen Port anpingen oder nur 80?
Luke Puplett
@ LukePuplett ändern Sie einfach die Nummer 80 im Beispiel. Führen Sie es aus, indem Sie paping.exe <Hostname / IP> -p <Portnummer> -c <Anzahl der Versuche> eingeben
David Costa
Das funktioniert super. Verwenden Sie diese -c *Option für ständiges Papieren (?).
Der obige Befehl gibt bei einem Exit-Statuscode ungleich Null " Fail" zurück . In bestimmten Fällen, z. B. bei einer leeren oder fehlerhaften Antwort (siehe man curl), möchten Sie möglicherweise bestimmte Beendigungscodes als erfolgreich behandeln. Weitere Informationen hierzu finden Sie in diesem Beitrag .
Ich mag das, weil curles auf CentOS standardmäßig vorhanden ist, so dass ich nichts installieren muss.
bdemarest
Curl arbeitete an einem Himbeer-Pi (Distribution Raspian)
John M
1
Dies ist mit Abstand die eleganteste und universellste Lösung. Ich habe es leicht optimiert, um es zu einem ordentlichen Oneliner zu machen: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
Ich habe mit PsPing eine einfachere Lösung gefunden:
PsPing stammt ebenfalls vom Microsoft SysInternal-Team und kann daher im Umgang mit anderen Microsoft-orientierten Personen als etwas legitimer angesehen werden. (Und hat eine bessere Funktionalität als der sehr alte PortQry)
Martyvis
PSPing bietet den Vorteil, dass bei Verwendung eines benutzerdefinierten Ports die Latenz gemessen werden kann, was Test-NetConnection nicht kann (es gibt nur die ICMP-Antwortzeit an).
Jeff Miles
14
Unter Linux können Sie hping verwenden , es wird jedoch TCP anstelle von ICMP verwendet.
hping (hping3 in meinem Ubuntu) ist ausgezeichnet. Es wiederholt die Sonde in regelmäßigen Abständen wie Ping und im Gegensatz zu vielen der hier vorgeschlagenen Tools. Außerdem wird getestet, ob das Paket durchkommt und ob der Port offen ist. Wenn es offen ist, erhalten Sie flags=SA(dh SYN ACK), und wenn es geschlossen ist, erhalten Sie flags=SR(dh SYN RST). Beachten Sie, dass Sie das -VFlag hier wahrscheinlich nicht benötigen , aber Sie benötigen sudo / root, um hping auszuführen.
mc0e
Ausgezeichnet! Im Gegensatz zu vielen anderen Antworten werden hier die RTT-Latenz pingund Pings bis zum Stillstand gemeldet.
Edward Anderson
11
Ping ist sehr spezifisch, aber wenn Sie überprüfen möchten, ob ein Port offen ist oder nicht und eine Windows-Box verwenden, ist PortQry Ihr Freund.
Ich habe es nur zum Testen von Domänencontrollern auf Konnektivitätsprobleme verwendet, aber es hat gut funktioniert, sollte also für Sie funktionieren.
PortQry wurde ursprünglich 1999/2000 vom MS Exchange-Team herausgegeben, aber die aktuelle Version von MS scheint es gestört zu haben, indem die Möglichkeit zum Abfragen von Remote-Ports (Gesundheit und Sicherheit) entfernt wurde.
Luke Puplett
8
Hier ist eine schnelle und schmutzige .NET-Konsolen-App:
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();
}
}
Es gibt keine Garantie dafür, dass der auf dem Port ausgeführte Dienst Ping versteht. Es wirft auch die Frage auf, welche "Variante" des Ports Sie anpingen möchten, TCP oder UDP? Da das "Ping" -Protokoll keine verwendet (Ping wird mit ICMP implementiert ), ergibt es keinen Sinn.
Ich bin mir ziemlich sicher, dass Nagios check_tcp probe macht, was Sie wollen. Sie finden sich hier und obwohl entwickelt , um in einem Nagios Kontext verwendet werden, sie sind alle eigenständige Programme.
$ ./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
Dies ist die einzige Lösung, die für VPNs mit dem Clientcomputer Windows Vista oder Windows 7 funktioniert, da andere aufgelistete Antworten einfach nicht funktionieren. Diese Antwort wurde zuvor gelöscht und hätte nicht gelöscht werden dürfen, da dies die einzige Lösung für einen alltäglichen Fall ist. Da für das Löschen kein Rechtsmittel verfügbar ist, stelle ich es erneut zur Verfügung, um anderen die Frustration zu ersparen, die ich beim Versuch hatte, die anderen Antworten zu verwenden.
Das folgende Beispiel zeigt, welche IP-Adressen im VPN mit VNC / Port 5900 geöffnet sind, wenn der Client unter Windows 7 ausgeführt wird.
Ein kurzes Python (v2.6.6) -Skript zum Scannen einer bestimmten Liste von IPs und Ports:
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."
Die vier Variablen am oberen Rand müssten geändert werden, damit sie dem Zeitlimit, dem Netzwerk, den Hosts und den Ports entsprechen, die benötigt werden. 5,0 Sekunden auf meinem VPN schienen ausreichend zu sein, um richtig und konsistent zu arbeiten, weniger lieferte (immer) keine genauen Ergebnisse. In meinem lokalen Netzwerk war 0,5 mehr als genug.
Funktioniert perfekt unter Win 7 XP Pro Client / Win Server 2008 R2, um einen geschlossenen Port zu diagnostizieren. (Ich musste einen Schwellenwert von 30 Sekunden verwenden, aber das kann ein Problem mit bestimmten Server-Umgebung sein, kein Problem mit diesem Code)
Wenn Sie ein * nix-Betriebssystem verwenden, versuchen Sie, "zenmap" zu installieren und zu verwenden, es ist eine GUI für nmap und verfügt über mehrere nützliche Scan-Profile, die dem neuen Benutzer eine große Hilfe sind.
Antworten:
Sie können keine Ports anpingen, da Ping ICMP verwendet, das nicht das Konzept von Ports hat. Ports gehören zu den Transportschichtprotokollen wie TCP und UDP. Sie können jedoch nmap verwenden , um festzustellen, ob Ports offen sind oder nicht
Edit: Wie bereits erwähnt, ist nmap mehr als nur ein Ping-for-Ports-Ding. Es ist der beste Freund der Sicherheitsprüfer und Hacker und bietet jede Menge coole Optionen. Überprüfen Sie das Dokument auf alle möglichen Flags.
quelle
-PN
, um die Hosterkennung zu überspringen, die nmap normalerweise durchführt, bevor Sie den angegebenen Port testen.nmap windows
) installiert werden , ABER es funktioniert nicht über VPNs. PaPing schien nicht in der Lage zu sein, einen Adressbereich zu scannen. Ich habe unten ein Python-Skript gepostet, das über VPN arbeitet, um einen Bereich von Ports auf einem Bereich von Adressen zu scannen.brew install nmap
oder MacPorts installieren .Öffnen Sie eine Telnet-Sitzung für den bestimmten Port. Beispiel:
Um Ihre Sitzung zu beenden, drücken Sie Ctrl+ ].
quelle
netcat
funktioniert auch super und ist weniger ausführlich.netcat
ist jetzt in MacOS HighSierra integriert, wobei Telnet von HomeBrew aus installiert werden kannbrew install telnet
quelle
time
like in verwenden, habentime nc -vz www.example.com 80
Sie auch eine Art RTT.Wenn Sie eine Windows-Installation mit Powershell v4 oder neuer ausführen, können Sie das Powershell-Modul test-netconnection verwenden:
Beispiel: Test-NetConnection example.com -port 80
Dieses Cmdlet verfügt auch über den Alias
tnc
. Z.Btnc example.com -port 80
quelle
Sie können PaPing verwenden:
http://code.google.com/p/paping
quelle
-c *
Option für ständiges Papieren (?).Nein, das können Sie nicht, da
ping
das ICMP-Protokoll verwendet wird , das nicht einmal ein Konzept für Ports hat.quelle
Versuchen Sie den
curl
Befehl, wie:Zum Beispiel:
Der obige Befehl gibt bei einem Exit-Statuscode ungleich Null " Fail" zurück . In bestimmten Fällen, z. B. bei einer leeren oder fehlerhaften Antwort (siehe
man curl
), möchten Sie möglicherweise bestimmte Beendigungscodes als erfolgreich behandeln. Weitere Informationen hierzu finden Sie in diesem Beitrag .quelle
curl
es auf CentOS standardmäßig vorhanden ist, so dass ich nichts installieren muss.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."
Ich habe mit PsPing eine einfachere Lösung gefunden:
Es ist Teil von Windows Sysinternals .
quelle
Unter Linux können Sie hping verwenden , es wird jedoch TCP anstelle von ICMP verwendet.
quelle
flags=SA
(dh SYN ACK), und wenn es geschlossen ist, erhalten Sieflags=SR
(dh SYN RST). Beachten Sie, dass Sie das-V
Flag hier wahrscheinlich nicht benötigen , aber Sie benötigen sudo / root, um hping auszuführen.ping
und Pings bis zum Stillstand gemeldet.Ping ist sehr spezifisch, aber wenn Sie überprüfen möchten, ob ein Port offen ist oder nicht und eine Windows-Box verwenden, ist PortQry Ihr Freund.
Ich habe es nur zum Testen von Domänencontrollern auf Konnektivitätsprobleme verwendet, aber es hat gut funktioniert, sollte also für Sie funktionieren.
quelle
Hier ist eine schnelle und schmutzige .NET-Konsolen-App:
quelle
Nein.
Es gibt keine Garantie dafür, dass der auf dem Port ausgeführte Dienst Ping versteht. Es wirft auch die Frage auf, welche "Variante" des Ports Sie anpingen möchten, TCP oder UDP? Da das "Ping" -Protokoll keine verwendet (Ping wird mit ICMP implementiert ), ergibt es keinen Sinn.
quelle
Ich bin mir ziemlich sicher, dass Nagios check_tcp probe macht, was Sie wollen. Sie finden sich hier und obwohl entwickelt , um in einem Nagios Kontext verwendet werden, sie sind alle eigenständige Programme.
quelle
Dies ist die einzige Lösung, die für VPNs mit dem Clientcomputer Windows Vista oder Windows 7 funktioniert, da andere aufgelistete Antworten einfach nicht funktionieren. Diese Antwort wurde zuvor gelöscht und hätte nicht gelöscht werden dürfen, da dies die einzige Lösung für einen alltäglichen Fall ist. Da für das Löschen kein Rechtsmittel verfügbar ist, stelle ich es erneut zur Verfügung, um anderen die Frustration zu ersparen, die ich beim Versuch hatte, die anderen Antworten zu verwenden.
Das folgende Beispiel zeigt, welche IP-Adressen im VPN mit VNC / Port 5900 geöffnet sind, wenn der Client unter Windows 7 ausgeführt wird.
Ein kurzes Python (v2.6.6) -Skript zum Scannen einer bestimmten Liste von IPs und Ports:
Die Ergebnisse sahen folgendermaßen aus:
Die vier Variablen am oberen Rand müssten geändert werden, damit sie dem Zeitlimit, dem Netzwerk, den Hosts und den Ports entsprechen, die benötigt werden. 5,0 Sekunden auf meinem VPN schienen ausreichend zu sein, um richtig und konsistent zu arbeiten, weniger lieferte (immer) keine genauen Ergebnisse. In meinem lokalen Netzwerk war 0,5 mehr als genug.
quelle
Es gibt ein leichtes Tool dafür, das tcping heißt: http://www.linuxco.de/tcping/tcping.html
quelle
In der Bash-Shell können Sie eine TCP- Pseudo-Gerätedatei verwenden , zum Beispiel:
In der folgenden Version ist eine Zeitüberschreitung von 1 Sekunde implementiert:
quelle
Wenn Sie ein * nix-Betriebssystem verwenden, versuchen Sie, "zenmap" zu installieren und zu verwenden, es ist eine GUI für nmap und verfügt über mehrere nützliche Scan-Profile, die dem neuen Benutzer eine große Hilfe sind.
quelle