Как я могу проверить исходящее соединение с IP-адресом, а также с определенным портом?

Хорошо, мы все знаем, как использовать PING для проверки подключения к IP-адресу. Мне нужно сделать что-то подобное, но проверить, успешен ли мой исходящий запрос на заданный IP-адрес, а также на указанный порт (в данном случае 1775). Проверку желательно выполнять из командной строки.


ip
person David    schedule 19.05.2011    source источник
comment
О, и ПРИНИМАЙТЕ некоторые из ответов на вопросы, которые у вас есть, ПОЖАЛУЙСТА.   -  person James    schedule 19.05.2011
comment
telnet {IP} {ПОРТ} в ubuntu/mac   -  person HASNEN LAXMIDHAR    schedule 26.12.2018


Ответы (6)


Если на целевом IP/порту работает сервер, вы можете использовать Telnet. Любой ответ, кроме «не удается подключиться», будет означать, что вы смогли подключиться.

person James    schedule 19.05.2011

Вот небольшой сайт, который я сделал, чтобы протестировать любой исходящий порт. Сервер прослушивает все доступные порты TCP.

http://portquiz.net

telnet portquiz.net XXXX
person Marc MAURICE    schedule 09.09.2012
comment
Это интересно, но это не совсем долгосрочное решение, верно? Хотя я предполагаю, что написать код для него очень просто. - person Ehtesh Choudhury; 17.10.2012
comment
@Shurane Да, это просто: он использует iptables для перенаправления всех портов tcp на 80. Конечно, это зависит от доступности моего сервера, но я планирую поддерживать его в долгосрочной перспективе. Я также ищу простое легкое для ввода доменное имя, чтобы зарегистрироваться для него. Если у вас есть какие-либо идеи, не стесняйтесь сказать мне. - person Marc MAURICE; 10.04.2013
comment
Спасибо. Я заказал домен для этой службы, чтобы было легче печатать: portquiz.net - person Marc MAURICE; 30.07.2013
comment
Это работает с портом 25? Мне нужно выяснить, блокирует ли мой интернет-провайдер исходящие соединения с P25. - person Chuck Le Butt; 22.09.2014
comment
Фантастически, но жаль, что он не поддерживает порты 22 и 25. - person Chuck Le Butt; 04.02.2015
comment
Вы можете протестировать исходящий порт 22 с помощью ssh [email protected] — он должен сказать, что либо разрешение отклонено (открытый ключ), либо авторизация успешна, если вы загрузили свой открытый ключ в учетную запись github. - person apple16; 05.08.2015
comment
2020 по-прежнему в силе! - person Bernard Moeskops; 25.03.2020
comment
Порт 445 открыт с этого хоста? - person рüффп; 12.06.2020

Чтобы автоматизировать замечательный сервис portquiz.net, я написал bash-скрипт:

NB_CONNECTION=10
PORT_START=1
PORT_END=1000

for (( i=$PORT_START; i<=$PORT_END; i=i+NB_CONNECTION ))
do
    iEnd=$((i + NB_CONNECTION))
    for (( j=$i; j<$iEnd; j++ ))
    do
        #(curl --connect-timeout 1 "portquiz.net:$j" &> /dev/null && echo "> $j") &
        (nc -w 1 -z portquiz.net "$j" &> /dev/null && echo "> $j") &
    done
    wait
done
person benjarobin    schedule 24.02.2014

Если вы тестируете TCP/IP, дешевый способ проверить удаленный адрес/порт — подключиться к нему через telnet и посмотреть, соединяется ли он. Для таких протоколов, как HTTP (порт 80), вы даже можете вводить HTTP-команды и получать HTTP-ответы.

eg

Command IP          Port
Telnet  192.168.1.1 80
person dkamins    schedule 19.05.2011

Самый быстрый и эффективный способ, который я нашел для этого, — это nmap и portquiz.net, описанные здесь: http://thomasmullaly.com/2013/04/13/outgoing-port-tester/ Это сканирует 1000 наиболее часто используемых портов:

# nmap -Pn --top-ports 1000 portquiz.net

Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-02 22:28 CDT
Nmap scan report for portquiz.net (178.33.250.62)
Host is up (0.072s latency).
rDNS record for 178.33.250.62: electron.positon.org
Not shown: 996 closed ports
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy

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

Чтобы отсканировать их все (заняло 6 секунд вместо 5):

# nmap -Pn -p1-65535 portquiz.net
person Lee Ballard    schedule 03.08.2017
comment
Поправьте меня, если я ошибаюсь, но 445-й порт portquiz кажется не открытым извне (перешел по ссылке). Какую общедоступную внешнюю службу следует использовать для проверки возможности подключения к порту 445 в Интернете? - person рüффп; 26.06.2020

Пример bash-скрипта @benjarobin для тестирования последовательности портов у меня не сработал, поэтому я создал этот минимальный не совсем однострочный (командный) пример, который записывает вывод открытых портов из последовательности 1- 65535 (все применимые коммуникационные порты) в локальный файл и подавляет все остальные выходные данные:

for p in $(seq 1 65535); do curl -s --connect-timeout 1 portquiz.net:$p >> ports.txt; done

К сожалению, это занимает 18,2 часа, потому что минимальное время ожидания соединения, разрешенное целыми секундами в моей старой версии curl, равно 1. Если у вас есть версия curl> = 7.32.0 (введите «curl -V»), вы можете попробуйте меньшие десятичные значения, в зависимости от того, насколько быстро вы можете подключиться к службе. Или попробуйте меньший диапазон портов, чтобы минимизировать продолжительность.

Кроме того, он будет добавлен к выходному файлу ports.txt, поэтому при многократном запуске вы можете сначала удалить файл.

person Jona    schedule 20.10.2016