6 Linux-Dienstprogramm zum Testen der Netzwerkkonnektivität

Foto des Autors

By admin

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.