ifconfig

Ist das neue Unix erst mal aufgesetzt, will man natürlich gleich mal ins Netz. Die Setup Tools der meisten Distributionen fragen beim Installieren schon mal welche Art von Netzverbindung man hat und richten die Scripts die beim Starten des Rechners das Netzwerk konfigurieren sollen entsprechend ein. Falls einmal alles nicht ganz so glatt gehen, sollte man aber in der Lage sein, sein Netzwerk "händisch" einzurichten.

Die Befehle werden hier aus Linux-Sicht erklät. Bei anderen Unixen sind sie aber sehr ähnlich..

ifconfig

Ohne Parameter zeigt "ifconfig" die gerade konfigurierten Netzwerk "interfaces" an.
(alternativ:

netstat -ni

)

Ein Netzwerk "interface" ist dabei i.a. ein Hardwaregerät, das Netzwerkpakete senden und empfangen kann, z.B. eine Ethernet Karte. Linux nennt die erste Ethernet Karte "eth0" (freebsd: xl0). die zweite dann "eth1" usw..

ifconfig eth0

zeigt die Daten der ersten Netzwerkkarte. Das könnte z.B. so aussehen:

eth0 Link encap:Ethernet HWaddr 00:30:4F:0B:5C:75
inet addr:10.216.6.2 Bcast:10.216.6.31 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37311995 errors:0 dropped:0 overruns:0 frame:0
TX packets:57894277 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xe000


Obige Ausgabe besagt, dass auf dieser Netzwerkarte schon 57 millionen Pakete gesendet (TX) und 58 millionen empfangen (RX) wurden. Pakete werden mit einer maximalen Grösse (MTU) von 1500 bytes gesendet. Die "Hardwareaddresse" (auch MAC Adresse genannt) die jede Netzwerkarte in einem Netzwerk eindeutig identifiziert, wäre hier: 00:30:4F:0B:5C:75 )

Die eigene IP Adresse des Rechners: 10.216.6.2 die "netmask" von 255.255.255.224 besagt, dass auf diesem Netzwerkkabel maximal 32 Computer (genauer eigentlich maximal 30) hängen können mit den Adressen 10.216.6.1 bis 10.216.6.30 )

Ist die Karte noch nicht eingerichtet oder will man die Einstellungen ändern so kann man das mit dem "ifconfig" Befehl machen (VORSICHT: nicht remote ausprobieren, sondern nur wenn man vor dem Rechner sitzt auf dem man das macht. Sonst sägt man sich eventuell den Ast ab auf dem man sitzt):
z.B:

ifconfig eth0 10.22.33.44 netmask 255.255.255.0 broadcast 10.22.33.255

würde der Karte die IP Adresse 10.22.33.44 aus dem Netz 10.22.33.xxx zuweisen. (Die "broadcast" Adresse ist immer die letzte Adresse aus dem Netz). Die Netmask gibt an, wie gross dieses Netz ist (in diesem Fall ein ganzes "Class C" Netzwerk). Hier eine kurze Tabelle von Netmasken, der Anzahl der "bits" der IP Adresse die zum Netzwerk zählen und die Zahl der Adressen die im Netz sind:

CIDR netmask bits in netzadresse freie bits zahl der rechner
/32 255.255.255.255 32 0 2^0 = 1
/31 255.255.255.254 31 1 2^1 = 2
/30 255.255.255.252 30 2 2^2 = 4
/29 255.255.255.248 29 3 2^3 = 8
/28 255.255.255.240 28 4 2^4 = 16
/27 255.255.255.224 27 5 2^5 = 32
/26 255.255.255.192 26 6 2^6 = 64
/25 255.255.255.128 25 7 2^7 = 128
/24 255.255.255.0 24 8 2^8 = 256 (class C)
/23 255.255.254.0 23 9 2^9 = 512
....
    
/16
255.255.0.0 16 16 2^16 = 65536 (class B)
/8
255.0.0.0 \t 8 24 2^24 = 16777216 (class A)
Kennt man seine Netzadresse nicht, so erfragt man diese am besten bei seinem Netzwerkadministrator.

Der Computer erwartet alle Computer die im selben Netz sind, direkt auf diesem "interface" bzw dem damit verbunden Netzwerkkabel zu finden. Nach der Eingabe eines "ifconfig" Befehls sollte man daher all diese Rechner mit "ping" schon erreichen können. (nach dem:

ifconfig eth0 10.22.33.44 netmask 255.255.255.0 broadcast 10.22.33.255

Befehl sollte man also alle Computer Adressen von 10.22.33.1 bis 10.22.33.254 "pingen" können, sofern diese auf dem Netzwerksegment an dem unsere Netzwerkkarte angeschlossen ist existieren und eingeschalten sind. Pingt man die "broadcast" Adresse (in diesem falle 10.22.33.255 ) sollten alle Computer auf das "ping" antworten)

Funktioniert der "ifconfig" Befehl gar nicht und es kommt eine Fehlermeldung in der Art "device not found", so hat der Computer die Netzwerkarte nicht erkannt. In diesem Falle muss man entweder einen "modprobe" Befehl anwenden oder eventuell einen neuen Kernel Kompilieren.

Funktioniert "ping" nicht, dann sollte man kontrollieren ob die Adresse richtig ist und ob die Karte überhaupt Pakete aus dem Netz "sehen" kann. Man merkt das entweder in dem man erneut "ifconfig" aufruft und schaut ob sich der Wert der bei "RX packets:" (die Zahl der empfangen Pakete) steht von 0 weg erhöht hat. Oder man benutzt das "tcpdump" Kommando um direkt nachzusehen was sich auf diesem Netzwerkabel so tut:

tcpdump -ni eth0

zeigt alle Pakete an, die am "eth0" rausgehen oder reinkommen. Ist alles was man dort sieht ausgehende "arp" Pakete, die der eigene Rechner schickt, dann ist das Netzwerkabel nicht angesteckt oder falsch ausgekreuzt oder ein ähnliches Problem. I.a. haben die Netzwerkarten auf der Rückseite kleine LED anzeigen mit denen man sehen kann, ob die Karte richtig angesteckt ist. (Ist man remote via ssh eingelogt und man will den "tcpdump" Befehl benutzen, sollte man darauf achten, dass nicht die von "tcpdump" erzeugten Ausgaben neue Pakete produzieren die dann wieder neue Ausgaben produzieren die dann wieder neue Pakete produzieren... In diesem Falle empfiehlt sich
z.B.:

tcpdump -ni eth0 not port ssh

das zeigt die Pakete auf der ssh Verbindung nicht an)

Wo der Computer andere Rechner findet, die nicht direkt in diesem Netzwerk Segment liegen sagt man ihm mit dem "route" Befehl. "default route" ist der Router, der alle Pakete weiterleitet für die wir sonst keine Information haben. Im obigen Beispiel könnte das z.B.

route add default gw 10.22.33.1

sein. (Es ist eine verbreitete Konvention, dass der "gateway router " die erste ungerade Adresse aus dem Netz bekommt - muss aber nicht so sein)

"ifconfig" ist bei jeder Linux Distribution standardmässig dabei und erlaubt es die Einstellungen des Netzwerkinterfaces einzusehen und zu verändern. Zum Teil verwenden aber neuere Distributionen die Befehle:

"ifup" und "ifdown"

"ifup" und "ifdown" entnehmen die Einstellungen wie die Netzwerkinterfaces zu konfigurieren sind aus dem file /etc/network/interfaces.

Stehen dort die richtigen Werte für z.B. "eth0" drinnen, so kann man das "eth0" mit dem Befehl:

ifup eth0

in Betrieb nehmen und ebenso wieder entfernen:

ifdown eth0

Weiters erlaubt:

ifup -a

alle Einstellungen in /etc/network/interfaces

einzurichten.

In manchen Netzwerken läuft ein Server der Computern automatisch ihre IP Adresse zuteilen kann. Das nennt man dann "DHCP". Damit das im Linux funktioniert, kann man wahlweise eines der beiden Programme "pump" oder "dhcpcd" verwenden.

Befindet man sich auf einem DHCP-Netzwerk so führt die Eingabe von z.B:

pump

dazu, dass man eine Adresse zugewiesen bekommt. (Die kann man danach - dauert i.a. ein paar Sekunden - mit dem "ifconfig" Befehl wieder ganz normal ansehen.)


EXERCISES: * Sieh dir mit "ifconfig" und "netstat -ni" die Konfiguration deiner Netzwerkarte an.

* Schau dir die Ausgabe von "tcpdump -ni" an. (Vieles da wird noch verwirrend sein aber das macht momentan nichts..)

* Versuche (NUR IN ABSPRACHE MIT DEINEM NETZWERK ADMINISTRATOR!) dir eine andere NetzwerkAdresse zu geben. (Wenn du zwei private Rechner hast hänge die Rechner direkt über ein ausgekreuztes Kabel oder einen kleinen HUB zusammen und konfiguriere einen auf die IP-Adresse 192.168.123.1 und den anderen auf 192.168.123.2 und schau ob du die Computer gegenseitig "pingen" kannst)

* Informiere dich wo deine Distribution ihre Netzwerk Einstellungen speichert die beim Starten geladen werden (Debian: /etc/network/interfaces ).

* Dein Netzwerkadmin sagt dir, du seist auf einem /27 Netzwerk. Was bedeutet das? Wie lautet die "netmask" dazu? Wieviele Computer haben in diesem Netzwerksegment maximal Platz?

* Welche "netmask" hat ein "class C" Netz?

* Dein Netzwerkadmin sagt dir, dass die IP-Adressen per DHCP vergeben werden. Mit welchen Programmen bekommst du diese Adresse?

* Mit welchem Befehl setzte du den "default gateway" ?


REFERENCES:

man ifconfig

ifconfig --help

man ifup

man interfaces

man route

man netstat