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

Можно ли пинговать адрес:порт?

Я не в сети, и у меня есть следующий вопрос, связанный с 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

Или я также могу пинговать адрес:порт, например: onofri.org:80?

Если я попробую этот, это не сработает:

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

Возможно ли пинговать что-нибудь вроде адреса:порта? Если это возможно, почему то, что я попробовал, не работает?

Ответы (11)

311
311
311
2014-06-16 18:19:26 +0000
86
86
86
2014-06-16 18:24:11 +0000

Я использую 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
49
49
49
2014-06-16 21:15:05 +0000

Вы можете использовать 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

Дополнительно, вы можете использовать mtr с флагом -T для tcp и флагом -P, чтобы указать порт. Это сделает нечто похожее на трассировку по TCP, а не только по ICMP. Однако, это может быть чересчур.

sigh мне нужно отредактировать, чтобы добавить этот бит, так как мы не можем писать код в комментариях. 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]
```.
48
48
48
2014-06-17 15:35:04 +0000

Да, используйте 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

Обратите внимание, что для создания необработанных IP-пакетов, так же как и ping (что, скорее всего, является suid в вашей системе), нужны привилегии root (или возможности SELinux).

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

Вы можете использовать Paping , кроссплатформенное тестирование TCP-порта, эмулируя функциональность ping (порт ping)

(см. также Github , так как code.google.com обесценился)

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

Вы также можете использовать 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
8
8
8
2015-12-18 22:11:18 +0000

Вы можете сделать это в оболочке с Python, как не так короткий один лайнер:

$ 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

Просто для справки, хотел поделиться постом Вивека Гайта: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-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}

Полезно при работе со случайными докер-контейнерами.

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

Я добавляю инструмент watch здесь:

watch nmap -p22,80 google.com

&00001

3
3
3
2016-07-25 18:26:01 +0000

С примерами 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
1
1
2014-06-19 15:58:08 +0000

Вы пытаетесь протестировать связь или получить ответ с порта 80 на этом узле? PING попытается установить связь с определенным узлом через ICMP, который не имеет никакого отношения к портам.

Вместо этого попробуйте http://nmap.org/ проверить информацию о портах и протестировать связь:

nmap -v -p 80 onofri.org

Похожие вопросы

6
10
3
5
14