Netzwerk

Aus Vokabulabor
Zur Navigation springen Zur Suche springen

Links

Zielsetzung

Eine Einführung in die technischen Grundlagen eines Netzwerkes.

Was ist ein Netzwerk?

Unter einem Netzwerk verstehen wir mehrere Computer, die untereinander Daten austauschen können. Die einzelnen Computer werden Knoten des Netzwerks genannt.

Durch das Netzwerk können wir:

  • eine Fernwartung betreiben: Über das Netzwerk können wir per Fernzugriff auf dem entfernten Netzwerknoten so arbeiten, wie wenn wir auf dem Computer "normal" angemeldet wären.
  • Dateien kopieren, in beide Richtungen
  • Dienste wie der Betrieb von Webseiten auf einem Knoten anbieten und von einem anderen Knoten aus nutzen.

IP-Adressen

Damit jeder Knoten des Netzwerks angesprochen werden kann, braucht er eine "Identifikation", das ist die IP-Adresse. In IP4 besteht die Adresse aus 4 Zahlen, die jeweils von 0 bis 255 sein können, getrennt durch einen Punkt:

  • 127.0.0.1
  • 192.168.2.1

Jeder im Internet ansprechbare Computer braucht eine eindeutige Netzwerkadresse. Daher können in IP4 maximal 2**32 = 4 Milliarden Knoten sein.

Ports

Damit ein Netzwerknoten mehrere Dienste anbieten kann, gibt es viele "Eingänge" zum Knoten, die Ports:

Ein 'Port ist eine ganze Zahl von 1 bis 65535, die für eine IP-Kommunikation genutzt werden kann.

netstat -tulpn | head -n10
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:36291           0.0.0.0:*               LISTEN      740/rpc.mountd      
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      1616/python3        
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      747/redis-server 12 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3518074/nginx: mast 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/init              
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1215/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      772/sshd: /usr/sbin 
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      3518074/nginx: mast 
tcp        0      0 0.0.0.0:33729           0.0.0.0:*               LISTEN      740/rpc.mountd      

Hier sehen wir, dass der Dienst nginx (Webserver) zweimal erreichbar ist: einmal unverschlüsselt auf Port 80 und verschlüsselt auf Port 443.

Standardports

  • 22: SSH (Fernzugriff)
  • 25: Email-Server
  • 80: unverschlüsseltes HTTP (Webseiten)
  • 443: verschlüsseltes HTTP (HTTPS)

Mehr Infos mit

cat /etc/services

Netzwerknamen

Da Zahlen nicht sehr gut gemerkt werden können, gibt es die Möglichkeit, jeder IP-Adresse einen (oder mehrere) Namen zu geben. Dieser Name kann dann anstatt der IP-Adresse verwendet werden.

Beispielsweise hat die Bahn den Namen bahn.de reserviert. Wie lautet die IP-Adresse?

dig bahn.de
...
;; ANSWER SECTION:
bahn.de.		89	IN	A	81.200.196.33
...

Das Kommando dig liefert Infos über Netzwerknamen.

  • Die Antwort: bahn.de hat die IP 81.200.196.33

Netzwerkgeräte (Network Devices)

Jede Schnittstelle eines Computer zu einem Netzwerk wird Netzwerkgerät genannt:

  • eine Netzwerkkarte mit Kabel. Namen sind eno1 oder eth3.
  • eine WLan-Karte. Beispiel eines Namens: wlp2s0
  • Schnittstelle zum eigenen Computer: Name ist lo. Das ist sinnvoll: Wenn ein Netzwerkdienst auf dem Computer installiert ist, dann kann dieser Dienst mit über diese Schnittstelle auf dem gleichen Computer benutzt werden.

Die eigenen IP-Adressen

ip addr
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 noprefixroute 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 58:47:ca:70:cc:e9 brd ff:ff:ff:ff:ff:ff
    altname enp1s0
    inet 192.168.2.100/24 brd 192.168.2.255 scope global dynamic eno1
       valid_lft 860246sec preferred_lft 860246sec
    inet6 2003:c4:d72c:0:5a47:caff:fe70:cce9/64 scope global dynamic mngtmpaddr 
       valid_lft 7042sec preferred_lft 986sec
    inet6 fe80::5a47:caff:fe70:cce9/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 10:6f:d9:76:11:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.129/24 brd 192.168.2.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 860241sec preferred_lft 860241sec
    inet6 2003:c4:d72c:0:7eea:909e:e79b:7fc1/128 scope global dynamic noprefixroute 
       valid_lft 6794sec preferred_lft 3194sec
    inet6 2003:c4:d72c:0:e65b:44b0:b25a:337/64 scope global dynamic noprefixroute 
       valid_lft 7043sec preferred_lft 987sec
    inet6 fe80::7eea:909e:e79b:7fc1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Die Datei /etc/hosts

Wir können selber eine Zuordnung zwischen Namen und IP-Adresse machen, das geschieht in der Datei /etc/hosts.

Wichtig:

  • Änderungen kann nur der Benutzer root vornehmen. Also das Kommando su verwenden.
  • Diese Namensauflösung funktioniert nur auf dem Rechner

Ausschnitt aus einer /etc/hosts:

127.0.0.1       localhost
92.168.2.142 tramp

Jede Zeile hat am Anfang eine IP-Adresse, danach Leerzeichen oder Tabulatoren, dann der Name.

Aufgabe: Trage eine Abkürzung für den Netzwerknamen www.historische-brettspiele.de ein: brett

Vorgehen:

  • Ip-Adresse ermitteln (dig)
  • Eintrag in /etc/hosts:
  • Probiere die Adresse brett.de im Browser

Domain Name Service (DNS)

Damit wir auf die Netzwerknamen benutzen können, muss es einen Service geben, der aus den Netzwerknamen die IP-Adresse macht. Das ist das DNS-System. Es gibt viele DNS-Server, die genau das können.

Doch woher weiß das System, wo der DNS-Server zu finden ist?

cat /etc/resolv.conf
domain fritz.box
search fritz.box
nameserver 192.168.2.3

In dieser Datei steht die Adresse des zuständigen DNS-Servers: 192.168.2.3. Das ist die Adresse des Routers (Fritzbox), der dann selber andere DNS-Server kennt und befragt, wenn er selber keine Antwort weiß.

Es gibt einfach zu merkende DNS-Server: 9.9.9.9, 8.8.8.8. Diese werden benutzt, wenn der zuständige DNS-Server mal nicht funktioniert oder nicht bekannt ist.

Subnetze

Es können Subnetze eingerichtet werden, die eine Organisation von vielen Netzwerknoten in kleineren Einheiten erlaubt.

Subnetze können öffentlich sein: dann kann von jedem Knoten des Internet zugegriffen werden, oder privat, dann ist nur ein Zugriff innerhalb des Subnetzes möglich.

Alle Adressen eines Subnetzes haben den gleiche Anfang (Präfix). Daher gibt es die Schreibweise, eine IP-Adresse anzugeben und zu definieren, wie viele Bits davon zum Subnetz gehören:

  • 192.168.2.0/24
  • 172.24.0.0/16
  • 10.0.0.0/8


Es gibt 3 Bereiche von privaten Subnetzen:

  • 10.x.y.z privates A-Netz mit 2**24 = 16 Mio Adressen
  • 172.24.y.z privates B-Netz mit 2**16 = 65536 Adressen
  • 192.168.x.y privates C-Netz mit 2**8 = 255 Adressen

Routing

Wenn Knoten von verschiedenen Subnetzen kommunizieren wollen, geht das mittels ***Routing***: Es werden Regeln definiert, wie ein Paket von weitergeleitet werden kann, damit es zum anderen Knoten gelangt.

ip route show
default via 192.168.2.3 dev eno1 
default via 192.168.2.3 dev wlp2s0 proto dhcp src 192.168.2.129 metric 600 
172.24.0.0/16 dev wgreen0 proto kernel scope link src 172.24.2.113 
192.168.2.0/24 dev eno1 proto kernel scope link src 192.168.2.100 
192.168.2.0/24 dev wlp2s0 proto kernel scope link src 192.168.2.129 metric 600 
  • default: Wenn keine andere Regel passt, gilt diese Regel
    • Hier gibt es 2 Default-Routen: eine über die Kabel-Schnittstelle eno1, eine über die Netzwerkschnittstelle wlp2s0
  • Pakete an das Subnetz 172.24.0.0/16 werden über die Schnittstelle wgreen0 geleitet.
  • Pakete an das Subnetz 192.168.2.0/24 werden entweder über eno1 oder wlp2s0: Bevorzugt wird eno1, da wlps0 eine schlechtere "Metric" von 600 hat.

Jeder Router nutzt ein eigenes Subnetz aus dem privaten Bereich. Die Fritzbox verwendet 192.168.2.0/24.

Netzwerkkommandos

# eigene Adressen anzeigen
ip addr
# Routing anzeigen
ip route show
# Feststellen, ob ein Netzwerkknoten (Peer) erreichbar ist:
ping bahn.de
# Infos über einen Netzwerkknoten:
dig bahn.de
# Anzeigen, welche Dienste lokal laufen:
sudo netstat -tulpn | grep LISTEN
# Testen, welche Ports auf einem Knoten offen sind. Wir sind nur an Ports kleiner 1001 interessiert:
nmap -p1-1000 192.168.188.1
# Welche Knoten bieten einen SSH-Zugang (Port 22) an
nmap -p22 192.168.188.0/24
# Zwischenknoten anzeigen:
traceroute bahn.de