Vad gör du för att kontrollera anslutningen mellan två nätverksslutpunkter?
En av de vanligaste uppgifterna för systemadministratörer är att kontrollera anslutningen för att felsöka nätverksproblem. Det kan vara vad som helst, t.ex. att programmet inte kan ansluta till en backend-tjänst, att det inte går att hämta data från en extern URL, att kontrollera om flödet är öppnat osv.
Vad det än kan vara så kan följande verktyg/kommandon hjälpa dig. De är testade på CentOS 7.x, och jag ser ingen anledning till att de inte skulle fungera på en annan Linux-distribution.
Låt oss utforska…
telnet
Ett av de allmänt använda kommandona för att testa viktig konnektivitet mellan servrar, server till en annan nätverksenhets IP. Syntaxen för kommandot är enkel.
telnet $destinationIP $PORT
Säg att du vill testa om du kan ansluta till port 8080 på IP-adressen 10.0.0.1. Kommandot skulle då vara.
telnet 10.0.0.1 8080
Om det inte finns några problem med anslutningen bör du se meddelandet ansluten.
Trying 10.0.0.1...Connected to 10.0.0.1.Escape character is '^]'.
Notera: om du får kommandot inte hittas när du utför telnet måste du installera telnet som jag förklarade här.
I de flesta scenarier bör telnet hjälpa. Men om du behöver något annat alternativ så finns här några telnet-alternativ.
ncat eller nc
Ncat (a.k.a. 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, osv. Det fungerar både på IPv4 och IPv6.
För att göra ett enkelt test för att kontrollera om porten är öppen eller inte utför du följande.
nc -vz $HOSTNAME $PORT
Låt oss ta ett exempel på att testa 443-porten på geekflare.com.
# nc -vz geekflare.com 443Ncat: 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.#
Som nämnts kan du också använda nc
för att binda anslutningen att lyssna på en viss port. Detta kan vara praktiskt när du inte har några faktiska tjänster som körs men vill försäkra dig om att anslutningen finns.
För att börja lyssna på en port:
nc -l $PORTNUMBER
Det kommer att binda porten på 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 webbtekniker eller ofta har att göra med webbrelaterade problem är wget
din vän. Det är enkelt att testa med wget.
wget $URL
Här är ett exempel på testning av tools.geekflare.com
# wget tools.geekflare.com--2019-05-09 20:40:01-- http://tools.geekflare.com/Resolving tools.geekflare.com (tools.geekflare.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...Connecting to tools.geekflare.com (tools.geekflare.com)|104.25.134.107|:80... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: https://tools.geekflare.com/ --2019-05-09 20:40:01-- https://tools.geekflare.com/Connecting to tools.geekflare.com (tools.geekflare.com)|104.25.134.107|:443... connected.HTTP request sent, awaiting response... 200 OKLength: unspecified 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 #
Om den visar ansluten betyder det att det inte finns något anslutningsproblem.
curl
En curl är ett verktyg med många olika användningsområden.
Vet du att du kan telneta till en port med curl?
Ja, nu vet du det.
curl -v telnet://$IP:$PORT
Nedan följer ett fungerande exempel.
# 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ågon lyssnande port eller något brandväggsproblem kommer du att se att du försöker…
# 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 hämta data. Det stöder flera protokoll – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER osv.
nmap
Ett populärt verktyg med hundratals funktioner. Ofta betraktas detta som ett säkerhetsverktyg. nmap låter dig testa en enskild IP/port eller i intervallet.
För att testa en enskild port
nmap -p $PORT $IP
Ett exempel på att testa port 443 på siterelic.com
# nmap -p 443 siterelic.comStarting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTCNmap 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:af32PORT STATE SERVICE443/tcp open httpsNmap done: 1 IP address (1 host up) scanned in 0.13 seconds#
Se på kolumnen state. Om du ser open betyder det att anslutningen är ok. Och om tillståndet är filtrerat betyder det att anslutningen inte finns.
Slutsats
Telnet fasas ut i den senaste Linuxversionen. Tack vare ovanstående telnet-alternativ.
Om du är ny i Linux och vill lära dig så kolla in denna Udemy-kurs.