6 Linux-værktøj til at teste netværksforbindelse

Er du i tvivl om, hvordan man kontrollerer forbindelsen mellem to netværksendepunkter?

En af de almindelige opgaver for sysadmin er at kontrollere forbindelsen for at fejlfinde netværksproblemer. Det kan være noget som at applikationen ikke kan oprette forbindelse til backend-tjenesten, ude af stand til at hente data fra ekstern URL, verificere om flowet er åbnet osv.

Uanset hvad det måtte være, vil følgende hjælpeprogram/kommandoer hjælpe dig. De er testet på CentOS, og jeg ser ingen grund til ikke at arbejde på en anden Linux-distro.

Lad os udforske…

telnet

En af de meget brugte kommandoer til at teste væsentlig forbindelse mellem servere, server til en anden netværksenheds IP. Syntaksen for kommandoen er nem.

telnet $destinationIP $PORT

Lad os sige, at du vil teste, om du kan oprette forbindelse til port 8080 på 10.0.0.1 IP-adresse; så ville kommandoen være.

telnet 10.0.0.1 8080

Hvis der ikke er noget problem med at oprette forbindelse, bør du se den tilsluttede meddelelse.

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

Bemærk: Hvis du får en kommando, der ikke findes, mens du udfører telnet, skal du installere telnet, som jeg forklarede her.

I de fleste scenarier burde telnet hjælpe. Men hvis du har brug for en anden mulighed, så er her nogle telnet-alternativer.

ncat eller nc

Ncat (alias nc) er et kraftfuldt netværksværktøj med mange funktioner som at binde og acceptere en forbindelse, udføre kommandoer eksternt, skrive og læse data osv. Det virker både på IPv4 og IPv6.

  Sådan bruges grøn adresse på Linux

For at lave en simpel test for at kontrollere, om porten er åbnet eller ej, skal du udføre følgende.

nc -vz $HOSTNAME $PORT

Lad os tage et eksempel på at teste 443-porten på toadmin.dk.com.

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

Som nævnt kan du også bruge nc til at binde forbindelsen til at lytte på en bestemt port. Dette kan være praktisk, når du ikke har faktiske tjenester kørende, men ønsker at sikre, at der er forbindelse.

Sådan begynder du at lytte på en port:

nc -l $PORTNUMBER

Det vil binde porten til et givet nummer.

Hvis ncat ikke er installeret, så kan du få det gjort med yum install nc på CentOS/RHEL-servere.

wget

wget er en nyttig kommando til at downloade/teste HTTP, HTTPS og FTP. Hvis du arbejder som webingeniør eller ofte beskæftiger dig med web-relaterede problemer, så er wget din ven. Test ved hjælp af wget er ligetil.

wget $URL

Her er et eksempel på test tools.toadmin.dk.com

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

  Sådan ændres kontoadgangskoder på Linux

Tjek dette for at se nogle af de hyppigt brugte wget-kommandoer.

krølle

En krølle er et multifunktionelt værktøj.

Ved du, at du kan telnet til en port ved hjælp af curl?

Nå, nu ved du det.

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

Det følgende er et fungerende eksempel.

[[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 der ikke er nogen lytteport eller firewall-problem, vil du se, at du prøver…

[[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å bruge curl til at downloade dataene. Det understøtter flere protokoller – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER osv.

nmap

Et populært værktøj med hundredvis af funktioner. Ofte betragtes dette som et sikkerhedsværktøj, nmap lader dig teste en enkelt IP/port eller i området.

For at teste en enkelt port

nmap -p $PORT $IP

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

Se på tilstandskolonnen. Hvis du ser åben, betyder det, at forbindelsen er ok. Og hvis staten er filtreret, betyder det, at forbindelsen ikke eksisterer.

  Sådan bruger du kommandoen seq på Linux

Ping

En af de meget brugte kommandoer er at kontrollere, om en fjernvært svarer på ICMP ECHO_REQUEST eller ej. Husk, at dette muligvis ikke giver dig nøjagtige resultater, når ICMP er blokeret ved fjernnetværkets firewall. Forudsat at det ikke er tilfældet, kan du pinge til IPv4- eller IPv4-netværksslutpunktet som nedenfor.

ping $ipaddress
ping $url

For eksempel succesresultat af toadmin.dk.com

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

For eksempel fejlresultat af 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 slutpunktet understøtter IPv6, kan du bruge kommandoen ping6 som nedenfor.

[email protected] ~ % ping6 toadmin.dk.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 har brug for at lave fjern-ping over internettet, kan du bruge online-ping-værktøjet.

Konklusion

telnet udfases i den seneste Linux-version. Takket være ovenstående telnet-alternativ.

Hvis du er ny til Linux og ønsker at lære, så tjek dette Udemy kursus.