6 Linux-verktyg för att testa nätverksanslutning

By rik

Hur man Verifierar Anslutningar Mellan Nätverksändpunkter

Är du osäker på hur man kontrollerar kommunikationen mellan två nätverksenheter?

En vanlig sysadmin-uppgift är att granska anslutningen för att diagnostisera nätverksproblem. Det kan innebära att en applikation inte kan nå en backend-tjänst, misslyckas med att ladda data från en extern URL, eller att man helt enkelt vill säkerställa att portar är öppna.

Oavsett problemets natur, kan nedanstående verktyg och kommandon vara till hjälp. De har testats på CentOS, men borde fungera lika väl på andra Linux-distributioner.

Låt oss utforska dessa alternativ…

Telnet

Ett välkänt kommando för att testa grundläggande anslutning mellan servrar eller en server och en annan nätverksenhets IP. Kommandots syntax är enkel:

telnet $målIP $PORT

Om du till exempel vill testa om du kan ansluta till port 8080 på IP-adressen 10.0.0.1, skulle kommandot vara:

telnet 10.0.0.1 8080

Om anslutningen lyckas, ska du se ett meddelande om att anslutningen upprättats:

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

Obs: Om du får ett ”kommando ej funnet”-meddelande när du kör telnet, behöver du installera telnet. Information om hur du gör det hittar du här.

I många fall är telnet tillräckligt. Men om du behöver alternativa lösningar, presenteras några telnet-alternativ nedan.

Ncat eller nc

Ncat (även känt som nc) är ett kraftfullt nätverksverktyg med många funktioner, såsom att binda till och acceptera anslutningar, utföra fjärrkommandon, skriva och läsa data, med mera. Det fungerar både med IPv4 och IPv6.

För ett grundläggande test för att kontrollera om en port är öppen, kör följande:

nc -vz $VÄRDNAMN $PORT

Låt oss som exempel testa port 443 på adminvista.com:

[[email protected] ~]# nc -vz adminvista.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ämnts kan du även använda nc för att binda en anslutning för att lyssna på en specifik port. Det kan vara användbart när du inte har en aktiv tjänst men vill verifiera att anslutningen fungerar.

Så här börjar du lyssna på en port:

nc -l $PORTNUMMER

Detta binder porten till det angivna numret.

Om ncat inte är installerat kan du enkelt installera det med kommandot `yum install nc` på CentOS/RHEL-servrar.

wget

wget är ett användbart kommando för att ladda ner eller testa HTTP, HTTPS och FTP. Om du arbetar som webbutvecklare eller ofta hanterar webbrelaterade problem är wget ett mycket användbart verktyg. Det är enkelt att testa med wget:

wget $URL

Här är ett exempel där vi testar tools.adminvista.com:

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

Om den visar att anslutningen är lyckad, innebär det att det inte finns något anslutningsproblem.

Kolla här för att se några av de vanligaste exemplen på hur man använder wget-kommandon.

curl

curl är ett mångsidigt verktyg.

Visste du att du kan använda curl för att ”telnetta” till en port?

Nu vet du det.

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

Här är ett fungerande exempel:

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

Och om det inte är något problem med den lyssnande porten eller brandväggen, kommer du att 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 även använda curl för att ladda ner data. Det stöder flera protokoll – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER och fler.

nmap

Ett populärt verktyg med hundratals funktioner. Ofta betraktas nmap som ett säkerhetsverktyg. nmap ger dig möjlighet att testa en enskild IP-adress/port eller ett intervall.

För att testa en enskild port, använd:

nmap -p $PORT $IP

Ett exempel på att testa 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] ~]#

Titta på kolumnen ”STATE”. Om det står ”open”, betyder det att anslutningen fungerar som den ska. Om statusen är ”filtered” innebär det att anslutningen inte existerar.

Ping

Ett ofta använt kommando för att undersöka om en fjärrvärd svarar på ICMP ECHO_REQUEST-meddelanden. Observera att detta inte alltid ger ett korrekt resultat, speciellt om ICMP är blockerat av den fjärranslutna brandväggen. Om så inte är fallet kan du pinga till IPv4- eller IPv6-nätverksändpunkten som visas nedan:

ping $ipaddress
ping $url

Till exempel, ett lyckat resultat från adminvista.com:

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

Ett exempel på ett misslyckat resultat med en intern IP-adress:

[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

Om slutpunkten stöder IPv6, kan du använda kommandot `ping6` enligt nedan:

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

Om du behöver göra fjärrping via internet kan du använda ett onlinepingverktyg.

Slutsats

Telnet fasas gradvis ut i nyare Linuxversioner. Tack vare de ovanstående alternativen till telnet är det inte längre ett lika stort problem.

Om du är ny på Linux och vill lära dig mer, kolla in denna Udemy-kurs.