Stehen Sie vor der Frage, wie die Verbindung zwischen zwei Netzwerkkomponenten überprüft werden kann?
Die Überprüfung der Konnektivität ist eine Kernaufgabe von Systemadministratoren zur Behebung von Netzwerkproblemen. Es könnte beispielsweise sein, dass eine Anwendung keine Verbindung zu einem Back-End-Dienst aufbaut, Daten von einer externen URL nicht geladen werden können oder dass ein bestimmter Datenfluss nicht geöffnet werden kann.
Unabhängig vom konkreten Problem helfen Ihnen die folgenden Werkzeuge und Befehle bei der Analyse. Sie wurden auf CentOS getestet und sollten auch auf anderen Linux-Distributionen funktionieren.
Lassen Sie uns diese Möglichkeiten genauer betrachten…
Telnet
Ein häufig verwendeter Befehl, um die grundlegende Erreichbarkeit zwischen Servern oder einem Server und der IP-Adresse eines anderen Netzwerkgeräts zu testen. Die Syntax des Befehls ist einfach:
telnet $ZielIP $PORT
Nehmen wir an, Sie möchten prüfen, ob eine Verbindung zum Port 8080 auf der IP-Adresse 10.0.0.1 möglich ist. Der entsprechende Befehl wäre:
telnet 10.0.0.1 8080
Bei erfolgreicher Verbindung wird eine entsprechende Meldung angezeigt:
Trying 10.0.0.1... Connected to 10.0.0.1. Escape character is '^]'.
Hinweis: Sollte beim Aufruf von Telnet eine Fehlermeldung „Befehl nicht gefunden“ erscheinen, muss Telnet erst installiert werden. Hier finden Sie eine Anleitung dazu.
In vielen Situationen ist Telnet ausreichend. Wenn Sie jedoch alternative Methoden bevorzugen, gibt es hier einige Optionen.
ncat oder nc
Ncat (auch bekannt als nc) ist ein vielseitiges Netzwerktool mit zahlreichen Funktionen, darunter das Binden und Akzeptieren von Verbindungen, die Ausführung von Befehlen auf einem Remote-System sowie das Senden und Empfangen von Daten. Es funktioniert sowohl mit IPv4 als auch mit IPv6.
Um zu testen, ob ein Port geöffnet ist, verwenden Sie den folgenden Befehl:
nc -vz $HOSTNAME $PORT
Ein Beispiel für das Testen von Port 443 auf wdzwdz.com:
[[email protected] ~]# nc -vz wdzwdz.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]ekflare-lab ~]#
Wie bereits erwähnt, kann nc auch verwendet werden, um eine Verbindung so zu binden, dass auf einem bestimmten Port gelauscht wird. Dies kann nützlich sein, um sicherzustellen, dass eine Verbindung möglich ist, auch wenn keine eigentlichen Dienste auf dem Port laufen.
So wird ein Port zum Lauschen gebracht:
nc -l $PORTNUMBER
Dies bindet den angegebenen Port.
Falls ncat nicht installiert ist, kann es auf CentOS/RHEL-Servern mit dem Befehl `yum install nc` installiert werden.
wget
wget ist ein praktischer Befehl zum Herunterladen und Testen von HTTP-, HTTPS- und FTP-Verbindungen. Für Webentwickler und Personen, die häufig mit webbezogenen Problemen zu tun haben, ist wget ein wertvolles Werkzeug. Das Testen mit wget ist einfach:
wget $URL
Beispiel für das Testen von tools.wdzwdz.com:
[[email protected] ~]# wget tools.wdzwdz.com --2019-05-09 20:40:01-- https://tools.wdzwdz.com/ Resolving tools.wdzwdz.com (tools.wdzwdz.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ... Connecting to tools.wdzwdz.com (tools.wdzwdz.com)|104.25.134.107|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://tools.wdzwdz.com/ [following] --2019-05-09 20:40:01-- https://tools.wdzwdz.com/ Connecting to tools.wdzwdz.com (tools.wdzwdz.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] ~]#
Die Meldung „connected“ deutet auf eine erfolgreiche Verbindung hin.
Weitere Beispiele für die Verwendung von wget finden Sie hier: wget-Befehlsbeispiele.
curl
curl ist ein universelles Werkzeug.
Wussten Sie, dass Sie mit curl eine Telnet-Verbindung zu einem Port aufbauen können?
Nun, jetzt wissen Sie es.
curl -v telnet://$IP:$PORT
Hier ist ein Beispiel:
[[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)
Wenn kein Problem mit dem Port oder der Firewall vorliegt, wird der Verbindungsaufbau angezeigt.
[[email protected] ~]# curl -v telnet://chandan.io:4434 * About to connect() to chandan.io port 4434 (#0) * Trying 104.31.68.106...
Mit curl können auch Daten heruntergeladen werden. Es unterstützt viele Protokolle, darunter HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER und viele mehr.
nmap
Ein beliebtes Tool mit zahlreichen Funktionen, das oft im Bereich der Sicherheit eingesetzt wird. Mit nmap können Sie einzelne IPs/Ports oder ganze Bereiche testen.
So wird ein einzelner Port getestet:
nmap -p $PORT $IP
Beispiel für das Testen von Port 443 auf 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] ~]#
Die Spalte „STATE“ ist entscheidend. „open“ bedeutet, dass die Verbindung in Ordnung ist, während „filtered“ auf eine fehlende Verbindung hindeutet.
ping
Ein häufig verwendeter Befehl, um zu überprüfen, ob ein Remote-Host auf ICMP ECHO_REQUEST-Nachrichten antwortet. Beachten Sie, dass dies nicht immer zuverlässig ist, falls ICMP durch die Firewall des Remote-Netzwerks blockiert wird. Wenn dies nicht der Fall ist, können Sie IPv4- oder IPv6-Netzwerkendpunkte wie folgt anpingen:
ping $ipaddress ping $url
Beispiel für eine erfolgreiche Ping-Antwort von wdzwdz.com:
[email protected] ~ % ping wdzwdz.com PING wdzwdz.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
Beispiel für eine fehlgeschlagene Ping-Antwort auf eine interne IP-Adresse:
[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
Wenn der Endpunkt IPv6 unterstützt, können Sie den Befehl `ping6` verwenden:
[email protected] ~ % ping6 wdzwdz.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
Wenn Sie einen Remote-Ping über das Internet durchführen müssen, können Sie Online-Ping-Tools verwenden.
Fazit
Telnet verliert in neueren Linux-Versionen an Bedeutung. Zum Glück gibt es die oben genannten Alternativen.
Wenn Sie neu in Linux sind und mehr lernen möchten, schauen Sie sich diesen Udemy-Kurs an.