Чи задумувались ви, яким чином можна перевірити підключення між двома різними вузлами в мережі?
Перевірка з’єднання – це одне із типових завдань, яке доводиться виконувати системним адміністраторам при діагностиці проблем з мережею. Це може стосуватися ситуацій, коли програма не може встановити зв’язок із серверною службою, не вдається отримати дані із зовнішньої URL-адреси, або необхідно перевірити, чи відкритий певний порт.
Незалежно від конкретного випадку, наступні інструменти та команди можуть бути вам корисними. Всі вони були протестовані в середовищі CentOS, і немає підстав вважати, що вони не працюватимуть в інших дистрибутивах Linux.
Давайте розглянемо їх детальніше…
telnet
Ця команда є однією з найпоширеніших для перевірки з’єднання між серверами, або сервером та іншим пристроєм в мережі. Її синтаксис досить простий:
telnet $IP_адреса_призначення $ПОРТ
Наприклад, якщо ви хочете перевірити з’єднання з портом 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 ви отримуєте повідомлення “command not found”, то вам необхідно встановити telnet. Інструкції з установки можна знайти тут.
В більшості ситуацій telnet є достатнім інструментом. Однак, якщо вам потрібні альтернативні варіанти, розглянемо їх нижче.
ncat або nc
Ncat (також відомий як nc) — це потужна утиліта з широким набором функцій, включаючи встановлення та прослуховування з’єднань, віддалене виконання команд, запис та читання даних. Він підтримує як IPv4, так і IPv6.
Для простого тестування, щоб визначити, чи відкритий порт, скористайтеся наступною командою:
nc -vz $ІМ_ХОСТА $ПОРТ
Розглянемо приклад тестування порту 443 на сайті techukraine.net.com:
[[email protected] ~]# nc -vz techukraine.net.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 $НОМЕР_ПОРТУ
Це дозволить прив’язати порт до вказаного номера.
Якщо ncat не встановлено, його можна інсталювати за допомогою команди “yum install nc” на серверах CentOS/RHEL.
wget
wget — це корисна команда для завантаження файлів та перевірки з’єднань HTTP, HTTPS та FTP. Якщо ви веб-розробник, або часто стикаєтесь з проблемами, пов’язаними з Інтернетом, wget стане вашим надійним помічником. Тестування за допомогою wget є досить простим:
wget $URL
Ось приклад тестування сайту tools.techukraine.net.com:
[[email protected] ~]# wget tools.techukraine.net.com --2019-05-09 20:40:01-- http://tools.techukraine.net.com/ Resolving tools.techukraine.net.com (tools.techukraine.net.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ... Connecting to tools.techukraine.net.com (tools.techukraine.net.com)|104.25.134.107|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://tools.techukraine.net.com/ [following] --2019-05-09 20:40:01-- https://tools.techukraine.net.com/ Connecting to tools.techukraine.net.com (tools.techukraine.net.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 – це багатофункціональний інструмент.
Чи знали ви, що можна встановити з’єднання з портом через telnet за допомогою curl?
Тепер знаєте.
curl -v telnet://$IP:$ПОРТ
Нижче наведено приклад його використання:
[[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 $ПОРТ $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] ~]#
Зверніть увагу на колонку “STATE”. Якщо ви бачите “open”, це означає, що з’єднання можливе. Якщо стан “filtered”, це означає, що з’єднання відсутнє.
Пінг
Одна з найбільш розповсюджених команд для перевірки, чи відповідає віддалений хост на ICMP ECHO_REQUEST. Зауважте, що результати можуть бути не точними, якщо ICMP заблоковано брандмауером на віддаленій мережі. За умови, що це не так, можна виконати пінг до кінцевої точки IPv4 або IPv6, як показано нижче.
ping $ipaddress ping $url
Наприклад, успішний результат для techukraine.net.com:
[email protected] ~ % ping techukraine.net.com PING techukraine.net.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 techukraine.net.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. Наведені вище альтернативи надають достойну заміну.
Якщо ви тільки починаєте свій шлях у вивченні Linux, вам може бути корисним цей курс на Udemy.