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…
Indholdsfortegnelse
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.
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.
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.
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.