답변:
Ping은 포트 개념이없는 ICMP 를 사용하므로 포트를 핑할 수 없습니다 . 포트는 TCP 및 UDP와 같은 전송 계층 프로토콜 에 속합니다 . 그러나 nmap 을 사용 하여 포트가 열려 있는지 여부를 확인할 수 있습니다
nmap -p 80 example.com
편집 : flokra가 언급했듯이 nmap은 단순한 포트 핑 이상입니다. 보안 감사 및 해커의 가장 친한 친구이며 수많은 멋진 옵션이 제공됩니다. 문서에 가능한 모든 플래그가 있는지 확인하십시오.
-PN
주어진 포트를 테스트하기 전에 nmap이 일반적으로 수행하는 호스트 검색을 건너 뛰 도록 추가 할 수 있습니다 .
nmap windows
) 에서 Windows에 설치할 수 있지만 VPN을 통해 작동하지 않는 사람들이 있습니다. PaPing에서 다양한 주소를 스캔 할 수없는 것 같습니다. 아래에서 Python을 통해 VPN을 통해 다양한 주소의 포트를 스캔합니다.
brew install nmap
또는 MacPorts 를 통해 nmap을 설치할 수 있습니다 .
특정 포트에 대한 텔넷 세션을 엽니 다 (예 :
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
세션을 닫으려면 Ctrl+를 누르십시오 ].
netcat
또한 훌륭하게 작동하며 덜 장황합니다.
netcat
이제 내장되어 텔넷이 사제에서 설치할 수있는 것을 특징으로 맥 OS HighSierra,brew install telnet
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
time
in time nc -vz www.example.com 80
과 같이 사용 하면 RTT도 있습니다.
PaPing을 사용할 수 있습니다 :
http://code.google.com/p/paping
C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell
Connecting to www.l.google.com [209.85.225.147] on TCP 80:
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connection statistics:
Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms
-c *
일정 papinging을 위해 (?).
다음 curl
과 같은 명령을 시도하십시오 .
$ curl host:port
예를 들면 다음과 같습니다.
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
위의 명령은 0이 아닌 종료 상태 코드에서 실패 를 반환 합니다. 비어 있거나 잘못된 응답 ( man curl
) 과 같은 특정 경우에는 특정 종료 코드를 처리하는 것이 좋을 수 있으므로 자세한 내용은이 게시물 을 확인하십시오 .
curl
CentOS에는 기본적으로 존재 하기 때문에 이것을 좋아하므로 아무것도 설치할 필요가 없습니다.
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."
PsPing을 사용하여 더 간단한 솔루션을 찾았습니다.
psping 192.168.2.2:5000
Windows Sysinternals 의 일부입니다 .
PsPing은 Ping 기능, TCP ping, 대기 시간 및 대역폭 측정을 구현합니다.
Linux에서는 hping 을 사용할 수 있지만 ICMP 대신 TCP를 사용합니다.
hping example.com -S -V -p 80
flags=SA
(예 : SYN ACK) 닫히면 닫습니다 flags=SR
(예 : SYN RST). 당신은 아마도 필요는 없습니다 -V
여기에 플래그를,하지만 당신은 HPING을 실행 sudo는 / 루트 필요합니까.
ping
과 핑이 중지 될 때까지 보고합니다 .
Ping은 매우 구체적이지만 포트가 열려 있는지 여부를 확인하고 Windows 상자를 실행하려면 PortQry 가 친구입니다.
연결 문제에 대해 도메인 컨트롤러를 테스트하는 데만 사용했지만 문제를 해결 했으므로 도움이 될 것입니다.
빠르고 더러운 .NET 콘솔 앱은 다음과 같습니다.
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();
}
}
이것은 나열된 다른 답변이 단순히 작동하지 않기 때문에 클라이언트 시스템이 Windows Vista 또는 Windows 7 인 VPN에서 작동 하는 유일한 솔루션입니다 . 이 답변은 이전에 삭제되었으며 실제 사례에 대한 유일한 솔루션이므로 삭제해서는 안됩니다. 삭제에 대한 항소가 없기 때문에 다른 답변을 사용하려고했을 때의 좌절을 다른 사람들을 구하기 위해 다시 게시하고 있습니다.
아래 예는 VPN에서 VNC / 포트 5900이 Windows 7에서 실행되는 클라이언트로 열려있는 IP를 찾습니다.
주어진 IP 및 포트 목록을 스캔하는 간단한 Python (v2.6.6) 스크립트 :
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."
결과는 다음과 같습니다.
Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.
상단의 4 가지 변수는 필요한 시간 초과, 네트워크, 호스트 및 포트에 맞게 변경해야합니다. VPN에서 5.0 초만으로도 일관되게 제대로 작동하기에 충분했지만 정확한 결과를 얻지 못했습니다. 내 로컬 네트워크에서 0.5 이상으로 충분했습니다.
tcping이라는 가벼운 도구가 있습니다 : http://www.linuxco.de/tcping/tcping.html
* nix 운영 체제를 실행중인 경우 "zenmap"을 설치하고 사용하려고하면 nmap 용 GUI이며 몇 가지 유용한 스캔 프로파일이있어 새 사용자에게 큰 도움이됩니다.