6 Narzędzie Linux do testowania łączności sieciowej

Zastanawiasz się, jak sprawdzić łączność między dwoma punktami końcowymi sieci?

Jednym z typowych zadań sysadmin jest sprawdzanie łączności w celu rozwiązywania problemów z siecią. Może to być na przykład aplikacja nie może połączyć się z usługą zaplecza, nie może pobrać danych z zewnętrznego adresu URL, sprawdzić, czy przepływ jest otwarty itp.

Cokolwiek by to nie było, poniższe narzędzie/polecenia mogą ci pomóc. Są testowane na CentOS i nie widzę powodu, aby nie pracować na innej dystrybucji Linuksa.

Odkryjmy…

telnet

Jedno z powszechnie używanych poleceń do testowania niezbędnej łączności między serwerami, serwera z adresem IP innego urządzenia sieciowego. Składnia polecenia jest łatwa.

telnet $destinationIP $PORT

Powiedzmy, że chcesz sprawdzić, czy możesz połączyć się z portem 8080 na adresie IP 10.0.0.1; wtedy byłaby komenda.

telnet 10.0.0.1 8080

Jeśli nie ma problemu z połączeniem, powinieneś zobaczyć komunikat o połączeniu.

Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.

Uwaga: jeśli pojawi się polecenie, którego nie znaleziono podczas wykonywania telnet, musisz zainstalować telnet, jak wyjaśniłem tutaj.

W większości przypadków telnet powinien pomóc. Jeśli jednak potrzebujesz innej opcji, oto kilka alternatyw dla telnetu.

nc lub nc

Ncat (aka nc) to potężne narzędzie sieciowe z wieloma funkcjami, takimi jak wiązanie i akceptowanie połączenia, zdalne wykonywanie poleceń, zapisywanie i odczytywanie danych itp. Działa zarówno na IPv4, jak i IPv6.

Aby wykonać prosty test, aby sprawdzić, czy port jest otwarty, wykonaj następujące czynności.

nc -vz $HOSTNAME $PORT

Weźmy przykład testowania portu 443 na newsblog.pl.com.

[[email protected] ~]# nc -vz newsblog.pl.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] ~]#

Jak wspomniano, możesz także użyć nc do powiązania połączenia w celu nasłuchiwania na określonym porcie. Może to być przydatne, gdy nie masz uruchomionych usług, ale chcesz mieć pewność, że istnieje łączność.

Aby rozpocząć nasłuchiwanie na porcie:

nc -l $PORTNUMBER

Powiąże port z podanym numerem.

Jeśli ncat nie jest zainstalowany, możesz to zrobić za pomocą yum install nc na serwerach CentOS/RHEL.

wget

wget to przydatne polecenie do pobierania/testowania HTTP, HTTPS i FTP. Jeśli pracujesz jako inżynier sieciowy lub często zajmujesz się problemami związanymi z siecią, wget jest Twoim przyjacielem. Testowanie za pomocą wget jest proste.

wget $URL

Oto przykład testowania tools.newsblog.pl.com

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

Jeśli pokazuje połączenie, oznacza to, że nie ma problemu z łącznością.

Sprawdź to, aby zobaczyć niektóre z często używanych przykładów poleceń wget.

kędzior

Loki to narzędzie wielofunkcyjne.

Czy wiesz, że możesz wykonać połączenie telefoniczne z portem za pomocą curl?

Cóż, teraz już wiesz.

curl -v telnet://$IP:$PORT

Poniżej znajduje się działający przykład.

[[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)

A gdy nie ma problemu z portem nasłuchującym lub zaporą ogniową, zobaczysz, że próbujesz…

[[email protected] ~]# curl -v telnet://chandan.io:4434
* About to connect() to chandan.io port 4434 (#0)
*   Trying 104.31.68.106...

Możesz także użyć curl do pobrania danych. Obsługuje wiele protokołów — HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER itp.

nmapa

Popularne narzędzie z setkami funkcji. Często jest to uważane za narzędzie bezpieczeństwa, nmapa pozwala przetestować pojedynczy adres IP/port lub zakres.

Aby przetestować pojedynczy port

nmap -p $PORT $IP

Przykład testowania portu 443 na 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] ~]#

Spójrz na kolumnę stanu. Jeśli widzisz otwarte, oznacza to, że połączenie jest w porządku. A jeśli stan jest filtrowany, oznacza to, że łączność nie istnieje.

Świst

Jednym z powszechnie używanych poleceń jest sprawdzenie, czy zdalny host odpowiada na ICMP ECHO_REQUEST, czy nie. Należy pamiętać, że może to nie dawać dokładnych wyników, gdy protokół ICMP jest blokowany przez zaporę sieci zdalnej. Zakładając, że tak nie jest, możesz wysłać polecenie ping do punktu końcowego sieci IPv4 lub IPv4, jak poniżej.

ping $ipaddress
ping $url

Na przykład wynik sukcesu newsblog.pl.com

[email protected] ~ % ping newsblog.pl.com
PING newsblog.pl.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

Na przykład wynik awarii wewnętrznego adresu 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

Jeśli punkt końcowy obsługuje protokół IPv6, możesz użyć polecenia ping6, jak poniżej.

[email protected] ~ % ping6 newsblog.pl.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

Jeśli chcesz wykonać zdalne polecenie ping przez Internet, możesz skorzystać z internetowego narzędzia ping.

Wniosek

telnet jest wycofywany w najnowszej wersji Linuksa. Dzięki powyższej alternatywie telnetu.

Jeśli jesteś nowy w Linuksie i chcesz się uczyć, sprawdź to Kurs Udemy.