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

Undrar du hur man kontrollerar anslutningen mellan två nätverksändpunkter?

En av de vanliga uppgifterna för sysadmin är att kontrollera anslutningen för att felsöka nätverksproblem. Det kan vara något som att applikationen inte kan ansluta till backend-tjänsten, inte kan hämta data från extern URL, verifiera om flödet är öppet, etc.

Vad det än kan vara så skulle följande verktyg/kommandon hjälpa dig. De är testade på CentOS, och jag ser ingen anledning att inte arbeta på en annan Linux-distro.

Låt oss utforska…

Innehållsförteckning

telnet

Ett av de mycket använda kommandona för att testa väsentlig anslutning mellan servrar, server till en annan nätverksenhets IP. Syntaxen för kommandot är enkel.

telnet $destinationIP $PORT

Låt oss säga att du vill testa om du kan ansluta till port 8080 på 10.0.0.1 IP-adress; då skulle kommandot vara.

telnet 10.0.0.1 8080

Om det inte finns några problem med att ansluta, bör du se det anslutna meddelandet.

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

Obs: om du får ett kommando som inte hittas när du kör telnet måste du installera telnet som jag förklarade här.

I de flesta scenarierna borde telnet hjälpa. Men om du behöver något annat alternativ så är här några telnet-alternativ.

ncat eller nc

Ncat (alias nc) är ett kraftfullt nätverksverktyg med många funktioner som att binda och acceptera en anslutning, utföra kommandon på distans, skriva och läsa data, etc. Det fungerar på både IPv4 och IPv6.

För att göra ett enkelt test för att kontrollera om porten är öppen eller inte, kommer du att utföra följande.

nc -vz $HOSTNAME $PORT

Låt oss ta ett exempel på att testa 443-porten på adminvista.com.com.

[[email protected] ~]# nc -vz adminvista.com.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 också använda nc för att binda anslutningen för att lyssna på en viss port. Detta kan vara praktiskt när du inte har faktiska tjänster igång men vill säkerställa att anslutning finns.

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

nc -l $PORTNUMBER

Det kommer att binda porten till ett givet nummer.

Om ncat inte är installerat kan du få det gjort med yum install nc på CentOS/RHEL-servrar.

wget

wget är ett användbart kommando för att ladda ner/testa HTTP, HTTPS och FTP. Om du arbetar som webbingenjör eller ofta hanterar webbrelaterade problem så är wget din vän. Att testa med wget är enkelt.

wget $URL

Här är ett exempel på att testa tools.adminvista.com.com

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

Kolla in det här för att se några av de ofta använda exemplen på wget-kommandon.

ringla

En curl är ett mångsidigt verktyg.

Vet du att du kan telnet till en port med curl?

Nåväl, nu vet du det.

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

Följande ä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 när det inte finns något problem med lyssningsporten eller brandväggen, kommer du att se att du försöker…

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

Du kan också använda curl för att ladda ner data. Den stöder flera protokoll – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, etc.

nmap

Ett populärt verktyg med hundratals funktioner. Ofta betraktas detta som ett säkerhetsverktyg, nmap låter dig testa en enda IP/port eller inom intervallet.

För att testa en enda port

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å tillståndskolumnen. Om du ser öppen betyder att anslutningen är ok. Och om tillståndet är filtrerat betyder det att anslutning inte existerar.

Ping

Ett av de ofta använda kommandona är att kontrollera om en fjärrvärd svarar på ICMP ECHO_REQUEST eller inte. Tänk på att detta kanske inte ger dig korrekta resultat när ICMP är blockerad vid fjärrnätverkets brandvägg. Förutsatt att så inte är fallet kan du pinga till IPv4- eller IPv4-nätverksändpunkten enligt nedan.

ping $ipaddress
ping $url

Till exempel framgångsresultat av adminvista.com.com

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

Till exempel felresultat av 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

Om slutpunkten stöder IPv6 kan du använda kommandot ping6 enligt nedan.

[email protected] ~ % ping6 adminvista.com.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ärrpinga över Internet kan du använda onlinepingverktyget.

Slutsats

telnet fasas ut i den senaste Linuxversionen. Tack vare ovanstående telnet-alternativ.

Om du är ny på Linux och vill lära dig, kolla in det här Udemy kurs.