Linux-Rechner auf der Shell mit der Außenwelt verbinden und überwachen

Aus LinuxUser 04/2018

Linux-Rechner auf der Shell mit der Außenwelt verbinden und überwachen

© Peter Albrektsen, Fotolia

Ins Netz gegangen

Linux verfügt über zahlreiche Kommandozeilen-Bordmittel zur grundlegenden Konfiguration und Diagnose von Netzwerken. Das eröffnet die Möglichkeit zu maßgeschneiderten, per Skripting automatisierten Lösungen.

Netzwerkschnittstellen verwalten Sie unter Linux mithilfe des Kommandos ip. Damit setzen oder löschen Sie Zuweisungen zwischen Schnittstelle und Adresse, (de-)aktivieren Netzwerkschnittstellen beziehungsweise Netzwerkgeräte und setzen auch Routen.

Die Tabelle “Ip: Kommandos” fasst die gängigsten Unterbefehle zusammen, die Tabelle “Ip: Optionen” nennt einige wichtige Optionen. Beachten Sie, dass Sie Subnetz-Angaben in der CIDR-Schreibweise [1] vornehmen müssen. Beim Verwenden der Option -b Stapeldatei leiten Sie die einzelnen Zeilen der Stapeldatei direkt mit den Ip-Kommandos ein, nicht mit dem Wort ip. Weitere Optionen müssen Sie dabei beim Aufruf des Programms übergeben.

Aktion

Syntax

IP-Adresse für Devices hinzufügen

ip addr add IP|CIDR broadcast Broadcast dev Device

Alias für Device anlegen

ip addr add IP|CIDR dev Device label Device:1

IP-Adresse für Device löschen

ip addr del IP|CIDR dev Device

Device aktivieren

ip link set Device up

Device deaktivieren

ip link set Device down

IP-Adresseinstellungen anzeigen (alle)

ip addr show

IP-Adresseinstellungen anzeigen (Device)

ip addr show Device

Default-Route setzen

ip route add default via IP dev Device

Route setzen

ip route add Ziel-IP|CIDR via IP

Route löschen

ip route del Ziel-IP|CIDR via IP

Routen anzeigen

ip route

Status von Devices, Adressen und Routen

ip monitor all|Objekt ...

IP-Neighbour anzeigen

ip neighbour

Aktion

Syntax

alle Netzwerkobjekte einbeziehen

-a

Kommandostapel aus Datei abarbeiten

-b Datei

benutzergerechte Ausgabe

-d

besser lesbare Ausgabe

-h

Namensauflösung verwenden

-r

farbige Terminalausgabe

-c

Protokollfamilie

-f inet|inet6|bridge|ipx|dnet|mpls|link

Kurzformen für Protokollfamilie

IPv4

-4

IPv6

-6

Bridge

-B

DECNET

-D

IPX

-I

MPLS

-M

Link

-0

Listing 1 zeigt das Anlegen einer weiteren IP-Adresse (Zeile 1), die Anzeige des Ergebnisses nur für IPv4 (Zeile 2), das Löschen der zusätzlichen IP-Adresse (Zeile 10) sowie die Anzeige des Ergebnisses wieder nur für IPv4 (Zeile 11). Für alle verändernden Eingriffe benötigen Sie Root-Rechte. Reine Anzeigefunktionen, wie etwa die Kommandos show und monitor, dürfen auch nichtprivilegierte Benutzer nutzen (Abbildung 1).

Listing 1

# ip addr add 192.168.0.110/24 brd 192.168.0.255 dev eth0
# ip -4 addr show dev eth0
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link-netnsid 0
    inet 192.168.0.83/8 brd 192.255.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.83/24 brd 192.168.0.83 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.110/24 brd 192.168.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
# ip addr del 192.168.0.110/24 dev eth0
# ip -4 addr show dev eth0
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link-netnsid 0
    inet 192.168.0.83/8 brd 192.255.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.83/24 brd 192.168.0.83 scope global eth0
       valid_lft forever preferred_lft forever

Abbildung 1: Die Monitorfunktion von IP in Aktion.

Abbildung 1: Die Monitorfunktion von IP in Aktion.

TIPP

Das relativ neue Ip hat das alte Kommando ifconfig komplett abgelöst, aber noch nicht völlig verdrängt: Rufen Sie Ifconfig als normaler Benutzer mit der absoluten Pfadangabe (/sbin/ifconfig) auf, so erhalten Sie eine Übersicht aller Netzwerkschnittstellen samt deren Konfigurationsdaten.

Bezeichnungen für Netzwerkschnittstellen

Die Gerätenamen unterscheiden sich teilweise von Distribution zu Distribution. Traditionell heißen sie NICs eth0 oder wlan0. Neuerdings lösen Benennungen wie enp0s10 dieses Schema ab. Dabei zieht das System Angaben wie Firmware, Treiber, Indexnummern (BIOS) und die Nummer des PCI-Steckplatzes zum Bilden des Gerätenamens heran.

Routing

Für das Setzen, Anzeigen und Löschen von Routen [2] können Sie sowohl das Ip als auch das Kommando Route verwenden. Die folgenden Beispiele setzen eine Installation mit den zwei Netzen 192.168.0.0 und 192.168.2.0 voraus. In Letzterem befindet sich ein Rechner mit der Adresse 192.168.2.202. Ihn gilt es vom Netz 192.168.0.0 aus zu erreichen.

Die beiden Netze sind über je einen weiteren Router (nicht durch das Standard-Gateway) verbunden, mit den IP-Adressen 192.168.0.10 beziehungsweise 192.168.2.1. Für den Router wurde zur Durchleitung an unseren Rechner die Weiterleitung gemäß Abbildung 2 geschaltet. Der Port 5656 dient später für einen Test mittels Netread, in Ihrer Umgebung können Sie aber einen beliebigen Port dafür konfigurieren.

Abbildung 2: Vorbereiten des Routers f&uuml;r das Routing-Beispiel.

Abbildung 2: Vorbereiten des Routers für das Routing-Beispiel.

Das Setzen einer Route mit Ip erfolgt in der Form ip route add Ziel|CIDR via IP. In unserer Beispielumgebung lautet der Aufruf für das komplette Zielnetz also so wie in der ersten Zeile von Listing 2. Wollen Sie ausschließlich den einzelnen Rechner 192.168.2.202 im anderen Netz erreichen, ersetzen Sie im Befehl die Netzadresse durch dessen IP.

Listing 2

# ip route add 192.168.2.0/24 via 192.168.0.10
# ip route show
default via 192.168.0.1 dev eth0 onlink
192.0.0.0/8 dev eth0 proto kernel scope link src 192.168.0.83
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.83
192.168.2.0/24 via 192.168.0.10 dev eth0
# netwrite -i ausgabe.txt 192.168.2.202 5656
    2.51 KiB (2572 B) transferred at   53.3 MiB/s (0:00:00.00)
# ip route del 192.168.2.0/24 via 192.168.0.10
# ip route show
default via 192.168.0.1 dev eth0 onlink
192.0.0.0/8 dev eth0 proto kernel scope link src 192.168.0.83
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.83
# netwrite -i ausgabe.txt 192.168.2.202 5656
ERROR: Cannot connect to 192.168.2.202: No route to host

Gesetzte Routen lassen Sie sich mittels des Kommandos ip route show anzeigen (Zeile 2). Dessen Anzeige können Sie auf ein einzelnes Netzwerkgerät beschränken. Sie löschen Routen durch die Wiederholung des Befehls zum Einrichten, wobei Sie jedoch das add durch ein del als Kommando ersetzen (Zeile 9).

Nach dem Setzen sowie nach dem Löschen der Route erfolgte jeweils ein Übertragungstest mit Netread. Bei gesetzter Route führt er zum Erfolg (Zeile 7), nach dem Entfernen der Route schlägt er mit der Meldung No route to host fehl.

Bei route handelt es sich um einen älteren, aber immer noch gebräuchlichen Befehl zum Verwalten von Routen, der dieselben Aktionen bietet wie ip route. Die Tabelle “Route: Kommandos” listet die wichtigsten Aktionen auf. Abbildung 3 zeigt den analogen Ablauf zu Listing 2, nur mit Route ausgeführt.

Aktion

Syntax

Rechner als Ziel setzen

route add -host IP gateway Gateway-IP

Netz als Ziel setzen

route add -net IP netmask Netzmaske gateway Gateway-IP

Netz als Ziel setzen (CIDR)

route add -net IP|CIDR gateway Gateway-IP

Routen auflisten

route

Route zu Rechner löschen

route del -host IP

Route zu Netz löschen

route del -net IP netmask Netzmaske

Route zu Netz löschen (CIDR)

route del -net IP|CIDR

Abbildung 3: Das Setzen, Anzeigen und L&ouml;schen von Routen mit <code>route</code> funktioniert analog zu <code>ip route</code>.

Abbildung 3: Das Setzen, Anzeigen und Löschen von Routen mit route funktioniert analog zu ip route.

Netzwerkanbindung prüfen

Zu einer gut funktionierenden Netzwerkanbindung eines Endgeräts gehören neben einer funktionierenden Verbindung über Kabel oder WLAN auch die richtige Auflösung von Rechnernamen sowie in manchen Fällen auch das bereits geschilderte Routing.

Oft hat es banale Gründe, wenn sich ein Netzwerkteilnehmer nicht erreichen lässt: Das Gerät ist nicht eingeschaltet oder nicht mit dem Netzwerk verbunden (Netzwerkkabel ausgesteckt, WLAN nicht aktiviert). Falls jedoch aus Sicherheitsgründen, zum Beispiel als Maßnahme gegen Flood-Pings, der Admin des Zielsystems das Antworten auf ICMP-Pakete unterbunden hat, benötigen Sie andere Prüfmöglichkeiten.

Befindet sich das Gerät im eigenen Netz, können Sie bei einem managebaren Switch die Port-Daten auslesen, um beispielsweise auszulesen, welche MAC-Adresse anliegt. Andernfalls müssen Sie einen laufenden Dienst auf dem Gerät bemühen, wie etwa einen Webserver.

Das Standardwerkzeug Ping deckt fast alle Fälle hinsichtlich der Erreichbarkeitsprüfung ab. Die Tabelle “Ping: Optionen” zeigt Ihnen einige wichtige Optionen für diverse Einsatzszenarien.

Aktion

Syntax

Beschränkung auf IPv4

-4

Beschränkung auf IPv6

-6

Anzahl der Pakete

-c Anzahl

Zeitdauer des Programmlaufs

-w Sekunden

Flood-Ping (nur als Root)

-f

Wartezeit zwischen Paketen

-i Sekunden

Angabe Netzwerkgerät

-I Gerät

Antwortzeit angeben

-W Sekunden

Das Ergebnis einer Ping-Anfrage gilt es richtig zu deuten. Sprechen Sie beispielsweise das Ziel statt per IP-Adressen über den Hostnamen an, können auch dann Fehler auftreten, wenn dessen Netzwerkanbindung tadellos funktioniert. Die Tabelle “Ping: Ergebnisse” hilft bei der Deutung und erläutert weitere Folgerungen aus den Ergebnisse.

Eine Hilfe in Shell-Skripten bietet der von Ping zurückgegebene Exit-Code: Hier steht der Wert 0 für eine funktionierende Verbindung, eine 1 für keine Verbindung und eine 2 für andere Probleme, wie etwa eine fehlerhafte Namensauflösung.

Ergebnis

Folgerung

100% packet loss

technische Gründe, gegebenenfalls Routing prüfen

nnn% packet loss

eingeschränkte Verbindung

0% packet loss

perfekte Verbindung

Zu diesem Hostnamen gehört keine Adresse

Tippfehler / Fehler bei der Namensauflösung; gegebenenfalls Host- oder Dig-Abfrage anschließen

Listing 3 zeigt eine Reihe typischer Situationen. Beim ersten Aufruf liegt ein unbekannter Rechnername im lokalen Netz vor; es fehlt der passende Eintrag in /etc/hosts oder beim lokalen DNS-Server. Beim zweiten Aufruf funktioniert die Verbindung dann nach Angabe einer IP-Adresse. Hierbei handelt es sich um den Rechner, dessen Name gerade unbekannt war. In der dritten Runde kann Ping keine Verbindung zum Zielsystem herstellen. Dies kann technische Gründe haben, aber auch ein Tippfehler beim Absetzen des Kommandos wäre möglich. Im letzten Beispiel liegt ein unbekannter Name außerhalb des lokalen Netzes vor.

Listing 3

$ ping -c1 ziel
ping: ziel: Zu diesem Hostnamen gehört keine Adresse
$ ping -c1 192.168.0.38
PING 192.168.0.38 (192.168.0.38) 56(84) bytes of data.
64 bytes from 192.168.0.38: icmp_req=1 ttl=64 time=0.045 ms
--- 192.168.0.38 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
$ ping -c1 192.168.0.85
PING 192.168.0.85 (192.168.0.85) 56(84) bytes of data.
From 192.168.0.83 icmp_seq=1 Destination Host Unreachable
--- 192.168.0.85 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
$ ping -c1 noe.isnicht.de
ping: noe.isnicht.de: Der Name oder Dienst ist nicht bekannt

Fping

Der Befehl Fping ersetzt und ergänzt Ping. Viele seiner Optionen arbeiten ähnlich, doch erlaubt Fping weitergehende Diagnosen im Netzwerk. Vor allem ermöglicht es, mehrere Ziele gleichzeitig oder sogar ein ganzes Netz zu prüfen. Die Tabelle “Fping: Optionen” listet Wissenswertes darüber auf. Das Tool zählt nicht bei jeder Distribution zur Grundausstattung, gegebenenfalls installieren Sie es via Paketmanagement über das gleichnamige Paket nach.

Aktion

Syntax

erreichbare Systeme zeigen

-a

IP-Adresse statt Hostname

-A

DNS-Abfragen vornehmen

-n

Pakete je Ziel beschränken

-c Anzahl

Ziele aus Datei einlesen

-f Datei

Angabe der Netzadresse

-g Adressbereich|CIDR

Angabe der Netzadresse

-g IP Netzmaske

nur Zusammenfassung zeigen

-q

eine Statistik ausgeben

-s

Netzwerkgerät angeben

-I Device

Anzahl weiterer Versuche

-r Anzahl

Listing 4 zeigt vier Beispiele für den Einsatz von Fping. Der erste Aufruf demonstriert das gleichzeitige Prüfen mehrerer Ziele, die Sie sowohl über den Hostnamen als auch die IP-Adresse identifizieren dürfen. Auch Adressbereiche lassen sich durch geschickte Kombination verschiedener Optionen untersuchen (Zeile 4). Der Einzeiler aus dem dritten Aufruf (Zeile 9) schließlich liefert eine Übersicht aller aktuell aktiven Komponenten im lokalen Netzwerk. In einem Skript lässt sich das über eine For-Schleife als Datenquelle für weitere Aktionen verwenden.

Listing 4

$ fping ze8 192.168.0.10
ze8 is alive
192.168.0.10 is alive
$ fping -a -q -g 192.168.0.1 192.168.0.50
192.168.0.1
192.168.0.2
192.168.0.10
192.168.0.38
$ fping -aq -g 192.168.0.0/24
192.168.0.1
192.168.0.2
192.168.0.10
192.168.0.38
192.168.0.52
192.168.0.54
192.168.0.82
192.168.0.83
192.168.0.242
$ fping -aAnq -g 192.168.0.0/24
OpenWrt.lan (192.168.0.1)
192.168.0.2 (192.168.0.2)
192.168.0.10 (192.168.0.10)
ze8 (192.168.0.38)
192.168.0.52 (192.168.0.52)
fs-1370 (192.168.0.54)
192.168.0.82 (192.168.0.82)
192.168.0.83 (192.168.0.83)
monimobil.lan (192.168.0.242)

Über die zusätzliche Anzeige der Namensauflösung erfahren Sie auch, für welche Ziele diese funktioniert. Dazu kombinieren Sie die beiden Optionen -A und -n (Zeile 19). Interessiert Sie nur eine kurze summarische Übersicht, genügt der Aufruf aus Abbildung 4. Die dort verwendete Option -r 1 beschleunigt den Durchlauf, weil Fping nun jede Adresse insgesamt nur zwei Mal anpingt. Mit -r 0 versucht es jede Adresse nur einmal.

Abbildung 4: Mit den richtigen Optionen aufgerufen, liefert Fping eine &uuml;bersichtliche summarische Aufstellung.

Abbildung 4: Mit den richtigen Optionen aufgerufen, liefert Fping eine übersichtliche summarische Aufstellung.

Namensauflösung

Das Verwenden von Hostnamen für Rechner und Geräte sorgt bei der Arbeit im LAN und Internet für mehr Übersicht. Die dahinterliegenden Mechanismen arbeiten für den Benutzer meist transparent.

Die Urform der Namensauflösung liegt in der Verwendung der Datei /etc/hosts, die Sie mit Root-Rechten editieren. Hier stellen Sie die IP-Adresse und den Hostnamen – als Langnamen (oft ein FQDN), Kurznamen oder beides – des jeweiligen Systems in einer Zeile zusammen. Diesen Mechanismus verwendet man in kleinen Netzen oder auch in Fällen, in denen man sich gegen den Ausfall von Nameservern absichern möchte.

Das kleine Muster in Listing 5 zeigt einige typische Einträge. Am Anfang finden Sie stets die vom System generierten Angaben für den eigenen, lokalen Rechner (<localhost, Zeile 1 bis 8). Darunter nehmen Sie eigene Zuordnungen vor (Zeile 10 bis 19).

Indem Sie die Adressen von unerwünschten Gegenstellen wie beispielsweise Ad-Servern auf localhost umleiten, können Sie hier auch eine Art Sperrliste einrichten (ab Zeile 21). So werden Sie aufdringliches Beiwerk von Webseiten los, ohne im Webbrowser einen Adblocker einrichten zu müssen.

Listing 5

# Lokal
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
# Hosts im LAN
192.168.4.35    Rechner1  r1
192.168.4.36    Rechner2  r2
# -- Netzwerkdrucker
192.168.4.50    lp
192.168.4.51    laserjet
# Hosts im Internet
192.0.32.8      www.iana.org  ia
104.20.60.215   dict.leo.org  leo
# Sperren
127.0.0.1       navigationshilfe1.t-online.de
127.0.0.1       ad.de.doubleclick.net
127.0.0.1       pagead.googlesyndication.com
[...]

In größeren Netzen gerät die Namensauflösung über lokale Hosts-Dateien auf jedem Rechner schnell aufwendig und unübersichtlich. Hier bietet es sich an, einen eigenen Nameserver (Domain Name Server, DNS) einzurichten, um die Adressen zentral an einer Stelle zu verwalten. Anfragen für nicht lokale Adressen leitet der lokale Nameserver zum nächsten externen Nameserver weiter, meist zum DNS-Server Ihres Providers. Sie können dafür aber auch Alternativen nutzen, wie die bekannten.

Bei der Namensauflösung per Domain Name Server tauchen verschiedene Resource Record Types (RR) auf. Für die tägliche Praxis sollten Sie zumindest drei davon kennen: A steht für eine IPv4-Adresse, AAAA für eine IPv6-Adresse. Beim RR MX handelt es sich um den Mailserver einer Domain. Eine vollständige Übersicht über die RR-Typen finden Sie bei Interesse auf den Webseiten der IANA [3].

Namensauflösung prüfen

Das Werkzeug Host dient zum Prüfen der Namensauflösung über einen Nameserver sowie zum manuellen Ermitteln zusätzlicher Informationen. Rufen Sie das Programm ohne weitere Optionen nur mit einem Rechnernamen als Suchbegriff auf, erhalten Sie im Erfolgsfall die zugehörige(n) IP-Adresse(n) angezeigt – IPv4 und, falls vorhanden, IPv6. Die wichtigsten Optionen des Kommandos fasst die Tabelle “Host: Optionen” zusammen. Der erste Aufruf in Listing 6 zeigt die kurze, einfache Anwendung von Host, der zweite ein ausführliches Abfragebeispiel.

Aktion

Syntax

Ausführliche Informationen

-a

Alle Informationen ausgeben

-v

Eintragstyp angeben

-t A|AAAA|CNAME|NS|SOA ...

Listing 6

$ host www.google.de
www.google.de has address 172.217.18.3
www.google.de has IPv6 address 2a00:1450:4016:800::2003
$ host -a de.wikipedia.org
Trying "de.wikipedia.org"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 460
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 0
;; QUESTION SECTION:
;de.wikipedia.org.              IN      ANY
;; ANSWER SECTION:
de.wikipedia.org.       348     IN      AAAA    2620:0:862:ed1a::1
de.wikipedia.org.       585     IN      A       91.198.174.192
;; AUTHORITY SECTION:
org.                    154728  IN      NS      b2.org.afilias-nst.org.
org.                    154728  IN      NS      a2.org.afilias-nst.info.
org.                    154728  IN      NS      c0.org.afilias-nst.info.
org.                    154728  IN      NS      d0.org.afilias-nst.org.
org.                    154728  IN      NS      b0.org.afilias-nst.org.
org.                    154728  IN      NS      a0.org.afilias-nst.info.
Received 216 bytes from 127.0.0.1#53 in 5 ms

Routen finden

Bei Problemen mit der Übertragungsgeschwindigkeit zwischen zwei Systemen, die über das Internet miteinander in Kontakt stehen, kann man den Weg der Datenpakete ermitteln und gegebenenfalls abweichende Vorgaben für das Routing setzen.

Dazu ermitteln Sie mit Traceroute, welche Router sich zwischen Ihrem Rechner und dem Zielsystem befinden, wobei Sie als Ziel wahlweise eine IP-Adresse oder einen Hostnamen eingeben. Einige wichtige Optionen fasst die Tabelle “Traceroute: Optionen” zusammen; Listing 7 zeigt eine Traceroute-Abfrage für die LEO-Wörterbuchseite.

Aktion

Syntax

ICMP ECHO für Prüfung verwenden

-I

TCP SYN für Prüfung verwenden

-T

Benutze Netzwerkgerät

-i Device

Nummer von Autonomen Systemen ausgeben

-A

Listing 7

$ traceroute dict.leo.org
traceroute to dict.leo.org (104.20.60.215), 30 hops max, 60 byte packets
 1  cleopatra.ntm-gmbh.de (192.168.1.254)  0.392 ms  0.296 ms  0.285 ms
 2  host-62-245-143-241.customer.m-online.net (62.245.143.241)  1.576 ms  1.570 ms  1.561 ms
 3  host-212-114-240-113.customer.m-online.net (212.114.240.113)  2.928 ms  3.364 ms  3.332 ms
 4  et-4-0-0.rt-decix-2.m-online.net (82.135.16.197)  8.896 ms  8.776 ms  8.767 ms
 5  de-cix-frankfurt.as13335.net (80.81.194.180)  9.491 ms  9.492 ms  9.482 ms
 6  104.20.60.215 (104.20.60.215)  8.659 ms  8.655 ms  8.572 ms

Verbindungen mit Mtr prüfen

Das Programm Mtr verbindet die Funktionen von Ping und Traceroute. Es läuft sowohl in der GUI als auch im Terminal. Allerdings zählt das praktische Werkzeug bei vielen Distributionen nicht zum Standardlieferumfang. Sie müssen es also gegebenenfalls in Form des gleichnamigen Pakets über die Softwareverwaltung nachziehen.

Neben der Dauerkontrolle einer Verbindung ermöglicht Mtr auch das Erzeugen eines Reports per Einmaldurchlauf. Dazu verfügt es über eine Vielzahl von Optionen, deren wichtigste die Tabelle “Mtr: Optionen” zusammenfasst. Abbildung 5 zeigt Mtr im interaktiven Modus nach dem Aufruf des Befehls aus der ersten Zeile von Listing 8. Eine Report-Datei (Einmaldurchlauf mit Ausgabeumleitung) erzeugen Sie mit dem Aufruf aus der zweiten Zeile von Listing 8.

Aktion

Syntax

Ausgabe im Terminal

-t

Einmaldurchlauf für Report

-r

ASNs ausgeben

-z

Abfrageintervall

-i Sekunden

Maximale Durchlaufanzahl

-c N

IP und Hostname ausgeben

-b

Breitformatige Ausgabe

-w

DNS-Abfragen unterlassen

-n

Rohdaten ausgeben

-l

Report im CSV-Format

-C

TCP-SYN statt ICMP nutzen

-T

Datei mit Zielen einlesen

-F Datei

Listing 8

$ mtr -t -i10 www.example.com
$ mtr -t -r -C www.example.com > report.csv

Abbildung 5: Im interaktiven Modus bietet Mtr auch auf der Kommandozeile eine eing&auml;ngige Oberfl&auml;che.

Abbildung 5: Im interaktiven Modus bietet Mtr auch auf der Kommandozeile eine eingängige Oberfläche.

Praktische Anwendung

Mit dem Shell-Skript netzschau.sh aus Listing 9 erhalten Sie einen Überblick, welche Geräte in einem Netzwerk aktiv sind. Das Skript läuft so lange durch, bis Sie es mittels [Strg]+[C] beenden; Abbildung 6 zeigt es im Einsatz. Für das Ermitteln der aktiven IPs nutzt netzschau.sh Fping, das Sie gegebenenfalls vorab über die Paketverwaltung der verwendeten Distribution einrichten müssen.

Listing 9

#!/bin/bash
# netzschau.sh
Durchlauf=0
Netzwerk=$(ip route | grep "src" | cut -f1 -d" ")
while true; do
  clear
  echo "------------------------------"
  echo "Liste der aktiven IP-Adressen"
  echo "im Netzwerk ${Netzwerk}"
  echo -n "$(date +%H:%M:%S) Uhr "
  echo "($((Durchlauf+=1)). Durchlauf)"
  echo "------------------------------"
  fping -aq -g ${Netzwerk}
  echo "------------------------------"
  sleep 10
done

Abbildung 6: Das Skript <code>netzschau.sh</code> liefert eine &Uuml;bersicht der im Netzwerk aktiven Ger&auml;te.

Abbildung 6: Das Skript netzschau.sh liefert eine Übersicht der im Netzwerk aktiven Geräte.

Mit dem Shell-Skript netzhilfe.sh (Listing 10) überprüfen Sie schnell, ob die Netzwerkkonfiguration eines Linux-Rechners funktioniert. Die Idee hinter dem Skript: Jeder Benutzer kann es auch ohne Vorkenntnisse ausführen, im Fehlerfall verfügen Sie schon über eine vorläufige Diagnose. Deshalb unterdrückt es die Ausgaben der einzelnen Befehle und stellt lediglich die aktuellen Ergebnisse und gegebenenfalls Hinweise zur Fehlerbehebung dar (Abbildung 7, oben). Es kann bei Bedarf sogar einen fehlerhaften Eintrag in /etc/resolv.conf korrigieren, muss dazu aber durch root gestartet werden.

Abbildung 7: Mit <code>netzhilfe.sh</code> pr&uuml;fen auch weniger kundige Anwender problemlos die Netzwerkanbindung und k&ouml;nnen etwaige Fehler schnell selbst korrigieren.

Abbildung 7: Mit netzhilfe.sh prüfen auch weniger kundige Anwender problemlos die Netzwerkanbindung und können etwaige Fehler schnell selbst korrigieren.

Listing 10

#!/bin/bash
# netzhilfe.sh
# Server für Test; IP und FQDN gegebenenfalls anpassen
WebIP="93.184.216.34"
Webserver="www.example.com"
# Router ermitteln, falls nicht bei Aufruf übergeben
if [ $# -gt 0 ]; then
  Router="${1}"
else
  Router=$(ip route | grep "default" | cut -f3 -d" ")
fi
#
echo -n "Verbindungstest Rechner -> LAN: "
ping -c3 ${Router} &>/dev/null
if [ $? -eq 0 ]; then
  echo -e "[ERFOLG] Router ${Router} erreichbar, LAN ok."
else
  echo -e "[FEHLER] Router ${Router} nicht erreichbar."
  echo -e "\t\t\t\t* Router einschalten"
  echo -e "\t\t\t\t* Netzwerkkabel am Rechner prüfen\n"
  exit
fi
echo -n "Verbindungstest Rechner -> WWW: "
ping -c3 -q ${WebIP} &>/dev/null
if [ $? -eq 0 ]; then
  echo -e "[ERFOLG] Ziel ${WebIP} auf IP-Ebene erreichbar."
else
  echo -e "[FEHLER] Ziel ${WebIP} auf IP-Ebene nicht erreichbar."
  echo -e "\t\t\t\t* Kontrolllampen am DSL-Modem prüfen"
  echo -e "\t\t\t\t* DSL-Modem aus- und wieder einstecken"
  echo -e "\t\t\t\t* Router ${Router} prüfen / zurücksetzen\n"
  exit
fi
echo -n "Überprüfen der Namensauflösung: "
host ${Webserver} &>/dev/null
if [ $? -eq 0 ]; then
  echo -e "[ERFOLG] Namensauflösung für ${Webserver} funktioniert.\n"
  exit
else
  echo -e "[FEHLER] Falscher Eintrag beim Resolver."
  if [ "$(whoami)" = "root" ]; then
    echo -e "\t\t\t\t* Nameserver-Eintrag wird korrigiert ..."
    echo -e "nameserver ${Router}" > /etc/resolv.conf
    echo -e "\t\t\t\t* Resolv-Datei wurde zurückgesetzt.\n"
    echo -en "2. Prüfung der Namensauflösung: "
    host ${Webserver} &>/dev/null
    if [ $? -eq 0 ]; then
      echo -e "[ERFOLG] Namensauflösung funktioniert jetzt.\n"
    else
      echo -e "[FEHLER] Namensauflösung funktioniert nicht."
      echo -e "\t\t\t\t* Kontaktieren Sie einen Administrator.\n"
    fi
  else
    echo -e "\t\t\t\t* Starten Sie dieses Skript als Root.\n"
  fi
fi

Falls Sie dem Skript den zu prüfenden Router nicht in Form von IP-Adresse oder Hostnamen mitgeben, ermittelt es selbstständig die Router-IP. Als Gegenstelle für Tests der Internet-Verbindung verwendet es den Server http://www.example.com mit der IP 93.184.216.34. Möchten Sie einen anderen Webserver dazu nutzen, passen Sie die beiden Variablen WebIP und Webserver entsprechend an.

Zunächst prüft das Skript die Erreichbarkeit des Routers. Im Erfolgsfall versucht es anschließend, Kontakt zur angegebenen IP-Adresse aufzunehmen, um die Funktion der Internet-Verbindung zu prüfen. Klappt auch das, schließt sich zu guter Letzt ein Ping auf den Hostnamen des Webservers an, um die Namensauflösung zu prüfen. Arbeitet das Skript alle drei Punkte mit Erfolg ab, ist die Netzanbindung des Rechners grundsätzlich funktionsfähig (Abbildung 7, unten).

Schlägt dagegen eine der Prüfungen fehl, liefert netzhilfe.sh kurze Hinweise zur Fehlerbeseitigung. Sehr selten gibt es Probleme mit einem Eintrag der Datei /etc/resolv.conf, den das Skript dann nach Möglichkeit neu setzt.

Fazit

Die grundlegende Netzwerkkonfiguration gelingt mithilfe von Kommandozeilenbefehlen ohne jede Schwierigkeit. Die Funktionsfähigkeit der Einstellungen lässt sich dabei einfach überprüfen. Die Möglichkeit, die Kommandos auch in einem Shell-Skript unterzubringen, eröffnet dabei den Weg zu maßgeschneiderten Lösungen für den Eigengebrauch. 

Der Autor

Harald Zisler beschäftigt sich seit rund 25 Jahren mit FreeBSD und Linux. Er verfasst Artikel und Bücher zu Technik- und EDV-Themen, aktuell ist die vierte Auflage von “Computer-Netzwerke” beim Rheinwerk Verlag erschienen.

Glossar

CIDR

Classless Inter-Domain Routing (RFC 1518, RFC 1519, RFC 4632). Verfahren zur effizienten Nutzung des IPv4-Adressraums. Die CIDR-Adresse setzt sich aus der Netzadresse und einem Suffix zusammen, der die Anzahl der Bits in der Netzmaske beschreibt. So entspricht die CIDR 192.168.0.0/24 beispielsweise dem Netz mit den IP-Adressen 192.168.0.1 bis 192.168.0.255.

NIC

Network Interface Controller. Netzwerkadapter, in der Regel in Form einer Steck- oder Einschubkarte, eines USB-Sticks oder eines Onboard-Chips.

Infos

  1. TCP/IP-Grundlagen: Kristian Kißling, “Pfade durch den Dschungel”, LU 12/2006, S. 34, https://www.linux-community.de/11811

  2. Netzwerkgrundlagen: Martin Steigerwald, “Komplexe Architektur”, LU 03/2007, S. 86, https://www.linux-community.de/11894

  3. DNS-Parameter: http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 04/2018 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben