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.