Test nettverkstilkoblingen: 6 Linux-verktøy

Er du usikker på hvordan du verifiserer forbindelsen mellom to nettverksnoder?

En vanlig oppgave for systemadministratorer er å sjekke nettverkstilkoblinger for å løse problemer. Dette kan være alt fra at en applikasjon ikke får kontakt med backend-tjenesten, at den ikke kan hente data fra en ekstern URL, eller bekreftelse på om en gitt port er åpen.

Uansett hva det måtte være, vil de følgende verktøyene og kommandoene være til hjelp. De er testet på CentOS, og det er ingen grunn til å tro at de ikke skal fungere på andre Linux-distribusjoner.

La oss dykke inn i det…

telnet

Dette er en velkjent kommando for å teste grunnleggende tilkobling mellom servere eller fra en server til en annen enhets IP-adresse. Syntaksen er enkel:

telnet $destinasjonsIP $PORT

For eksempel, hvis du ønsker å teste om du kan koble til port 8080 på IP-adressen 10.0.0.1, vil kommandoen se slik ut:

telnet 10.0.0.1 8080

Hvis tilkoblingen går bra, skal du få en melding om at tilkoblingen er opprettet:

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

Merk: Hvis kommandoen ikke finnes når du prøver å bruke telnet, må du installere telnet, som beskrevet her.

Telnet er ofte tilstrekkelig i de fleste scenarier. Hvis du imidlertid trenger et alternativ, er det flere her:

ncat eller nc

Ncat (også kjent som nc) er et kraftfullt nettverksverktøy med en rekke funksjoner, inkludert å etablere og akseptere tilkoblinger, kjøre kommandoer eksternt, skrive og lese data, og støtter både IPv4 og IPv6.

For en enkel test for å sjekke om en port er åpen, kan du bruke følgende kommando:

nc -vz $VERTSNAVN $PORT

La oss ta et eksempel der vi tester port 443 på tipsbilk.net.com:

[[email protected] ~]# nc -vz tipsbilk.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]ekflare-lab ~]#

Som nevnt kan du også bruke nc til å binde en tilkobling for å lytte på en bestemt port. Dette er nyttig når du ikke har aktive tjenester, men vil sjekke at tilkoblingen fungerer.

Slik starter du lytting på en port:

nc -l $PORTNUMMER

Dette binder porten til det angitte nummeret.

Hvis ncat ikke er installert, kan du installere det med yum install nc på CentOS/RHEL-servere.

wget

wget er en nyttig kommando for å laste ned og teste HTTP, HTTPS og FTP. Hvis du jobber som webutvikler eller ofte jobber med nettrelaterte problemer, vil wget være nyttig. Testing med wget er enkelt:

wget $URL

Her er et eksempel på testing av tools.tipsbilk.net.com:

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

Hvis den viser «connected» betyr det at det ikke er noe problem med tilkoblingen.

Sjekk ut dette for å se noen av de ofte brukte wget-kommandoeksemplene.

curl

Curl er et allsidig verktøy.

Visste du at du kan bruke curl til å telnette til en port?

Vel, nå vet du det.

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

Her er et eksempel i praksis:

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

Og når det ikke finnes en lyttende port eller et brannmurproblem, vil du se «trying…»

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

Du kan også bruke curl for å laste ned data, da det støtter en rekke protokoller – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, og mer.

nmap

Dette er et populært verktøy med hundrevis av funksjoner. Det blir ofte ansett som et sikkerhetsverktøy, og nmap lar deg teste en enkelt IP/port, eller et helt område.

For å teste en enkelt port:

nmap -p $PORT $IP

Et eksempel der port 443 testes på 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] ~]#

Sjekk «STATE»-kolonnen. Hvis du ser «open», betyr det at tilkoblingen fungerer. Hvis statusen er «filtered» betyr det at tilkoblingen ikke fungerer.

Ping

Dette er en velkjent kommando for å sjekke om en ekstern vert svarer på ICMP ECHO_REQUEST. Merk at dette kanskje ikke gir nøyaktige resultater hvis ICMP er blokkert av brannmuren til det eksterne nettverket. Forutsatt at det ikke er tilfelle, kan du pinge til et IPv4 eller IPv6-nettverksendepunkt slik:

ping $ipadresse
ping $url

Et eksempel på et vellykket resultat med tipsbilk.net.com:

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

Et eksempel på et mislykket resultat med en 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

Hvis endepunktet støtter IPv6, kan du bruke kommandoen ping6 slik:

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

Hvis du trenger å gjøre en ekstern ping over internett, kan du bruke et online ping-verktøy.

Konklusjon

Telnet er i ferd med å fases ut i de nyeste Linux-versjonene, men heldigvis finnes det mange gode alternativer som nevnt over.

Hvis du er ny til Linux og ønsker å lære mer, sjekk ut dette Udemy-kurset.