Возможно ли выполнить ping адрес: порт?

Я не в сети, и у меня есть следующий вопрос, связанный с командой ping Linux.

Могу ли я только пинговать адрес? Например:

  miner @ raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56 (84) байта данных.
64 байта from onofri.org (67.222.36.105): icmp_req = 1 ttl = 47 раз = 202 мс
64 байта from onofri.org (67.222.36.105): icmp_req = 2 ttl = 47 раз = 206 мс
64 байта from onofri.org (67.222.36.105): icmp_req = 3 ttl = 47 раз = 215 мс
 

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

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

  miner @ raspberrypi ~ $ ping onofri.org:80
ping: неизвестный хост onofri.org:80
 

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

191 голос | спросил AndreaNobili 16 J0000006Europe/Moscow 2014, 22:17:25

11 ответов


18

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

(см. также Github , поскольку code.google.com был обесценен)

  paping -p 80 google.com
 
ответил kxmp 21 Jam1000000amWed, 21 Jan 2015 11:02:45 +030015 2015, 11:02:45
297

Порты представляют собой концепцию UDP и TCP . Сообщения Ping технически называются ICMP Echo Request и ICMP Echo Reply , которые являются частью ICMP . ICMP, TCP и UDP - «братья и сестры»; они не основаны друг на друге, а три отдельных протокола, которые работают поверх IP.

Поэтому вы не можете ping порт. Что вы можете сделать, использует сканер портов, например nmap .

  nmap -p 80 onofri.org
 

Вы также можете использовать telnet onofri.org 80 , как предложено в одном из других ответов (он выдаст ошибку, если порт закрыт или отфильтрован).

ответил BenjiWiebe 16 J0000006Europe/Moscow 2014, 22:19:26
76

Я использую Telnet , так как он встроен в множество платформ без дополнительных загрузок.

Просто используйте команду telnet для подключения к порту, который вы хотите протестировать. Если вы получите сообщение ниже или сообщение от самой службы, то порт жив.

  Minty16 ~ $ telnet localhost 139
Попытка 127.0.0.1 ...
Подключен к локальному хосту.
Символом Escape является «^]».
 

Если вы знаете последовательность команд для службы, к которой вы подключаетесь, вы можете ввести команду ( HTTP /FTP GET ) и наблюдать за ответом и выходом в терминале. Это очень полезно для тестирования самой службы, поскольку она покажет вам информацию об ошибках, отправленную клиенту, например, ошибки HTTP 500.

Если вы получили сообщение о том, что соединение было отклонено, порт закрыт.

  Minty16 ~ $ telnet localhost 5000
Попытка 127.0.0.1 ...
telnet: невозможно подключиться к удаленному хосту: соединение отклонено
 
ответил Frank Thomas 16 J0000006Europe/Moscow 2014, 22:24:11
39

Да, используйте HPing , чтобы сделать это:

  $ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 заголовков + 0 байтов данных
len = 46 ip = 77.237.27.37 ttl = 58 id = 25706 sport = 80 flags = SA seq = 0 win = 29200 rtt = 7.5 мс
len = 46 ip = 77.237.27.37 ttl = 58 id = 25707 sport = 80 flags = SA seq = 1 win = 29200 rtt = 7.4 мс
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 мс
^ C
--- Статистика google.com hping ---
4 переданных пакета, 4 принятых пакета, 0% потери пакетов
мин. /авг /макс = 7,4 /7,8 /8,5 мс
 

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

ответил d33tah 17 J0000006Europe/Moscow 2014, 19:35:04
37

Вы можете использовать netcat для подключения к определенному порту, чтобы узнать, получаете ли вы соединение. Флаг -v увеличит количество подробностей, чтобы показать, открыт ли порт или закрыт. Флаг -z приведет к выходу netcat после его соединения. Затем вы можете использовать коды выхода через $? чтобы узнать, установлено ли соединение или нет.

  $ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) открыть
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet): Соединение отклонено
$ echo $?
1
 

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

sigh Мне нужно отредактировать, чтобы добавить этот бит, поскольку мы не можем помещать код в комментарии. Knoppix может делать что-то другое с его версией netcat, но это то, что я получаю от Linux Mint

  $ date; nc -z -w 1 www.google.com 8000; date
Пт Июн 20 15:55:26 PDT 2014
Пт Июн 20 15:55:27 PDT 2014
$ date; nc -z -w 4 www.google.com 8000; date
Пт Июн 20 15:55:33 PDT 2014
Пт Июн 20 15:55:37 PDT 2014

$ nc -h
[V1.10-40]
 
ответил Falsenames 17 J0000006Europe/Moscow 2014, 01:15:05
15

Вы также можете использовать nping (часть nmap ):

  $ nping -p 80 localhost

Начало Nping 0,6.00 (http://nmap.org/nping) в 2014-06-23 11:57 CEST
SENT (0.0015s) Запуск TCP Handshake> localhost: 80 (127.0.0.1:80)
RECV (0.0016s) Рукопожатие с localhost: 80 (127.0.0.1:80) завершено
SENT (1.0027s) Запуск TCP Handshake> localhost: 80 (127.0.0.1:80)
RECV (1.0027s) Рукопожатие с localhost: 80 (127.0.0.1:80) завершено
SENT (2.0038s) Запуск TCP Handshake> localhost: 80 (127.0.0.1:80)
RECV (2.0039s) Рукопожатие с localhost: 80 (127.0.0.1:80) завершено
SENT (3.0050s) Запуск TCP Handshake> localhost: 80 (127.0.0.1:80)
RECV (3.0050s) Рукопожатие с localhost: 80 (127.0.0.1:80) завершено
SENT (4.0061s) Запуск TCP Handshake> localhost: 80 (127.0.0.1:80)
RECV (4.0062s) Рукопожатие с localhost: 80 (127.0.0.1:80) завершено

Max rtt: 0.032мс | Min rtt: 0.008ms | Среднее значение: 0,012 мс
Попытки подключения TCP: 5 | Удачные соединения: 5 | Ошибка: 0 (0.00%)
Tx время: 4.00575s | Tx bytes /s: 99.86 | Tx pkts /s: 1,25
Время в Rx: 4.00575s | Rx bytes /s: 49.93 | Rx pkts /s: 1,25
Nping done: 1 IP-адрес, пинговый в 4,01 секунды
 
ответил nyuszika7h 23 J0000006Europe/Moscow 2014, 13:57:58
5

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

  $ portping () {python <<"import socket; socket.setdefaulttimeout (1); socket.socket (). connect (('$ 1', $ 2))" 2> /dev /null & amp; & amp; & amp; эхо ОТКРЫТО || echo CLOSET; }
$ portping 8.8.8.8 54
СТЕННОЙ ШКАФ
$ portping 8.8.8.8 53
ОТКРЫТЫЙ
 
ответил AXE-Labs 19 SatEurope/Moscow2015-12-19T01:11:18+03:00Europe/Moscow12bEurope/MoscowSat, 19 Dec 2015 01:11:18 +0300 2015, 01:11:18
2

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

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

  nmap -v -p 80 onofri.org
 
ответил Quijote Shin 19 J0000006Europe/Moscow 2014, 19:58:08
2

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

смотреть nmap -p22,80 google.com

  Каждый 2,0s: nmap -p22,80 google.com Пн Июн 15 16:46:33 2015

Запуск Nmap 6.40 (http://nmap.org) в 2015-06-15 16:46 NOVT
Отчет о сканировании Nmap для google.com (127.0.0.1)
Хост вверх (задержка 0,0012 с).
Запись rDNS для 127.0.0.1: google.com
ГОСУДАРСТВЕННАЯ СЕТЬ ПОРТА
22 /tcp open ssh
80 /tcp закрыто http

Nmap done: 1 IP-адрес (1 хост вверх), отсканированный через 0,18 секунды
 
ответил vp_arth 15 J0000006Europe/Moscow 2015, 13:48:37
2

Это просто с nmap

примеры:

  #sintaxis
nmap -p [port] hostName
#first - команда, после сканирования портов, введите порт - порт или диапазон портов, а также ip или название веб-сайта ...

## Порт сканирования 80
nmap -p 80 onofri.org

## Сканировать порт TCP 80
nmap -p T: 80 onofri.org

## Сканировать порт UDP 53
nmap -p U: 53 onofri.org

## Сканировать два порта ##
nmap -p 80,443 onofri.org

## Диапазоны портов сканирования ##
nmap -p 80-200 onofri.org

## Объединить все опции ##
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

## Сканировать все порты с * подстановочным знаком ##
nmap -p "*" 192.168.1.1

## Сканировать верхние порты, то есть сканировать $ number наиболее распространенные порты ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org
 

Для получения дополнительной информации см. это:

введите в командной строке следующее: man nmap

http://www.cyberciti.biz/networking/nmap- команда-примеры-учебники / http://www.tecmint.com/nmap-command-examples/

ответил DarckBlezzer 25 J000000Monday16 2016, 21:26:01
2

Просто для справки, хотел поделиться сообщением 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 & amp; & amp; & amp; & amp; & amp; эхо "открыто" || эхо "закрыто"
(echo> /dev /udp /{host} /{port})> /dev /null & amp; & amp; & amp; & amp; эхо "открыто" || эхо "закрыто"
(echo> /dev/tcp/www.cyberciti.biz/22)> /dev /null & amp; & amp; & amp; & amp; эхо "Открыто 22" || эхо "Закрыто 22"
(echo> /dev/tcp/www.cyberciti.biz/443)> /dev /null & amp; & amp; & amp; & amp; эхо "Открытый 443" || эхо "Закрыто 443"
 

Или супер простая версия: просто посмотрим на результат следующего шаблона команды:

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

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

ответил Jacek 6 J0000006Europe/Moscow 2017, 16:07:40

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132