6 Linux Utility pro testování síťové konektivity

Potřebujete zjistit, zda je spojení mezi dvěma body sítě funkční?

Mezi běžné úkoly správců systémů patří kontrola síťové konektivity za účelem řešení potíží. Může se jednat o situace, kdy se aplikace nemůže spojit s backendovou službou, nedokáže stáhnout data z externí adresy URL nebo je třeba ověřit, zda je určitý port otevřený.

Ať už je důvod jakýkoli, následující nástroje a příkazy vám pomohou. Byly testovány na systému CentOS, ale neměly by mít problémy ani na jiných distribucích Linuxu.

Pojďme se na ně podívat…

Telnet

Telnet je široce využívaný příkaz pro ověření základního spojení mezi servery nebo jiným síťovým zařízením s danou IP adresou. Použití příkazu je velmi jednoduché.

telnet $cílová_IP $PORT

Předpokládejme, že chcete otestovat, zda se můžete připojit k portu 8080 na IP adrese 10.0.0.1. V tom případě by příkaz vypadal takto:

telnet 10.0.0.1 8080

Pokud je připojení v pořádku, měli byste obdržet zprávu o úspěšném připojení:

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

Poznámka: Pokud po zadání příkazu telnet nevidíte výstup, pravděpodobně budete muset telnet nainstalovat. Jak na to, najdete v tomto článku.

Ve většině situací vám telnet poslouží. Pokud ale hledáte alternativní řešení, zde je několik dalších možností.

ncat nebo nc

Ncat (neboli nc) je všestranný síťový nástroj s mnoha funkcemi. Umožňuje navazování a přijímání připojení, vzdálené spouštění příkazů, zápis a čtení dat a další. Funguje jak v síti IPv4, tak i IPv6.

Pro jednoduchý test otevřenosti portu použijte následující příkaz:

nc -vz $HOSTNAME $PORT

Podívejme se na příklad, kde testujeme port 443 na doméně etechblog.cz.com:

[[email protected] ~]# nc -vz etechblog.cz.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 již bylo zmíněno, příkaz nc můžete použít i pro naslouchání na konkrétním portu. To je užitečné, pokud nemáte spuštěnou žádnou konkrétní službu, ale přesto potřebujete ověřit, zda je spojení funkční.

Spuštění naslouchání na portu:

nc -l $ČÍSLO_PORTU

Příkaz spustí naslouchání na daném portu.

Pokud ncat nemáte nainstalován, můžete ho nainstalovat pomocí příkazu `yum install nc` na serverech s CentOS/RHEL.

wget

wget je praktický nástroj pro stahování a testování protokolů HTTP, HTTPS a FTP. Pro webové inženýry a ty, kteří často řeší problémy spojené s webem, je wget nepostradatelný pomocník. Testování pomocí wget je jednoduché.

wget $URL

Zde je příklad použití na tools.etechblog.cz.com:

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

Pokud se zobrazí „connected“, znamená to, že spojení je v pořádku.

Prohlédněte si některé z běžných příkladů použití příkazu wget.

curl

curl je víceúčelový nástroj s mnoha možnostmi.

Věděli jste, že s curlem můžete i telnetovat?

Teď už ano.

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

Zde je funkční příklad:

[[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 pokud není problém s naslouchajícím portem nebo firewallem, uvidíte podobný výstup:

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

curl můžete použít i ke stažení dat. Podporuje mnoho protokolů, například HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER atd.

nmap

Nmap je oblíbený nástroj s mnoha funkcemi. Často je vnímán jako bezpečnostní nástroj. Nmap umožňuje otestovat jeden IP/port, nebo i celé rozsahy. nmap

Pro otestování jednoho portu použijte příkaz:

nmap -p $PORT $IP

Zde je příklad testování portu 443 na doméně 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] ~]#

Podívejte se na sloupec „STATE“. Pokud vidíte „open“, znamená to, že spojení je v pořádku. Pokud je stav „filtered“, pak spojení není dostupné.

Ping

Ping je jedním z nejběžnějších příkazů pro zjištění, zda vzdálený hostitel reaguje na ICMP ECHO_REQUEST. Mějte na paměti, že výsledek nemusí být stoprocentně přesný, pokud ICMP blokuje firewall vzdálené sítě. Pokud tomu tak není, můžete použít příkaz ping na koncový bod sítě IPv4 nebo IPv6, jak je ukázáno níže.

ping $ipaddress
ping $url

Například úspěšný výsledek pro etechblog.cz.com:

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

A například neúspěšný výsledek pro interní 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

Pokud koncový bod podporuje IPv6, můžete použít příkaz `ping6`, jak je ukázáno níže.

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

Pokud potřebujete provést ping vzdáleně přes internet, můžete použít online nástroj pro ping.

Závěr

Telnet je postupně nahrazován moderními alternativami v novějších verzích Linuxu. V tomto článku jsme si představili několik z nich.

Pokud s Linuxem začínáte a chcete se naučit více, podívejte se na tento kurz na Udemy.