Netzwerkkonfiguration unter Debian

Unter Debian – ich verwende 6.0 alias Squeeze – gibt es eine zentrale Datei in der die Netzwerkkonfiguration festgelegt werden kann. Dies ist die Datei /etc/network/interfaces. Sie enthält für jedes Interface, also auch jede Netzwerkkarte, entsprechende Abschnitte zu Festlegung der nötigen Werte zu IP-Adresse, Gateway ec.

Gundkonfiguration mit IPv4

Nach der Installation sind wahrscheinlich Einträge enthalten die die Netzwerkkarte in dem Verantwortungsbereich des Verbindungsmanagers überführen oder sie per DHCP automatisch konfigurieren. Mit ersterem ist es möglich über die Tools der Fenstermanager wie Gnome die Netzwerkeinstellungen zu ändern.

Für einen Server brauche ich das nicht. Daher trage ich stattdessen feste IP-Adressen ein um den Server auch zuverlässig erreichen zu können. Für zu hause sind nicht sonderlich viele Adressen nötig. Deshalb ist das Netz 192.0.2.0/24 mit seinen 254 Adressen ausreichend dimensioniert. Als eigentliche IP für den Server bietet sich dann 192.0.2.2 an (192.0.2.1 bekommt bei mir der Router).

Auf die /etc/network/interfaces übertragen sieht das dann wie folgt aus:

auto eth0
iface eth0 inet static
    address 192.0.2.2  
    netmask 255.255.255.0 
    gateway 192.0.2.1

Mittels auto eth0 teilen wir dem System mit das das genannte Interface eth0 beim Booten aktiviert werden soll. Danach folgen dann die Einstellungen für IP-Adresse, Netzmaske und Gateway. Im Grunde genommen war es dass schon.

Das ganze noch mal mit IPv6

Um zusätzlich auch mittels IPv6 kommunizieren zu können sind ein paar zusätzliche Zeilen notwendig:

iface eth0 inet6 static
    address fd00:4700:801f:1::2
    netmask 64

Das Schlüsselwort inet6q leitet, im Gegensatz zu inet@, eine IPv6 Konfiguration ein. Die Adresse wird in der üblichen hexadezimalen Notation angegeben. Die Netzmaske gib die Anzahl der Bits aus der Adresse an die das Netzwerk identifizieren (hier fd00:4700:801f:1) der Rest ist dann für die einzelnen Computer (hier 2).

Wie kommt man an so eine Adresse? Ähnlich wie der Adressbereich 192.168.1.0/24 werden Adressen die mit “fd” beginnen nicht ins Internet geroutet. Das heißt sie können nicht mit den öffentlich gültigen Adressen kollidieren. Was wiederum bedeutet das man sich quasi frei bedienen kann. Man nennt solche Adressen auch Site Local Addresses.

Zusätzliche Adressen definieren

Über virtuelle Interfaces kann man unter Linux weitere IP-Adressen einem Computer zuordnen. Dies macht man zum Beispiel um einzelne Dienste bereits auf IP-Ebene zu separieren. In meinem Fall weiß ich schon das ein Squeezebox Server für das abspielen von Musik installiert werden soll. Daher sehe ich für diesen schon mal beispielhaft ein eigenes Interface vor:

auto eth0:0
iface eth0:0 inet static
    address 192.0.2.3  
    netmask 255.255.255.0 
iface eth0:0 inet6 static
    address fd00:4700:801f:1::3
    netmask 64

Um ein Virtuelles Interface zu definieren verwendet man einfach den Namen des physischen und hängt ihm nach einem Doppelpunkt eine zusätzliche ID an. Wer sich nachher beim Kontrollieren das das Interface eth0:0 keine IPv6-Adresse hat muss noch mal genau bei eth0 nachsehen. IPv6 ist von vornherein dafür ausgelegt mit mehreren Adressen pro Netzwerkkarte zurecht zu kommen. Daher ist ein virtuelles Interface gar nicht nötig und Linux überführt entsprechende Konfigurationen gleich auf die physische Netzwerkkarte.

Zur Not: DHCP

Um zur Not einfach auf DHCP zurückgreifen zu können habe ich zusätzlich zu den bisherigen Einstellungen eine benannte Konfiguration erstellt:

iface dhcp inet dhcp

Dabei ist das erste “dhcp” ein willkürlich gewählter Name. Jetzt kann mit ifup eth0:1=dhcp jederzeit eine zusätzliche IP-Adresse vom nächsten DHCP Server bezogen werden.

Was nun?

Was wir jetzt haben ist eine Konfigurationsdatei. Aber was machen wir damit?

Mittels der Befehle ifup und ifdown können die bisher erstellten Konfigurationen aktiviert bzw. deaktiviert werden. Wichtiger ist aber das die mit auto versehenen Netzwerkschnittstellen beim Starten des Rechners automatisch konfiguriert werden.

Wer sich den aktuellen Status ansehen will kann den Befehl ifconfig verwenden. Damit kann man zwar auch Konfigurationen schreiben anstatt sie nur zu lesen aber man sollte darauf verzichten mehrere Methoden wie diesen Befehl und die /etc/network/interfaces zu kombinieren damit sich diese nicht wechselseitig überschreiben.