2014-06-16 18:17:25 +0000 2014-06-16 18:17:25 +0000
217
217

Czy można pingować adres:port?

Nie jestem w sieci i mam następujące pytanie związane z komendą Linux ping.

Czy mogę tylko pingować adres? Na przykład:

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

Czy mogę również pingować address:port , na przykład: onofri.org:80*?

Jeśli spróbuję ten nie działa:

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

Czy mogę pingować coś takiego jak adres:port? Jeśli jest to możliwe, to dlaczego to, czego próbowałem nie działa?

Odpowiedzi (11)

311
311
311
2014-06-16 18:19:26 +0000

Porty to koncepcja UDP i TCP . Komunikaty ping są technicznie nazywane ICMP Echo Request i ICMP Echo Reply , które są częścią ICMP . ICMP, TCP i UDP są “rodzeństwem”; nie są one oparte na sobie, ale są trzema oddzielnymi protokołami, które działają na górze IP.

Dlatego nie można ping portu. To co możesz zrobić, to użyć skanera portów takiego jak nmap.

nmap -p 80 onofri.org

Możesz również użyć telnet onofri.org 80, jak sugerowano w jednej z pozostałych odpowiedzi (Da to błąd jeśli port jest zamknięty lub filtrowany).

86
86
86
2014-06-16 18:24:11 +0000

Używam Telnet , ponieważ jest on wbudowany w wiele platform bez dodatkowych plików do pobrania.

Wystarczy użyć komendy telnet, aby połączyć się z portem, który chcesz przetestować.

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

Jeśli znasz sekwencję komend dla usługi, z którą się łączysz, możesz wpisać komendę HTTP/FTP GET na przykład) i obserwować odpowiedź i wyjście w terminalu. Jest to bardzo przydatne przy testowaniu samej usługi, ponieważ pokaże ci informacje o błędach wysyłane do klienta, jak np. błędy HTTP 500.

Jeśli otrzymasz wiadomość, że połączenie zostało odrzucone, port jest zamknięty.

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
49
49
49
2014-06-16 21:15:05 +0000

Możesz użyć netcat, aby połączyć się z konkretnym portem i sprawdzić, czy otrzymasz połączenie. Flaga -v zwiększy gadatliwość, aby pokazać czy port jest otwarty czy zamknięty. Flaga -z spowoduje, że netcat zakończy pracę po nawiązaniu połączenia. Możesz wtedy użyć kodów wyjścia przez $? aby zobaczyć czy połączenie zostało nawiązane czy też nie.

$ 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

Dodatkowo, możesz użyć mtr z flagą -T dla tcp i flagą -P aby określić port. To zrobi coś podobnego do traceroute przez TCP zamiast tylko ICMP. Może to być jednak overkill.

sigh Aby dodać ten bit, muszę go edytować, ponieważ nie możemy umieszczać kodu w komentarzach. Knoppix może robić coś innego ze swoją wersją netcata, ale to jest to, co dostaję z 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]
48
48
48
2014-06-17 15:35:04 +0000

Tak, użyj do tego celu 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

Zauważ, że potrzebuje on uprawnień roota (lub możliwości SELinux'a) do tworzenia surowych pakietów IP, podobnie jak ping (który jest najprawdopodobniej suid w twoim systemie).

21
21
21
2015-01-21 08:02:45 +0000

Możesz użyć Paping , cross-platformowy test portu TCP, emulując funkcjonalność ping (port ping)

(zobacz również Github ponieważ code.google.com został zamortyzowany)

paping -p 80 google.com
19
19
19
2014-06-23 09:57:58 +0000

Możesz również użyć nping (część 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
8
8
8
2015-12-18 22:11:18 +0000

Możesz to zrobić w skorupie z Pythonem jako nie tak krótki jeden wkład:

$ 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
7
7
2017-06-06 13:07:40 +0000

Tylko dla przypomnienia, chciałem się podzielić posadą Viveka Gite'a: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398

Wymienia on różne sposoby, niektóre z nich są już zamieszczone tutaj. Ale najbardziej zaskakujące było dla mnie nic innego jak 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"

Albo super prosta wersja: po prostu patrząc na wyjście następującego wzoru komend:

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

Przydatne przy pracy z przypadkowymi kontenerami dokującymi.

3
3
3
2015-06-15 10:48:37 +0000

Dodaję narzędzie watch tutaj:

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
3
3
2016-07-25 18:26:01 +0000

To proste z nmap

przykłady:

#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

Więcej informacji można znaleźć w tym:

wpisz w wierszu poleceń to: man nmap http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/

1
1
1
2014-06-19 15:58:08 +0000

Próbujesz przetestować komunikację lub uzyskać odpowiedź z portu 80 na tym węźle? PING będzie próbował nawiązać komunikację z konkretnym hostem poprzez ICMP, który nie ma nic wspólnego z portami.

Zamiast tego spróbuj http://nmap.org/ aby sprawdzić informacje o porcie i przetestować komunikację:

nmap -v -p 80 onofri.org