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…
Spis treści:
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.