11.2 Konfiguration einer Netzwerkschnittstelle
Jede Netzwerkschnittstelle, sei sie physikalisch im Rechner als Netzwerkkarte vorhanden oder nur als logische Repräsentation einer VPN-Verbindung, wird unter Linux durch ein entsprechendes Device, also als Netzwerkschnittstelle, repräsentiert. Um Netzwerkschnittstellen – für die wir uns ja im aktuellen Kapitel besonders interessieren – zu konfigurieren, gibt es mehrere Programme. Klassisch ist dies ifconfig, moderner ist ip.
11.2.1 Welche Netzwerkschnittstellen gibt es?
Eine Liste der vorhandenen Netzwerkschnittstellen liefert ein Aufruf von ip a bzw. ifconfig. Netzwerkschnittstellen haben dabei Bezeichnungen wie lo, eth oder enp sowie – meistens – eine Nummerierung.
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:5b:06:a4 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 79459sec preferred_lft 79459sec inet6 fe80::1322:96e7:63d0:b00b/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:f8:65:05 brd ff:ff:ff:ff:ff:ff inet 172.16.0.1/16 brd 172.16.255.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::7ebb:b755:814d:c88d/64 scope link valid_lft forever preferred_lft forever $ ifconfig enp0s3 Link encap:Ethernet Hardware Adresse 08:00:27:5b:06:a4 inet Adresse:10.0.2.15 Bcast:10.0.2.255 Maske:255.255.255.0 inet6-Adresse: fe80::1322:96e7:63d0:b00b/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:24714 Fehler:0 Verloren:0 Überläufe:0 Fenster:0 TX-Pakete:13012 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:19404819 (19.4 MB) TX-Bytes:4755563 (4.7 MB) enp0s8 Link encap:Ethernet Hardware Adresse 08:00:27:f8:65:05 inet Adresse:172.16.0.1 Bcast:172.16.255.255 Maske:255.255.0.0 inet6-Adresse: fe80::7ebb:b755:814d:c88d/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0 TX-Pakete:94 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:0 (0.0 B) TX-Bytes:12490 (12.4 KB) lo Link encap:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine UP LOOPBACK RUNNING MTU:65536 Metrik:1 RX-Pakete:1591 Fehler:0 Verloren:0 Überläufe:0 Fenster:0 TX-Pakete:1591 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1 RX-Bytes:337159 (337.1 KB) TX-Bytes:337159 (337.1 KB)
Listing 11.3 Netzwerkschnittstellen anzeigen
Die Schnittstelle lo ist dabei die für den lokalen Rechner, weshalb sie auch die Netzwerkadresse 127.0.0.1 (IPv4) bzw. ::1 (IPv6) aufweist. Die anderen beiden Schnittstellen (enp0s3 und enp0s8) sind Ethernet-Netzwerkkarten, die die IPv4-Adressen 10.0.2.15 bzw. 172.16.0.1 besitzen. Auch werden die Subnetzmasken und die Broadcastadressen angezeigt (/24 brd 10.0.2.255 bedeutet, dass die ersten 24 Bits der Subnetzmaske auf 1 gesetzt sind und die Broadcastadresse 10.0.2.255 ist). Die restlichen Parameter sind zunächst nicht so wichtig.
Ersichtlich sind außerdem die MAC-Adressen (also die Hardwareadressen, die für die Kommunikation auf einer Layer-2-Ebene verwendet werden), zum Beispiel 08:00:27:f8:65:05. Wichtig ist zudem die Information, dass die Schnittstelle aktiviert (UP) ist, dass die Karte Multicast (MULTICAST) und Broadcast (BROADCAST) unterstützt und dass hier die MTU (Maximal Transmission Unit), also die maximale Größe eines Pakets, 1.500 Byte beträgt.
ifconfig liefert in den letzten paar Zeilen noch Statistiken, die ausführlich Auskunft über empfangene und gesendete Pakete geben. Die Ausgabe schließt mit der Angabe des Interrupts und der Basisadresse der Karte. Diese Informationen sind wichtig für die Hardwarekonfiguration Ihres Computers. Das ist aber nicht das Thema dieses Buches, also ignorieren Sie ruhig alles, was Sie nicht verstehen.
11.2.2 Konfiguration von Netzwerkkarten mit ip und ifconfig
Sollte Ihre Netzwerkkarte noch nicht (wie etwa im obigen Beispiel zu sehen) automatisch konfiguriert sein, können Sie von Hand nachhelfen, um dies zu ändern. Normalerweise benutzt man ip bzw. ifconfig, wenn man eine Netzwerkkarte für das eigene LAN fit machen will. Für einen solchen Einsatz reicht für gewöhnlich ein einziger Aufruf des Programms:
# ip addr add 10.0.2.15/24 dev enp0s3
Listing 11.4 Konfigurieren einer Netzwerkschnittstelle mit ip
Wir weisen der Schnittstelle enp0s3 (das ist die lokale Netzwerkkarte) die IP-Adresse 10.0.2.15 zu. Die Netmask (Netzmaske) wird mit 255.255.255.0 angegeben, d. h., dass unser Netz über keine weiteren Subnetze verfügt.
Wir können eine Netzwerkschnittstelle auch wieder aus dem Betrieb nehmen, indem wir ip mit dem Parameter down aufrufen. Die Inbetriebnahme erfolgt mit dem Parameter up.
# ip link set dev enp0s3 down # ip link set dev enp0s3 up
Listing 11.5 Netzwerkschnittstelle enp0s3 (de)aktivieren
Wichtig ist außerdem, dass wir einer Schnittstelle mitteilen, über welchen Router standardmäßig in andere Netzwerke gesendet werden soll (siehe Abschnitt 11.3).
Zu beachten bleibt jetzt lediglich, dass ip mögliche Änderungen bei einem Neustart wieder vergessen hat
MAC-Adressen
Wie bereits erwähnt, besitzen Netzwerkschnittstellen auch die oben erwähnte Hardware- oder MAC-Adresse. Bei der Auflistung der Schnittstellen zeigt ip diese nebst anderen Informationen für uns an. Dabei liefert a (oder address) sämtliche Adressen zu allen Schnittstellen.
# ip a ... 2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 5c:51:4f:d0:3f:7c brd ff:ff:ff:ff:ff:ff inet 192.168.2.106/24 brd 192.168.2.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 fe80::5e51:4fff:fed0:3f7c/64 scope link valid_lft forever preferred_lft forever
Listing 11.6 MAC-Adresse erfragen
In obigem Fall wäre die Hardwareadresse unserer WiFi-Schnittstelle (wlan0) die 5c:51:4f:d0:3f:7c. Das heißt, dass diese MAC-Adresse einer Schnittstelle mit der oben ebenfalls angezeigten IP-Adresse 192.168.2.106 zugeordnet ist. Möchten wir nun wissen, wie die MAC-Adressen der Rechner heißen, mit denen unser Rechner wiederum im lokalen Netzwerk kommuniziert (und welche IP-Adressen diese nutzen), so können wir ip neighbour aufrufen:
# ip neighbour 192.168.2.1 dev wlan0 lladdr 4c:09:d4:a5:00:34 STALE
Listing 11.7 Dem eigenen Rechner bekannte Hardwareadressen ausgeben lassen
Unser Rechner kommuniziert also mit einem Rechner, der die IP 192.168.2.1 verwendet. Diesem Rechner gehört wiederum die Hardwareadresse 4c:09:d4:a5:00:34. Verwendet wird für die Kommunikation mit diesem Rechner erneut die WiFi-Schnittstelle.
Konfiguration wieder löschen
Um die Konfiguration einer Schnittstelle wieder auf null zurückzusetzen, verwenden Sie den Parameter flush zusammen mit der Netzwerkschnittstelle. Anschließend taucht die IP-Adresse nicht mehr auf, wie hier am Beispiel der Ethernetschnittstelle eth0 zu sehen ist:
# ip addr flush eth0 # ip a ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... link/ether 08:00:27:2f:90:22 brd ff:ff:ff:ff:ff:ff
Listing 11.8 IP-Adresskonfiguration löschen
Nach dem Neustart ist alles weg?
Schade ist nur, dass Linux diese Einstellungen beim nächsten Reboot wieder vergessen hat. Es gibt verschiedene Möglichkeiten, dem entgegenzuwirken, beispielsweise indem Sie den ip-Aufruf in ein Startskript unter /etc einbauen, ein mit der Distribution mitgeliefertes Tool verwenden oder andere spezifische Konfigurationsmöglichkeiten nutzen. Letztendlich gibt es aber auch bei Distributionen keine Zauberei, und alles landet wieder bei ip und irgendwelchen Skripten – nur vor Ihren Augen versteckt.
Unter openSUSE findet die Konfiguration im Wesentlichen im Verzeichnis /etc/sysconfig/network (samt Unterverzeichnissen) statt. Bei Ubuntu wird das Verzeichnis /etc/netplan dafür verwendet. Unter anderen Distributionen heißen die Verzeichnisse und Dateien oft ähnlich.
Unter Debian können Sie zum Beispiel die Datei /etc/network/interfaces editieren. Eine statische Konfiguration sähe wie folgt aus:
auto eth1 iface eth1 inet static address 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255
Listing 11.9 Ein Beispiel für /etc/network/interfaces
Beim Booten wird hier automatisch die Schnittstelle eth1 aufgesetzt, und zwar mit einer statischen (also nicht dynamisch zugewiesenen) IP-Adresse. Wir legen die weiteren Parameter wie IP-Adresse, Netzmaske und Broadcastadresse ebenfalls fest.
Detailkonfiguration
Nun macht lesen aber nur halb so viel Spaß wie selbst ausprobieren! Gesetzt den Fall, Sie wissen, was Sie tun, oder Sie wissen zumindest, wie Sie später den Grundzustand wiederherstellen (beispielsweise durch einen Neustart), bietet Ihnen ip alle Möglichkeiten zur Manipulation. Wenn Sie möchten, können Sie zum Beispiel Ihrer Netzwerkkarte mehr als eine IP-Adresse gleichzeitig geben. Linux bietet Ihnen nämlich die Möglichkeit, mehrere virtuelle Netzwerkkarten zu konfigurieren. Hängen Sie dazu beispielsweise an Ihre Schnittstelle einen Doppelpunkt und die Nummer der Konfiguration an:
# ip addr add 192.168.1.1/24 dev enp0s8:1
Listing 11.10 Eine Netzwerkkarte mit zwei IPv4-Adressen
Das führt dazu, dass bei Aufruf von ip a show <device> plötzlich eine neue IP-Adresse hinzugekommen ist:
# ip a show enp0s8 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:f8:65:05 brd ff:ff:ff:ff:ff:ff inet 172.16.0.1/16 brd 172.16.255.255 scope global enp0s8 valid_lft forever preferred_lft forever inet 192.168.1.1/24 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::7ebb:b755:814d:c88d/64 scope link valid_lft forever preferred_lft forever
Listing 11.11 Beispielausgabe von ip
Jetzt besitzt Ihre Schnittstelle zwei IP-Adressen in separaten Netzwerken. Beachten Sie aber bitte, dass die Karte immer noch nur über ein Kabel mit der Außenwelt verbunden ist. Jetzt fragen Sie sicherlich, wofür man solche Spielereien überhaupt braucht. Gute Frage! Aber in Unternehmen gibt es manchmal Situationen, die es notwendig machen, die IT-Infrastruktur umzustellen. Zwei Server werden dann zum Beispiel zu einem vereinigt, weil die Hardware gerade so billig ist und die Leistung ausreicht, um beide Dienste zu betreiben. Jetzt haben Sie aber das Problem, dass an verschiedenen Stellen noch die alten IP-Adressen der beiden ursprünglichen Server eingestellt sind. Sie könnten sich natürlich an die Arbeit machen und Tausende PCs umkonfigurieren, oder Sie nutzen bei Ihrem neuen Server einfach die Möglichkeit, ihm zwei IP-Adressen statt einer zu geben.
Selbstverständlich lässt sich auch die MTU festlegen:
# ip link set dev enp0s8 mtu 500
Listing 11.12 Die Maximum Transfer Unit herabsetzen
Dieser Befehl setzt die maximale Paketgröße (MTU) für die Netzwerkschnittstelle enp0s8 von 1.500 Byte auf 500 Byte herab. Alle Pakete, die diese Schnittstelle passieren, werden jetzt in kleinere Pakete aufgeteilt. Überprüfen lässt sich die Änderung natürlich auch:
# ip link list ... 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:f8:65:05 brd ff:ff:ff:ff:ff:ff
Listing 11.13 Überprüfen der neuen MTU
11.2.3 Automatische Konfiguration: DHCP
Eine andere Möglichkeit, eine Netzwerkkarte ganz einfach zu konfigurieren, ist DHCP. Wenn Sie DHCP nutzen, brauchen Sie im Allgemeinen nichts von Hand einzustellen – alles geht automatisch. Der Nachteil ist natürlich, dass Sie einen DHCP-Server im Netzwerk brauchen.
Vereinfacht gesagt schicken Sie nur einen großen Hilferuf ins Netzwerk – also über das Kabel, das an Ihrer Netzwerkkarte angeschlossen ist. Der DHCP- Server fühlt sich dann angesprochen und schickt Ihnen die Daten zu. So wird Ihnen beispielsweise automatisch eine freie IP-Adresse zugewiesen, und es wird Ihnen gesagt, wo lang es ins Internet geht.
Die meisten Distributionen lassen Ihnen bei der Installation die Wahl zwischen dem automatischen Beziehen der IP-Adresse mittels DHCP oder der bereits vorgestellten statischen Methode. Typischerweise ist der Internet-Router, den Sie von Ihrem Provider erhalten haben, zugleich ein DHCP-Server. Damit werden alle Geräte, die sich via WLAN oder Kabel mit dem Router verbinden, automatisch Teil des Netzwerks.
dhcp-client
Das Programm dhcp-client ermöglicht die automatische Konfiguration einer Netzwerkschnittstelle mit DHCP:
# dhcp-client -i eth1
Listing 11.14 eth1 mittels dhcp-client konfigurieren lassen
Statt dhcp-client verwenden manche Distributionen das Tool dhclient, das ähnlich funktioniert.