Цікаво, як перевірити з’єднання між двома кінцевими точками мережі?
Одним із поширених завдань системного адміністратора є перевірка з’єднання для вирішення проблем з мережею. Це може бути щось на зразок того, що програма не може підключитися до серверної служби, не може отримати дані із зовнішньої URL-адреси, перевірити, чи відкритий потік тощо.
Що б це не було, наступні утиліти/команди допоможуть вам. Вони протестовані на CentOS, і я не бачу причин не працювати на іншому дистрибутиві Linux.
Давайте досліджувати…
telnet
Одна з широко використовуваних команд для перевірки важливого зв’язку між серверами, сервером з 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
Ncat (він же nc) — це потужна мережева утиліта з багатьма функціями, як-от прив’язувати та приймати з’єднання, віддалено виконувати команди, записувати та читати дані тощо. Вона працює як на IPv4, так і на IPv6.
Щоб виконати простий тест, щоб перевірити, чи відкритий порт чи ні, виконайте наступне.
nc -vz $HOSTNAME $PORT
Розглянемо приклад тестування порту 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 $PORTNUMBER
Він прив’яже порт до заданого номера.
Якщо 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, які часто використовуються.
завиток
Плойка – це багатофункціональний інструмент.
Чи знаєте ви, що можна підключитися до порту через telnet за допомогою 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
Наприклад, результат успіху 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
Якщо вам потрібно виконати віддалений ping через Інтернет, ви можете скористатися інструментом онлайн-ping.
Висновок
telnet поступово припиняє роботу в останній версії Linux. Завдяки наведеній вище альтернативі telnet.
Якщо ви новачок у Linux і бажаєте навчитися, подивіться це Курс Udemy.