Netzwerk
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