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.