Die "Netzwerkumgebung" in (Debian) Linux

Die Datei »/etc/network/interfaces«1) ist die zentrale Konfigurationsdatei der Netzwerkschnittstellen und am ehesten mit den Eigenschaften der Netzwerkumgebung unter Windows oder mit dem Netzwerk-SnapIn in den Systemeigenschaften unter Mac OSX vergleichbar. Sind die beiden letztgenannten GUI Varianten und konfigurieren im Hintergrund Registryeinträge oder Konfigurationsdateien, so ist die »interfaces« Datei ganz Unix-like rein Text basiert.

Hier können Sie Ihre Netzwerkschnittstellen entweder manuell oder automatisch per DHCP konfigurieren, aber auch zB statische Routen eintragen. Der Zweck dieser Datei dient dazu, diese Einstellungen ggf auch nach einem Neustart noch zur Verfügung zu haben. Dazu wird die »interfaces«-Datei beim Systemstart ausgewertet. Detaillierte Informationen bzgl. der Konfigurationsmöglichkeiten entnehmen Sie bitte der Manpage von interfaces (»man interfaces«)

In diesem Tutorial möchte ich einige rudimentäre aber durchaus übliche Einstellungen dokumentieren:

Note: Dieser Artikel ersetzt und ergänzt den älteren Artikel How To -> Permanente Route konfigurieren.

Grundsätzliches zum Ablauf

Beim Systemstart wird das Init-Skript »etc/init.d/networking« ausgeführt, welches uA die beiden High-level Systemwerkzeuge »ifup«2) und »ifdown«3) aufruft, je nachdem ob das System gerade startet (»ifup«) oder herunter gefahren wird (»ifdown«). Genauer gesagt werden diese Programme mit der Option »-a« aufgerufen. Die Datei »/etc/network/interfaces« ist die Konfigurationsdatei für diese beiden High-Level Systemtools. Hier werden die Schnittstellen, welche beim Systemstart konfiguriert werden sollen mit »auto« gekennzeichnet, was mit dem zuvor genannten »ifup/ifdown« Programmparameter »-a« korreliert. »ifup/ifdown« konfigurieren aber die Schnittstellen nicht direkt, sondern bedienen sich den beiden Low-Level Konfigurationstools »ifconfig«4) und »route«5).

Ein Beispiel:

  • »init« Systemstart6)
  • »/etc/init.d/networking start« wird aufgerufen
  • »networking start« ruft »ifup -a« auf
  • »ifup« sucht in »/etc/network/interfaces« zB nach »auto eth0«
  • »ifup« sucht dann die Konfigurationsanweisung für das Interface »eth0«, welche zB wie folgt in der Datei »/etc/network/interfaces« stehen können:

    iface eth0 inet static
        address 192.168.0.97   
        netmask 255.255.255.0   
        gateway 192.168.0.1
  • »ifup« konfiguriert »eth0« unter Verwendung der Low-Level Systemtools »ifconfig« und »route«:

    ifconfig eth0 192.168.0.97 netmask 255.255.255.0 up
    route add default gateway 192.168.0.1
    Diese beiden Kommandos kennt man bereits, wenn man die Netzwerkschnittstelle mit der Hand im CLI konfiguriert.

Als Beispiel hier mal die komplette Datei eines jungfräulich installierten Linux Debian 6.0.5:

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

An dieser Stelle sollte noch angemerkt werden, dass »allow-hotplug« und »auto« das selbe bewirken. Ablesen kann man an dieser Datei nun, dass im System ein physikalisches Interface vorhanden ist bzw. konfiguriert wird (eth0) und dass es seine Einstellungen durch einen DHCP-Server bezieht.

BTW: Damit das System durch DHCP konfiguriert werden kann, muss das Paket »dhcp3-client« installiert sein!

Netzwerkkarte mit statischer IP Adresse konfigurieren

Wie aus dem og Beispiel schon ersichtlich wurde, wird eine statische IP Adresse wie folgt konfiguriert:

/etc/network/interface

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo eth0
iface lo inet loopback
 
# The primary network interface eth0
iface eth0 inet static
        address   192.168.167.200
        netmask   255.255.255.0
        network   192.168.167.0
        broadcast 192.168.167.255
        gateway   192.168.167.2
Weggelassen habe ich zudem den Eintrag »allow-hotplug eth0« und durch das Hinzufügen des Interfaces »eth0« in der Zeile »auto« ergänzt. Hier können zB auch weitere Interfaces angegeben werden. Die Zeile könnte durchaus auch so aussehen:

auto lo eth0 eth1 eth2
Zum Überprüfen ob die oz Einstellungen im System übernommen werden, starten Sie Ihr System neu und überprüfen die Einstellungen:
# ifconfig eth0
eth0      Link encap:Ethernet  Hardware Adresse 00:0c:29:23:7e:2e  
          inet Adresse:192.168.167.200  Bcast:192.168.167.255  Maske:255.255.255.0
          inet6-Adresse: fe80::20c:29ff:fe23:7e2e/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:79 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:8804 (8.5 KiB)  TX bytes:7755 (7.5 KiB)
          Interrupt:19 Basisadresse:0x2000

# netstat -r
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags   MSS Fenster irtt Iface
192.168.167.0   *               255.255.255.0   U         0 0          0 eth0
default         192.168.167.2   0.0.0.0         UG        0 0          0 eth0

DNS Server einstellen

Normalerweise wird die DNS-Server Adresse unter Linux in der Datei »/etc/resolv.conf«7) eingestellt. Dort befindet sich dann zB folgender Eintrag, wenn man als DNS Server zB die Adresse »192.168.167.2« verwenden möchte:

/etc/resolv.conf

domain localdomain
search localdomain
nameserver 192.168.167.2

Diesen Eintrag kann man auch über die »interfaces«-Konfigurationsdatei setzen. Dazu muss das Paket »resolvconf«8) installiert sein:

# aptitude install resolvconf
Dieses Paket erweitert aber nur den oben genannten Ablauf durch Aufruf der Low-Level Programme »ifconfig« und »route« um ein weiteres Low-level Programm »resolvconf«.

Danach können Sie einfach die Einträge »dns-nameservers <IP Adresse>«, sowie die »dns-search <Domain>« und »dns-domain <Domain>« zu Ihrer Konfiguration hinzufügen:

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo eth0
iface lo inet loopback
 
# The primary network interface eth0
iface eth0 inet static
        address   192.168.167.200
        netmask   255.255.255.0
        network   192.168.167.0
        broadcast 192.168.167.255
        gateway   192.168.167.2
 
# The dns-* options are implemented by the resolvconf package, if installed        
        dns-nameservers 192.168.167.2
        dns-search local
        dns-domain local.domain
In dieser Liste dürfen dann auch mehr DNS Server stehen, schreiben Sie diese mit einem Leerzeichen getrennt dahinter (zB: dns-nameservers 192.168.167.2 192.168.167.3). Die nun von »resolvconf« generierte Datei »/etc/resolv.conf« warnt nun schon eindringlich, dass diese Datei zukünftig nicht mehr mit der Hand editiert werden sollte:

/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.167.2
search local.domain local
An dieser Stelle dachte ich einen Bug gefunden zu haben, weil die seperate Angabe der DNS-Domäne und der DNS-Such-Domäne einfach abgekürzt »search local.domain local« angegeben. Die Geschichte wurde hier 9) kontrovers diskutiert und die Meinungen ob das ein Bug, schlecht dokumentiert oder schlicht so erwartet wird, gehen doch geringfügig auseinander.

Statische Route anlegen

Wenn Routen gebraucht werden, welche nicht durch das Default Gateway abgedeckt werden, können diese per Hand direkt mit dem »route add« Kommando angelegt werden:

# route add -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
Diese Variante funktioniert auch wunderbar aber leider nur bis zu einem Neustart, denn auch diese Einstellung bleibt nicht permanent. Sie können diese Einstellung aber auch durch die »/etc/network/interface« automatisch einstellen lassen. Erweitern Sie hierfür Ihre Konfiguration um die folgenden zwei Zeilen:

up route add -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
down route delete -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151

/etc/network/interface

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo eth0
iface lo inet loopback
 
# The primary network interface eth0
iface eth0 inet static
        address   192.168.167.200
        netmask   255.255.255.0
        network   192.168.167.0
        broadcast 192.168.167.255
        gateway   192.168.167.2
        ### own custom routes ###
        up route add -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
        down route delete -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
 
# The dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.167.2
        dns-search local
        dns-domain local.domain

Hier mal eine Beispielkonfiguration mit zwei Interfaces:

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback
 
# The primary network interface eth0
iface eth0 inet static
        address   192.168.167.200
        netmask   255.255.255.0
        network   192.168.167.0
        broadcast 192.168.167.255
        gateway   192.168.167.2
        ### own custom routes ###
        up route add -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
        down route delete -net 192.168.110.0 netmask 255.255.255.0 gw 192.168.167.151
 
# The primary network interface eth1
iface eth1 inet static
        address   192.168.180.200
        netmask   255.255.255.0
        network   192.168.180.0
        broadcast 192.168.180.255
 
 
# The dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.167.2
        dns-search local
        dns-domain local.domain
Beachten Sie hierbei die Ergänzung in der Zeile »auto« (erste Zeile) und beachten Sie auch dem zweiten Interface kein Gateway zuzuweisen. Bedenken Sie, es kann nur ein Standardgateway geben und das ist auch nur an genau ein Interface gebunden. Ihre Routingtabelle sieht dann wie folgt aus:
# netstat -r
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags   MSS Fenster irtt Iface
192.168.167.0   *               255.255.255.0   U         0 0          0 eth0
192.168.180.0   *               255.255.255.0   U         0 0          0 eth1
192.168.110.0   192.168.167.151 255.255.255.0   UG        0 0          0 eth0
default         192.168.167.2   0.0.0.0         UG        0 0          0 eth0

That's it - happy computing

pronto 2012/10/04 16:00

tux/interface.txt (16536 views) · Zuletzt geändert: 2013/05/25 12:28 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0