6 Linux помощна програма за тестване на мрежова свързаност

Чудите се как да проверите връзката между две крайни точки на мрежата?

Една от обичайните задачи за системния администратор е да проверява връзката за отстраняване на проблеми с мрежата. Може да е нещо подобно на това, че приложението не може да се свърже с бекенд услуга, не може да извлече данни от външен URL адрес, да провери дали потокът е отворен и т.н.

Каквото и да е, следните помощни програми/команди ще ви помогнат. Тествани са на CentOS и не виждам причина да не работят на друга линукс дистрибуция.

Нека проучим…

телнет

Една от широко използваните команди за тестване на основна свързаност между сървъри, сървър към IP на друго мрежово устройство. Синтаксисът на командата е лесен.

telnet $destinationIP $PORT

Да приемем, че искате да тествате дали можете да се свържете към порт 8080 на 10.0.0.1 IP адрес; тогава командата ще бъде.

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.

  10 Cheat Sheets на командния ред за Windows, Linux и macOS

За да направите прост тест, за да проверите дали портът е отворен или не, ще изпълните следното.

nc -vz $HOSTNAME $PORT

Нека вземем пример за тестване на 443 порт на pctechbg.net.com.

[[email protected] ~]# nc -vz pctechbg.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.pctechbg.net.com

[[email protected] ~]# wget tools.pctechbg.net.com
--2019-05-09 20:40:01--  http://tools.pctechbg.net.com/
Resolving tools.pctechbg.net.com (tools.pctechbg.net.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Connecting to tools.pctechbg.net.com (tools.pctechbg.net.com)|104.25.134.107|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://tools.pctechbg.net.com/ [following]
--2019-05-09 20:40:01--  https://tools.pctechbg.net.com/
Connecting to tools.pctechbg.net.com (tools.pctechbg.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] ~]#

Ако показва свързан, това означава, че няма проблем с връзката.

  Как да инсталирате темата Arc за Thunderbird на Linux

Вижте това, за да видите някои от често използваните примери за команда 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] ~]#

Погледнете колоната за състояние. Ако видите отворено, връзката е наред. И ако състоянието е филтрирано, това означава, че връзката не съществува.

  Как да играете класическите Fallout игри на Linux

Пинг

Една от широко използваните команди е да се провери дали отдалечен хост отговаря на ICMP ECHO_REQUEST или не. Имайте предвид, че това може да не ви даде точни резултати, когато ICMP е блокиран в защитната стена на отдалечената мрежа. Ако приемем, че това не е така, можете да изпратите ping към IPv4 или IPv4 мрежова крайна точка, както е показано по-долу.

ping $ipaddress
ping $url

Например резултатът за успех на pctechbg.net.com

[email protected] ~ % ping pctechbg.net.com
PING pctechbg.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 pctechbg.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. Благодарение на горната алтернатива на telnet.

Ако сте нов в Linux и искате да научите, вижте това Курс по Udemy.