Wie prüft man die Konnektivität zwischen zwei Netzwerkendpunkten?
Eine der häufigsten Aufgaben eines Systemadministrators ist die Überprüfung der Konnektivität zur Behebung von Netzwerkproblemen. Es kann alles Mögliche sein, wie z.B. die Anwendung kann sich nicht mit dem Backend-Dienst verbinden, kann keine Daten von einer externen URL abrufen, überprüfen, ob der Fluss geöffnet ist, usw.
Was auch immer es sein mag, die folgenden Dienstprogramme/Befehle werden Ihnen helfen. Sie wurden auf CentOS 7.x getestet, und ich sehe keinen Grund, warum sie nicht auch auf anderen Linux-Distributionen funktionieren sollten.
Lassen Sie uns erforschen…
telnet
Einer der weit verbreiteten Befehle zum Testen der grundlegenden Konnektivität zwischen Servern, Servern und der IP eines anderen Netzwerkgeräts. Die Syntax für den Befehl ist einfach.
telnet $destinationIP $PORT
Angenommen, Sie wollen testen, ob Sie eine Verbindung zum Port 8080 an der IP-Adresse 10.0.0.1 herstellen können; dann würde der Befehl lauten.
telnet 10.0.0.1 8080
Wenn es kein Problem bei der Verbindung gibt, dann sollten Sie die Meldung „connected“ sehen.
Trying 10.0.0.1...Connected to 10.0.0.1.Escape character is '^]'.
Hinweis: Wenn bei der Ausführung von telnet der Befehl nicht gefunden wird, müssen Sie telnet installieren, wie ich hier erklärt habe.
In den meisten Fällen sollte telnet helfen. Wenn Sie jedoch eine andere Option benötigen, finden Sie hier einige Telnet-Alternativen.
ncat oder nc
Ncat (auch bekannt als nc) ist ein leistungsfähiges Netzwerkdienstprogramm mit vielen Funktionen wie Binden und Annehmen einer Verbindung, Ausführen von Befehlen aus der Ferne, Schreiben und Lesen von Daten, usw. Es funktioniert sowohl mit IPv4 als auch mit IPv6.
Um einen einfachen Test durchzuführen, um zu prüfen, ob der Port geöffnet ist oder nicht, führen Sie Folgendes aus.
nc -vz $HOSTNAME $PORT
Lassen Sie uns als Beispiel den Port 443 auf geekflare.com testen.
# 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.#
Wie bereits erwähnt, können Sie auch nc
verwenden, um die Verbindung so zu binden, dass sie auf einen bestimmten Port hört. Dies kann praktisch sein, wenn Sie keine aktuellen Dienste laufen haben, aber sicherstellen wollen, dass eine Verbindung besteht.
Um das Abhören auf einem Port zu starten:
nc -l $PORTNUMBER
Dies bindet den Port an eine bestimmte Nummer.
Wenn ncat nicht installiert ist, können Sie es mit yum install nc
auf CentOS/RHEL-Servern erledigen.
wget
wget ist ein nützlicher Befehl zum Herunterladen/Testen von HTTP, HTTPS und FTP. Wenn Sie als Web-Ingenieur arbeiten oder oft mit webbezogenen Problemen zu tun haben, dann ist wget
Ihr Freund. Testen mit wget ist einfach.
wget $URL
Hier ist ein Beispiel für das Testen von 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 #
Wenn es „connected“ anzeigt, bedeutet das, dass es kein Verbindungsproblem gibt.
curl
A curl ist ein Mehrzweck-Tool.
Wusstest du, dass du mit curl zu einem Port telnetten kannst?
Nun, jetzt wissen Sie es.
curl -v telnet://$IP:$PORT
Das folgende ist ein funktionierendes Beispiel.
# 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)
Und wenn es keinen lauschenden Port oder ein Firewall-Problem gibt, dann werden Sie sehen, wie Sie es versuchen…
# curl -v telnet://chandan.io:4434* About to connect() to chandan.io port 4434 (#0)* Trying 104.31.68.106...
Sie können curl auch zum Herunterladen der Daten verwenden. Es unterstützt mehrere Protokolle – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, etc.
nmap
Ein beliebtes Tool mit hunderten von Funktionen. Oft wird es als Sicherheitstool betrachtet. Mit nmap können Sie eine einzelne IP/Port oder einen Bereich testen.
Um einen einzelnen Port zu testen
nmap -p $PORT $IP
Ein Beispiel für das Testen von Port 443 auf 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#
Schauen Sie sich die Spalte Status an. Wenn Sie open sehen, ist die Verbindung in Ordnung. Und wenn der Status gefiltert ist, bedeutet das, dass keine Verbindung besteht.
Schlussfolgerung
telnet wird in der neuesten Linux-Version nicht mehr unterstützt. Dank der oben genannten Telnet-Alternative.
Wenn Sie neu in Linux sind und etwas lernen wollen, schauen Sie sich diesen Udemy-Kurs an.