Netzwerke_2

Computernetze: Internet - Einführung

Teil 2: IP-Schicht

Linux Networking Packages

Unter Linux gibt es zwei Packages, die Kommandozeilenwerkzeuge zum Verwalten, Konfigurieren etc. der Netzwerkfunktionalitäten beeinhalten

  • Das neuere iproute2util-Package mit den Kommandozeilenwerkzeugen: arpd, bridge, ctstat, dcb, devlink, ip, lnstat, nstat, rdma, routef, routel, rtacct, rtmon, rtstat, ss, tc und tipc
  • Das ältere net-tools-Package
    • Kommandozeilenwerkzeuge: ifconfig, route, nameif, iwconfig, iptunnel, netstat, arp

Tipp: Sie sollten die Befehle des moderneren iproute2util-Package verwenden.

Hinweis: Zur Konfiguration von Netzwerkfunktionalität gibt es prinzipielle unter Linux verschiedene Möglichkeiten, siehe z.B. den Artikel aus Linux-User 7/2019.

ip: show / manipulate routing, network devices, interfaces

Da das Kommando ip so umfangreich ist, gibt es zu den einzelnen Aufgaben eigene Manpages, z.B. zu ip address kann man sich mittels man ip-address die entsprechende Manpage ansehen.

  • man ip-address protocol address management
  • man ip-route routing table management
  • man ip-link network device configuration

  • etc.

Tipp: Drücken Sie nach der Eingabe von man ip- in der bash die Tab-Taste, um die weitern Manpages zu sehen.

Welche Parameter es zu einem Kommando gibt sehen Sie auch z.B. mit ip address help.

In [106]:
whatis ip
ip (8)               - show / manipulate routing, network devices, interfaces...
ip (7)               - Linux IPv4 protocol implementation

Netzwerkgeräte anzeigen

Mit ip addr show kann man die die Netzwerkgeräte (devices) des Rechners anzeigen. Dabei werden die physikalischen Netzwerkgeräte angezeigt, aber auch logische Repräsentationen der Netzwerkgeräte von virtuellen Maschinen, Containern und VPN etc.:

In [12]:
# korrepondierendes legacy command des net-tools-package: 
#ifconfig

ip address show
# ip addr show # address lässt sich auch abkürzen mit addr  
# oder noch kürzer: ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: wlp59s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether cc:f9:e4:c2:cc:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.22/24 brd 192.168.178.255 scope global dynamic noprefixroute wlp59s0
       valid_lft 858784sec preferred_lft 858784sec
    inet6 2a02:8109:a0c0:4694:7003:7dda:888f:6316/64 scope global temporary dynamic 
       valid_lft 6914sec preferred_lft 3314sec
    inet6 2a02:8109:a0c0:4694:3561:d126:a69f:4ac8/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 6914sec preferred_lft 3314sec
    inet6 fe80::4377:f5d1:e295:73fb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
9: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
10: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
11: vboxnet2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:02 brd ff:ff:ff:ff:ff:ff
12: vboxnet3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:03 brd ff:ff:ff:ff:ff:ff
28: cscotun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1300 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 141.45.243.131/22 brd 141.45.243.255 scope global cscotun0
       valid_lft forever preferred_lft forever
    inet6 fe80::4cc2:4627:d1c8:4232/126 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::b63b:ce93:42b:6cf4/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Hier sieht man, dass IP-Addressen den Netzwerkgeräten (wie Netzkarten) zugeordnet sind.

  • lo steht dabei für das Loopback-Device (wird gleich behandelt).
  • wlp59s0 ist die WLAN-Schnittstelle
  • vboxnetX sind die Netzwerke virtuelle Maschinen (virtuellBox).

Außerdem stehen zu den einzelnen Netzwerkgeräten verschiedene Informationen. Beispiel:

2: wlp59s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether cc:f9:e4:c2:cc:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.22/24 brd 192.168.178.255 scope global dynamic noprefixroute wlp59s0
       valid_lft 858504sec preferred_lft 858504sec
    inet6 2a02:8109:a0c0:4694:7003:7dda:888f:6316/64 scope global temporary dynamic 
       valid_lft 7191sec preferred_lft 3591sec
    inet6 2a02:8109:a0c0:4694:3561:d126:a69f:4ac8/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 7191sec preferred_lft 3591sec
    inet6 fe80::4377:f5d1:e295:73fb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Hier bedeutet:

  • BROADCAST und MULTICAST: Die Karte unterstützt Broadcast und Multicast.
  • UP: Die Schnittstelle ist aktiviert.
  • mtu 1500: maximal transmission unit 1500, d.h. maximale Größe eines Pakets ist 1500 Byte.
  • cc:f9:e4:c2:cc:4d MAC-Adresse der Schnittstelle (siehe unten)

So kann man z.B. die verwendete IPv4 extrahieren:
ip -o -4 add show scope global | awk '{ print $4 }'

192.168.178.22/24

ip neighbour echo echo -n "IP and Hardware address (MAC Address) of a neighbour are " echo -n $(ip neighbour | grep REACHABLE | head -1| awk '{print $1 " and " $5 "."}')

192.168.178.1 dev wlp59s0 lladdr c8:0e:14:97:fc:c8 REACHABLE
fe80::ca0e:14ff:fe97:fcc8 dev wlp59s0 lladdr c8:0e:14:97:fc:c8 router DELAY
2a02:8109:a0c0:4694:ca0e:14ff:fe97:fcc8 dev wlp59s0 lladdr c8:0e:14:97:fc:c8 router STALE

IP and Hardware address (MAC Address) of a neighbour are 192.168.178.1 and c8:0e:14:97:fc:c8.


Korrepondierendes Kommando des net-tools-package:
arp -a

fritz.box (192.168.178.1) at c8:0e:14:97:fc:c8 [ether] on wlp59s0

Aufgabe

Wie erhalten Sie die physikalische Adresse ihrer Netzwerkkarte bzw. ihres WLANs?

Aufgabe

Speichern Sie nur die IPv4 Adresse in einer Variablen:

In [55]:
my_ip= 
# Hinweis: Sie haben bereits gelernt, die Ausgabe 
#  eines Befehls in einer Variablen zu speichern
In [57]:
# So wird neben anderen Informationen das Suffix (Netzwerkmaske) angezeigt 
ip -o -f inet addr show scope global
2: wlp59s0    inet 192.168.178.22/24 brd 192.168.178.255 scope global dynamic noprefixroute wlp59s0\       valid_lft 849697sec preferred_lft 849697sec

Aufgabe

Weisen Sie der Variable my_netsuffix über den Befehl ip und Extraktion das Netsuffix zu:

In [58]:
my_netsuffix=

ip route

Die Routingtabelle kann mit dem Befehl ip route angezeigt bzw. manipuliert werden.

In [71]:
whatis ip-route
ip-route (8)         - routing table management
In [10]:
ip route show match default
default via 192.168.178.1 dev wlp59s0 proto dhcp metric 600 

Anzeigen der vollen Routing Tabelle mit

ip route

default via 192.168.178.1 dev wlp59s0 proto dhcp metric 600 
169.254.0.0/16 dev wlp59s0 scope link metric 1000 
192.168.178.0/24 dev wlp59s0 proto kernel scope link src 192.168.178.22 metric 600 


Hier ist sind die Rechner in 92.168.178.0/24 direkt erreichbar, genauer

  • 92.168.178.0 steht für die Netzwerkadresse
  • 92.168.178.1 - 92.168.178.254 sind mögliche IPs für Computer
  • 92.168.178.255 ist die Broadcast-Adresse

169.254.0.0/16 steht für Link-Lokal, aus RFC 5735:

169.254.0.0/16 - This is the "link local" block.  As described in
[RFC3927], it is allocated for communication between hosts on a
single link.  Hosts obtain these addresses by auto-configuration,
such as when a DHCP server cannot be found.

Mit ip route kann man auch neue Einträge in der Routing Tabelle erstellen bzw. Einträge löschen.

Domainnamen

Da IP-Adressen für Menschen schwer zu merken sind, gibt es eine Möglichkeit die IP-Adressen über Namen (Domains) zu erhalten, die von dem hierachisch organisierten Verzeichnisdienst DNS übersetzt werden. DNS steht dabei für Domain Name System. Eine kurze Erklärung finden Sie in

Beispiel für einen Domainnamen: rc.f4.htw-berlin.de

  • de: Top-Level Domain (first-level). Diese bestimmt wer in dieser Zone die Verwatung übernimmt. Für deutschland ist es DENIC.
  • htw-berlin: second-level
  • f4: third-level
  • rc: fourth-level

Der vollständige Name einer Domain heißt Fully Qualified Domain Name (FQDN).

Kommandozeilentools zur Namensauflösung

Mit Hilfe von nslookup oder dig (beide aus dem package dnsutils) bekommt man eine Namensauflösung und weitere Informationen (siehe man-Pages), z.B.:

In [65]:
nslookup htw-berlin.de
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	htw-berlin.de
Address: 141.45.66.214

In [73]:
whatis host
host htw-berlin.de
host (1)             - DNS lookup utility
htw-berlin.de has address 141.45.66.214
htw-berlin.de mail is handled by 50 mail1.rz.htw-berlin.de.
In [74]:
# andersrum:
host 141.45.66.214
214.66.45.141.in-addr.arpa domain name pointer htwb.de.
214.66.45.141.in-addr.arpa domain name pointer s.htw-berlin.de.

Nameserver

Die Auflösung von Domain-Namen zu IP-Adressen wird von sogenannten Nameservern geleistet.

Aber man kann auch z.B. für ein kleines Heimnetz, die Netzwerknamen und Rechnernamen direkt in die Dateien /etc/networks bzw. /etc/hosts schreiben. So können diese Namen dann auf dem lokalen Rechner statt der IPs verwendet werden.

Falls aber ein DHCP-Server (oft im Heimnetzrouter per Standard) verwendet wird, können sich die IPs ständig ändern.

In [99]:
cat /etc/networks
# symbolic names for networks, see networks(5) for more information
link-local 169.254.0.0
In [100]:
cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	platon

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Loopback Device lo - localhost

Das Loopback-Device lo dient dazu, dass (Netzwerk-)Dienste lokal auf dem Rechner verfügbar sind, auch wenn kein Netzwerkgerät angeschlossen ist. D.h. auch ohne Netzwerk können lokale Programme über das Netzwerkprotokolle kommunizieren (eine Form der Interprozesskommunikation). Dies kann auch zu Diagnosezwecken genutzt werden.

Ein Beispiel kennen Sie schon jupyter notebook. Hier wird beim Start ein Webserver auf dem lokalen Rechner gestartet, um jupyter notebooks über den Webbrowser zu bearbeiten und auszuführen.

localhost ist die korrespondierende Top-Level-Domain, die für Dokumentations- und Testzwecke reserviert ist. Das Loopback-Device (localhost) hat per Standard die IP-Adresse 127.0.0.1 (::1 bei IPv6).

In [50]:
nslookup localhost
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	localhost
Address: 127.0.0.1
Name:	localhost
Address: ::1

In [51]:
host localhost
localhost has address 127.0.0.1
localhost has IPv6 address ::1

Kommando ping

Das Kommando ping dient zur Netzwerkdiagnose. So kann man z.B. überprüfen, ob Rechner über das Netzwerk zu erreichen sind. Dazu antworten typischerweise alle Netzwerkschnittstellen auf das entsprechende ICMP-Paket.

In [17]:
whatis ping
ping (8)             - send ICMP ECHO_REQUEST to network hosts
In [78]:
# Überprüfen, ob das loopbackdevice funktioniert:
ping localhost -c 2
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.068 ms

--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1017ms
rtt min/avg/max/mdev = 0.068/0.069/0.070/0.001 ms
In [77]:
# Ist z.B. das Internet erreichbar 
# und kann ich Namen verwenden (Nameserver)
ping christianherta.de -c 1
PING christianherta.de (217.160.0.91) 56(84) bytes of data.
64 bytes from 217-160-0-91.elastic-ssl.ui-r.com (217.160.0.91): icmp_seq=1 ttl=55 time=25.1 ms

--- christianherta.de ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 25.132/25.132/25.132/0.000 ms

Aufgabe (Schreiben eines bash-Skriptes): Einfacher Netzwerk-Scan mit ping

Nutzen Sie ping um alle erreichbaren Rechner im lokalen Netz auszugeben.

Machen Sie folgende vereinfachte Annahmen:

  • IPv4 mit Netzmaske 255.255.255.0, d.h. nur das letzte Byte variieren (fix.fix.fix.*)

Network Scan mit anderen Tool

Es gibt eine Reihe von Netzwerktools, wie z.B. nmap, mit denen man Netzwerke untersuchen und scannen kann, siehe z.B. https://www.elektronik-kompendium.de/sites/net/1910051.htm.

Hinweis: Scannen Sie nicht einfach fremde Computernetze (auf Schwachstellen) aus juristischen Gründen.

traceroute

Mit Hilfe des Programms traceroute lässt sich eine Route eines Datenpakets aufzeigen, mehr siehe z.B. auch. https://de.wikipedia.org/wiki/Traceroute

In [69]:
traceroute --resolve-hostnames christianherta.de
traceroute to christianherta.de (217.160.223.1), 64 hops max
  1   192.168.178.1 (fritz.box)  5,961ms  3,904ms  5,217ms 
  2   62.155.240.135 (p3e9bf087.dip0.t-ipconnect.de)  14,357ms  12,660ms  10,989ms 
  3   217.5.109.14 (217.5.109.14)  142,040ms  24,808ms  125,573ms 
  4   80.157.131.194 (80.157.131.194)  36,681ms  142,036ms  22,915ms 
  5   212.227.120.168 (ae-9.bb-b.bs.kae.de.oneandone.net)  30,113ms  27,467ms  38,300ms 
  6   212.227.121.222 (port-channel-3.gw-distd-sh-2.bs.kae.de.oneandone.net)  145,139ms  27,686ms  26,885ms 
  7   *  *  * 
  8   *  * 
In [16]:
whatis mtr

# mrt network diagnostic tool
mtr -c 10 -r christianherta.de
mtr (8)              - a network diagnostic tool
Start: 2021-04-08T09:09:14+0200
HOST: platon                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- _gateway                   0.0%    10    1.4   2.7   1.4   7.5   1.8
  2.|-- ip5b4162fe.dynamic.kabel-  0.0%    10    7.8  11.4   7.3  32.5   7.5
  3.|-- 83-169-180-166-isp.superk  0.0%    10    8.6  14.1   7.3  52.9  14.1
  4.|-- ip5886bb8c.dynamic.kabel-  0.0%    10    8.9  12.1   8.5  22.7   4.2
  5.|-- 145.254.3.66               0.0%    10   10.1  11.4   9.6  16.1   1.9
  6.|-- 145.254.2.179              0.0%    10   17.5  19.6  16.8  28.3   3.8
  7.|-- 145.254.2.179              0.0%    10   27.3  20.4  16.8  27.3   3.7
  8.|-- ae-18.bb-b.fr7.fra.de.one  0.0%    10   18.0  18.6  16.1  20.8   1.7
  9.|-- ae-9.bb-b.bs.kae.de.onean  0.0%    10   21.3  23.0  18.7  47.6   8.7
 10.|-- port-channel-3.gw-distd-s  0.0%    10   22.5  21.8  20.6  24.7   1.2
 11.|-- clienthosting.eu           0.0%    10   19.6  19.9  18.3  21.3   0.8

Umfangreiches Standardlehrbuch zu Computernetzwerken:

  • Andrew S. Tanenbaum / Prof. David J. Wetherall: Computernetzwerke, 5., aktualisierte Auflage, Pearson Studium 2012