Чудите се как да проверите връзката между две крайни точки на мрежата?
Една от обичайните задачи за системния администратор е да проверява връзката за отстраняване на проблеми с мрежата. Може да е нещо подобно на това, че приложението не може да се свърже с бекенд услуга, не може да извлече данни от външен 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.
За да направите прост тест, за да проверите дали портът е отворен или не, ще изпълните следното.
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] ~]#
Ако показва свързан, това означава, че няма проблем с връзката.
Вижте това, за да видите някои от често използваните примери за команда 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 е блокиран в защитната стена на отдалечената мрежа. Ако приемем, че това не е така, можете да изпратите 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.