Хотите знать, как проверить подключение между двумя конечными точками сети?
Одной из распространенных задач системного администратора является проверка подключения для устранения проблем с сетью. Это может быть что угодно, например, приложение не может подключиться к серверной службе, не может получить данные с внешнего URL-адреса, проверить, открыт ли поток и т. д.
Что бы это ни было, вам помогут следующие утилиты/команды. Они протестированы на CentOS, и я не вижу причин не работать с другим дистрибутивом Linux.
Давайте исследуем…
Оглавление
телнет
Одна из широко используемых команд для проверки необходимого соединения между серверами, сервера с IP-адресом другого сетевого устройства. Синтаксис команды прост.
telnet $destinationIP $PORT
Допустим, вы хотите проверить, можете ли вы подключиться к порту 8080 по IP-адресу 10.0.0.1; тогда бы команда была.
telnet 10.0.0.1 8080
Если нет проблем с подключением, вы должны увидеть сообщение о подключении.
Trying 10.0.0.1... Connected to 10.0.0.1. Escape character is '^]'.
Примечание: если вы получаете команду, не найденную при выполнении telnet, вам необходимо установить telnet, как я объяснил здесь.
В большинстве случаев telnet должен помочь. Однако, если вам нужен какой-то другой вариант, вот несколько альтернатив telnet.
нкэт или нк
Ncat (он же nc) — мощная сетевая утилита с множеством функций, таких как привязка и прием соединения, удаленное выполнение команд, запись и чтение данных и т. д. Она работает как с IPv4, так и с IPv6.
Чтобы выполнить простой тест, чтобы проверить, открыт ли порт или нет, вы выполните следующее.
nc -vz $HOSTNAME $PORT
Возьмем пример тестирования порта 443 на сайте toadmin.ru.com.
[[email protected] ~]# nc -vz toadmin.ru.com 443 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 104.25.133.107:443. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds. [[email protected] ~]#
Как уже упоминалось, вы также можете использовать nc для привязки соединения для прослушивания определенного порта. Это может быть удобно, когда у вас нет запущенных служб, но вы хотите обеспечить возможность подключения.
Чтобы начать прослушивание порта:
nc -l $PORTNUMBER
Он привяжет порт к заданному номеру.
Если ncat не установлен, вы можете сделать это с помощью yum install nc на серверах CentOS/RHEL.
wget
wget — полезная команда для загрузки/тестирования HTTP, HTTPS и FTP. Если вы работаете веб-инженером или часто сталкиваетесь с проблемами, связанными с Интернетом, тогда wget — ваш друг. Тестировать с помощью wget несложно.
wget $URL
Вот пример тестирования tools.toadmin.ru.com
[[email protected] ~]# wget tools.toadmin.ru.com --2019-05-09 20:40:01-- http://tools.toadmin.ru.com/ Resolving tools.toadmin.ru.com (tools.toadmin.ru.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ... Connecting to tools.toadmin.ru.com (tools.toadmin.ru.com)|104.25.134.107|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://tools.toadmin.ru.com/ [following] --2019-05-09 20:40:01-- https://tools.toadmin.ru.com/ Connecting to tools.toadmin.ru.com (tools.toadmin.ru.com)|104.25.134.107|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.2' [ <=> ] 15,139 --.-K/s in 0.001s 2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' saved [15139] [[email protected] ~]#
Если он показывает, что подключено, значит, проблем с подключением нет.
Проверьте это, чтобы увидеть некоторые из часто используемых примеров команд wget.
завиток
Завиток — универсальный инструмент.
Знаете ли вы, что можете подключиться к порту через curl?
Ну, теперь ты знаешь.
curl -v telnet://$IP:$PORT
Ниже приведен рабочий пример.
[[email protected] ~]# curl -v telnet://chandan.io:443 * About to connect() to chandan.io port 443 (#0) * Trying 104.31.68.106... * Connected to chandan.io (104.31.68.106) port 443 (#0)
И, когда нет проблем с прослушивающим портом или брандмауэром, вы увидите попытку…
[[email protected] ~]# curl -v telnet://chandan.io:4434 * About to connect() to chandan.io port 4434 (#0) * Trying 104.31.68.106...
Вы также можете использовать curl для загрузки данных. Он поддерживает несколько протоколов — HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER и т. д.
nmap
Популярный инструмент с сотнями функций. Часто это рассматривается как инструмент безопасности, nmap позволяет протестировать один IP/порт или их диапазон.
Проверка одного порта
nmap -p $PORT $IP
Пример тестирования порта 443 на siterelic.com
[[email protected] ~]# nmap -p 443 siterelic.com Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTC Nmap scan report for siterelic.com (104.27.174.50) Host is up (0.0079s latency). Other addresses for siterelic.com (not scanned): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32 PORT STATE SERVICE 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds [[email protected] ~]#
Посмотрите на столбец состояния. Если вы видите открытое соединение, это означает, что соединение в порядке. И если состояние отфильтровано, это означает, что подключения не существует.
пинг
Одна из широко используемых команд — проверить, отвечает ли удаленный хост на ICMP ECHO_REQUEST или нет. Имейте в виду, что это может не дать точных результатов, если ICMP заблокирован брандмауэром удаленной сети. Предполагая, что это не так, вы можете пропинговать конечную точку сети IPv4 или IPv4, как показано ниже.
ping $ipaddress ping $url
Например, результат успеха toadmin.ru.com
[email protected] ~ % ping toadmin.ru.com PING toadmin.ru.com (104.27.119.115): 56 data bytes 64 bytes from 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms 64 bytes from 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms
Например, сбой в результате внутреннего IP.
[email protected] ~ % ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1
Если конечная точка поддерживает IPv6, вы можете использовать команду ping6, как показано ниже.
[email protected] ~ % ping6 toadmin.ru.com PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673 16 bytes from 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms 16 bytes from 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms
Если вам нужно выполнить удаленную проверку связи через Интернет, вы можете использовать онлайн-инструмент проверки связи.
Вывод
telnet прекращается в последней версии Linux. Благодаря вышеупомянутой альтернативе telnet.
Если вы новичок в Linux и хотите учиться, ознакомьтесь с этим Удеми курс.