3.4. Erkunde deine aktuelle Konfiguration

Es kann überraschen, aber iproute2 ist bereits konfiguriert! Die aktuellen Befehle ifconfig und route benutzen bereits die erweiterten Systemaufrufe, aber meist mit sehr standardisierten (dh. langweiligen) Einstellungen.

Das ip-Tool ist von zentraler Bedeutung, und wir bitten es, unsere Schnittstellen für uns anzuzeigen.

3.4.1. ip zeigt uns unsere Links

[ahu@home ahu]$ ip link list
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
    link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
    link/ppp 

Die Ausgabe kann variieren, aber das wird auf meinem NAT-Router zu Hause angezeigt. Ich will damit sagen, nicht alle Teile der Ausgabe sind unmittelbar relevant.

Als erstes sehen wir das Loopback-Interface. Sollte dein Computer ohne diese Funktion sein, rate ich davon ab. Die MTU-Größe (Maximum Transfer Unit) ist 3924 Bytes, und ohne Warteschlange (Query). Das ist Sinnvoll, denn Loopback ist eine Pseudo-Schnittstelle des Kernels.

Die Dummy-Schnittstelle überspringe ich, sie ist nicht auf jedem Computer vorhanden. Dann gibt es noch meine zwei physischen Netzwerkschnittstellen, eines für mein Kabelmodem, das andere benutze ich für mein heimisches Ethernet-Segment. Außerdem sehen wir eine ppp0-Schnittstelle.

Wie du sicherlich bemerkt hast, fehlen IP-Adressen. iproute trennt vom Konzept her 'links' und 'IP-Adressen'.

Es zeigt uns die MAC-Adressen, die Hardwarekennung unserer Ethernetschnittstellen.

3.4.2. ip zeigt uns unsere IP-Adressen

[ahu@home ahu]$ ip address show        
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
    link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 scope global eth0
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
    link/ppp 
    inet 212.64.94.251 peer 212.64.94.1/32 scope global ppp0

Das beinhaltet mehr Informationen. Es zeigt alle deine Adressen und zu welcher Karte sie gehören. 'inet' steht für Internet (IPv4). Es gibt noch einige andere Adressen, aber die sollen uns jetzt nicht interessieren.

Betrachten wir eth0 etwas näher. Dort steht, dass es mit der inet-Adresse '10.0.0.1/8' zusammen hängt. Was ist damit gemeint? Die /8 stehen für Bits in der Netzwerkadresse. Insgesamt haben wir 32 Bit, bei /8 haben wir die verbleibenden 24 Bit für unser Netzwerk. Die ersten 8 Bit von 10.0.0.1 decken sich mit 10.0.0.0, das ist unsere Netzwerkadresse und unsere Netzwerkmaske ist 255.0.0.0.

Die anderen Bits sind mit der Schnittstelle verbunden, die 10.250.1.13 ist an eth0 ebenso direkt verfügbar, genau wie die 10.0.0.1 in unserem Beispiel.

Bei ppp0 wird das gleiche Konzept benutzt, nur die Zahlen sind anders. Es ist die Adresse 212.64.94.251 aber ohne Subnet-Maske. Hier haben wir eine Punkt-zu-Punkt-Verbindung und die Gegenseite kann jede Adresse haben, ausser 212.64.94.251. Da gibt es jedoch noch weitere Informationen. Sie besagen, dass auf der anderen Seite der Verbindung nur eine eine Adresse vorhanden ist. Die /32 sagen uns: keine Netzwerkbits vorhanden.

Es ist unabdingbar, dass du dieses Konzept verstehst. Wenn du Probleme haben solltest, schau in den oben im HOWTO genannten Dokumentationen nach.

Beachte auch 'qdisc', was für Queueing Discipline steht. Dies wird spä,ter lebenswichtig sein.

3.4.3. ip zeigt deine Routen

Nun wissen wir jetzt, wie man Adressen mit 10.xyz findet, und wir sind in der Lage, 212.64.94.1 zu erreichen. Das reicht nicht, wir benötigen Anweisungen, um die Welt zu erreichen. Das Internet steht über unsere PPP-Verbindung zur Verfügung, und 212.64.94.1 scheint bereit zu sein, unsere Pakete in die ganze Welt zu schicken, und auch Ergebnisse an uns zurück zu liefern.

[ahu@home ahu]$ ip route show
212.64.94.1 dev ppp0  proto kernel  scope link  src 212.64.94.251 
10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0.0.1 
127.0.0.0/8 dev lo  scope link 
default via 212.64.94.1 dev ppp0 

Das ist eigentlich selbsterklärend. Die ersten drei Zeilen der Ausgabe zeigen, was wir bereits durch ip address show wissen. In der letzten Zeile erfahren wir, dass die Welt über 212.64.94.1 unseren Standard-Gateway findet. An dem Wort 'via' sehen wir, dass es ein Gateway ist, außerdem sagt sie uns, wir müssen unsere Pakete nur an 212.64.94.1 senden und sie kümmert sich darum.

Zum Vergleich hier die Anzeige vom alten route-Befehl:

[ahu@home ahu]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use
Iface
212.64.94.1     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         212.64.94.1     0.0.0.0         UG    0      0        0 ppp0