address : port를 핑 (ping) 할 수 있습니까?


212

나는 네트워킹에 종사하지 않으며 Linux ping 명령 과 관련하여 다음과 같은 질문이 있습니다 .

주소 만 핑할 수 있습니까? 예를 들면 다음과 같습니다.

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

또는 address : port를 핑할 수도 있습니다 ( 예 : onofri.org:80) ?

이 것을 시도하면 작동하지 않습니다.

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

address : port 와 같은 것을 핑할 수 있습니까? 가능하다면 시도한 것이 효과가없는 이유는 무엇입니까?


8
무엇을 이루려고 노력하고 있습니까? 올바른 서비스 작동을 확인하려면 실제로 서비스를 쿼리하고 응답을 평가해야합니다. 예를 들어, 웹 서버는 연결을 수락 할 수 있지만 구성이 잘못되어 오류를 반환 할 수 있습니다.
Daniel B

5
그것은 Telnet에 대해 내가 좋아하는 것의 일부입니다. 웹 서버에 연결 GET /index.html HTTP\1.1하고 결과 마크 업과 함께 200 응답 (또는 오류 코드)을 입력 하고 확인할 수 있습니다.
Frank Thomas

7
@FrankThomas HTTP\1.1? 정말?
glglgl

5
@Navin Maybe HTTP/1.1...
glglgl

3
@glglgl; 뭐? 당신은 슬래시가 어디로 해킹을 두지 않습니까? 하지만 당신은 맞습니다, 그것은 슬래시 여야합니다.
Frank Thomas

답변:


20

크로스 플랫폼 TCP 포트 테스트 인 Paping 을 사용 하여 핑 (포트 핑) 기능을 에뮬레이트 할 수 있습니다.

code.google.com으로 Github 을 참조하십시오.

paping -p 80 google.com

8
이 프로그램의 기능에 대한 설명이 도움이 될 것입니다.
David Schwartz

16
내가 한 것처럼이 답변을 찾은 사람은 paping 만 찾을 수있는 저장소가 없으며 ARM에서 컴파일되지 않는 고대 코드입니다 .'hping '답변으로 스크롤하십시오. 포트를 테스트해야 할 때 핑을위한 완벽한 드롭 인이며 ARM을 포함한 다양한 리포지토리 (예 : Ubuntu, Arch)에서 쉽게 액세스 할 수 있습니다.
Mark

어떻게 설치 paping합니까? 리포지토리를 방문했지만 릴리스가 없습니다. 아, 전혀 신경 쓰지 않습니다. 당시 Google 코드에 액세스 할 수 없었습니다.
Shayan

310

포트는 UDPTCP 의 개념입니다 . 핑 메시지는 기술적으로 불린다 ICMP 에코 요청ICMP 에코 회신 의 일부가되는 ICMP . ICMP, TCP 및 UDP는 "형제"입니다. 그것들은 서로를 기반으로하지 않지만 IP 위에서 실행되는 세 개의 개별 프로토콜입니다.

따라서 ping포트 를 사용할 수 없습니다 . 할 있는 일은와 같은 포트 스캐너를 사용하는 것 nmap입니다.

nmap -p 80 onofri.org

telnet onofri.org 80다른 답변 중 하나에서 제안한대로을 사용할 수도 있습니다 (포트가 닫히거나 필터링 된 경우 오류가 발생합니다).


22
+1 당신은 그것을 올바르게 이해합니다. ICMP는 IP 주소 개념을 가지고 있지만 포트는없는 IP 위에 구축됩니다. TCP와 UDP도 IP 위에 있으며 "포트"를 추가하는 프로토콜입니다. ICMP, TCP 및 UDP는 그들이 운반하는 프로토콜과 관련하여 모두 동일한 "수준"에 있습니다.
Jason C

14
+1. 많은 사람들이 핑을 할 수 없다면 연결할 수 없다고 생각하지만 ICMP는 TCP 및 UDP와 다릅니다 .TCP 80의 웹 페이지를 제공하려는 경우, 방화벽에서 TCP 80 만 열어야하는 것 외에는 아무것도 없습니다. 따라서 같은 IP에 대한 Ping (예 : 차단해야합니다!)
Olivier Dulac

6
정보를 정확하게 유지하기 위해 ICMP는 TCP 또는 UDP와 같은 전송 계층 프로토콜이 아닙니다. 여러 프로토콜과 마찬가지로 네트워크 개념 모델에 완전히 맞지는 않지만 일반적으로 IP와 같이 네트워크 / 네트워크 간 계층 프로토콜로 간주됩니다. 또한 L3.5 프로토콜이라고도합니다.
YLearn

2
@BenjiWiebe는 동의했지만 다시 한 번 정확성을 기하기 위해 진술서를 작성해야합니다. 지금까지 말한 것은 ICMP, TCP 및 UDP가 관련되어 있다는 것입니다. 최고 투표 의견은 모두 같은 "수준"에 있다고 말하기까지합니다. 이것은 일반 사용자와 차이가 없지만이 사이트를 방문하는 평균이 아닌 사용자가 많이 있습니다.
YLearn

4
@OlivierDulac 당신이 경우 나도 몰라 한다 을 차단합니다. 내가 아는 대부분의 웹 서버는 열어 둡니다. ICMP는 인터넷을 돌아 다닙니다. 왜 사람들이 할 수 없다면 당신에게 연락 할 수 없다고 생각하길 원합니까?
Cruncher

86

추가 다운로드없이 많은 플랫폼에 내장되어 있기 때문에 Telnet을 사용 합니다.

telnet 명령을 사용하여 테스트하려는 포트에 연결하십시오. 아래 메시지 나 서비스 자체에서 메시지를 받으면 포트가 활성화 된 것입니다.

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

연결하는 서비스의 명령 순서를 알고 있으면 명령 (예 : HTTP / FTP GET) 을 입력하고 터미널에서 응답 및 출력을 관찰 할 수 있습니다. HTTP 500 오류와 같이 클라이언트에 전송 된 오류 정보를 표시하므로 서비스 자체를 테스트하는 데 매우 유용합니다.

연결이 거부되었다는 메시지가 표시되면 포트가 닫힙니다.

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

8
또한 화면이 완전히 검게 변하면 연결되어 있다는 표시이기도합니다.
Tensigh

훌륭한 제안. 나는 이것을 사용하여 웹 브라우저가 쉬운 옵션이 아닐 때 웹 서버가 작동했는지 테스트했습니다.
Brandon

@Brandon은 dev 머신으로 when 때처럼 ^. ^
Cruncher

브라우저의 개발자 도구는 여전히 모든 올바른 HTTP 요청 헤더를 보내지 만 전체 HTTP 응답을 검사 할 수 있기 때문에 훨씬 쉽습니다. 그런 다음 요청을 조정하려면 telnet을 사용하십시오.
궤도에서 가벼움 레이스

여기에있는 모든 대답이 가장 중요한 정보를 놓친 것 같습니다. 기술적으로 다음과 같이 포트를 "핑 (ping)"할 수 없습니까? TCP / UDP 연결을 설정할 수 있으며 해당 연결을 설정하는 데 걸린 시간 (밀리 초)을 계산합니다.
David

47

예, HPing 을 사용하여 다음 을 수행하십시오.

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

ping과 같이 원시 IP 패킷을 생성하려면 루트 권한 (또는 SELinux 기능)이 필요합니다 (시스템에서 suid 일 가능성이 높습니다).


3
이것이 "허용 된 대답"이기를 바랍니다. ARM에서 컴파일되지 않는 고대 크루 티 코드 인 paping과 달리 hping은 여러 리포지토리에서 쉽게 찾을 수 있습니다. 또한 NMAP과 달리 haping은 셸 스크립트에서 쉽게 테스트 할 수있는 상태 코드를 반환하므로 ping을 사용하는 위치를 완벽하게 대체합니다. 이 답변에 감사드립니다. 부끄러운 줄 알았는데 다른 웹 사이트에서 찾아야했습니다.
Mark

우분투에 hping을 설치할 수 없습니다. 패키지를 찾을 수 없습니다. 그러나 발견 hping3했습니다 hping3. @ d33tah
Shayan

확인을 시도했는데 hping3모든 포트를 핑 (ping)합니다. 닫히거나 열려 있더라도 상관 없습니다. 포트가 닫혔는지 열려 있는지 어떻게 알 수 있습니까?
Shayan

46

netcat을 사용하여 특정 포트에 연결하여 연결되어 있는지 확인할 수 있습니다. -v 플래그는 포트가 열려 있는지 닫혀 있는지를 표시하기 위해 상세도를 증가시킵니다. -z 플래그는 일단 연결되면 netcat을 종료시킵니다. 그런 다음 $를 통해 종료 코드를 사용할 수 있습니까? 연결 여부를 확인하십시오.

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

또한, tcp에 대해 -T 플래그 및 -P 플래그와 함께 mtr을 사용하여 포트를 지정할 수 있습니다. 이것은 ICMP가 아닌 TCP를 통한 traceroute와 비슷한 작업을 수행합니다. 그러나 이것은 과잉 일 수 있습니다.

우리는 주석에 코드를 넣을 수 없으므로이 비트를 추가하려면 편집해야합니다. Knoppix는 netcat 버전과 다른 작업을 수행 할 수 있지만 이것이 Linux Mint에서 얻은 것입니다.

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]

문제는 당신이 nc -z www.google.com 8000 그것을 시도 하면 5 초 더 오래 걸릴 수 있다는 것입니다. 내가 -w 1하면 5 초가 걸립니다. 그렇게하면 -w 33 배 더 오래 걸립니다. 15 초 동안 15 번 깜박입니다. -w 11 초이지만 cygwin에서 테스트되었습니다. 5 초. 포트에 서버가 있으면 빠르지 만 그렇지 않으면 약간 느립니다.
barlop 2018 년

댓글에 개행을 저주하지 마십시오 ... cygwin의 버그 인 것 같습니다. 리눅스 민트를 사용한 테스트는 몇 초의 지연이 명시되어있다. date; nc-zw5 www.google.com 8000; date
Falsenames는

또한 nmap 요청으로 @BenjiWiebe를 찬성했습니다. nc는 스크립트를 작성하는 것이 더 쉽지만 nmap을 시각적으로 사용하는 것이 훨씬 쉽습니다.
Falsenames 2018 년

knoppix에서 시도해보십시오. nc -zv -w 1 www.google.com 한 번만 시도하면 어떻게됩니까? 예를 시도하면 -w 1이 작동하지만 Ctrl-C를 수행 할 때까지 매 초마다 다시 시도합니다.
barlop

'nc -zv -w 1 www.google.com 80'의 Knoppix 버전이 무엇을하는지 확실하지 않습니다. 그것은 내 시스템에서 잘 작동하며 한 번 쿼리하고 -z처럼 떨어 뜨립니다. 또한 포트 번호를 지정하지 않으면 포트가 지정되지 않았다고 말합니다.
Falsenames 2016 년

18

nping(의 일부 nmap)를 사용할 수도 있습니다 .

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds

6
nping --tcp -p 80 localhost
K-Gun

아무 포트 나 열려 있지 않은 포트를 테스트 했는데도 항상 두 개의 핸드 셰이크가 수신됩니다.
Shayan

8

파이썬을 사용하여 쉘에서 그렇게 짧은 라이너가 아니라고 할 수 있습니다 :

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; }
$ portping 8.8.8.8 54
CLOSED
$ portping 8.8.8.8 53
OPEN

7

참고로 Vivek Gite의 게시물을 공유하고 싶었습니다. https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# 댓글 -920398

그는 다양한 방법을 나열하며 그중 일부는 이미 여기에 게시되어 있습니다. 그러나 나를 위해 가장 놀라운 것은 아무것도 아닙니다 bash.

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

또는 매우 간단한 버전 : 다음 명령 패턴의 출력을 살펴보십시오.

echo >/dev/{tcp|udp}/{host}/{port}

임의 도커 컨테이너로 작업 할 때 유용합니다.


looking at the output-리턴 코드 검사 만 $?도움이 될 수 있습니다. 또한 그것은 ... 일부 제한 시간이 어디를 구성 할 수 있습니다 될 수있다, 폐쇄 포트에 달려
vp_arth

이 솔루션은 깔끔해 보이지만 echo >/dev/tcp/{hostname}/{portnumber}포트가 닫히면 끝나지 않습니다. 그리고 echo >/dev/tcp/{hostname}/{portnumber}포트가 열려 비록 아무것도 보여주지 내가 브라우저에서 볼 수 있습니다.
miguelmorin

안녕하세요, 어떤 OS를 사용하십니까? 우분투에서는 예상대로 작동합니다 : 포트가 닫히면을 얻습니다 Connection refused. 그렇지 않으면 아무것도 표시되지 않고 echo $?종료 코드가 표시 됩니다.1
Jacek

3

watch여기 에 도구를 추가 하십시오.

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com   Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT     STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

3

간단하다 nmap

예 :

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

자세한 내용은 다음을 참조하십시오.

명령 행에 다음을 입력하십시오. man nmap

http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/


1

해당 노드의 포트 80에서 통신을 테스트하거나 응답을 얻으려고합니까? PING포트와 관련이없는 ICMP를 통해 특정 호스트와의 통신을 설정하려고 시도합니다.

대신 http://nmap.org/ 를 시도 하여 포트 정보를 확인하고 통신을 테스트하십시오.

nmap -v -p 80 onofri.org

1
사용중인 nmap 버전이 확실하지 않습니다. 내 시스템에서는 'nmap -v -p 80 onofri.org'와 같이 -v와 -p가 분리되어 있어야합니다. 이것은 -v와 -vv가 다른 것을 의미하기 때문입니다. -v는 더 많은 v를 인수로 사용합니다.
Falsenames 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.