Netzwerk Konfiguration

Ein Netzwerkinterface konfigurieren

Netzwerkinterfaces heißen unter OpenBSD so wie ihr Treiber plus einer Nummer dahinter die die Anzahl der entsprechenden Netzwerkinterfaces hochzählt und mit 0 beginnt. Beispielsweise heißt der Treiber für Realtek 8139 Netzwerkkarten rl. Die erste Realtek-Netzwerkkarte heißt daher rl0. Die erste Intel Pro 100 Netzwerkkarte im System heißt fxp0 und eine zweite 3com-Karte würde z. B. xl1 heißen. Eine einheitliche Bezeichnung für alle Netzwerkkarten, wie eth unter Linux, gibt es also unter OpenBSD nicht.

Die Namen einiger weit verbreiteter Netzwerkchips unter OpenBSD:

Unter OpenBSD besitzt jeder Treiber auch eine eigene Manpage, daher kann man auch zu jedem Netzwerkkartentreiber eine Manpage mit näheren Informationen aufrufen, z. B.: man fxp.

Ein Netzwerkinterface läßt sich mit dem Befehl ifconfig konfigurieren:

ifconfig fxp0 up 192.168.5.12

In diesem Beispiel wird die Netzwerkkarte fxp0 aktiviert (up) und die IPv4 Adresse 192.168.5.12 zugewiesen. OpenBSD ist bereits seit längerem in der Lage neben IPv4 auch IPv6 zu benutzen. Bei der Zuweisung einer Adresse zu einer Netzwerkkarte, wird das verwendete Adressformat automatisch erkannt.

Benutzt man den Befehl ifconfig ohne weitere Parameter wird der Status aller Netzwerkkarten angezeigt:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33204
        priority: 0
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:40:f4:3c:aa:3a
        priority: 0
        groups: egress
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 192.168.3.10 netmask 0xffffff00 broadcast 192.168.3.255
        inet6 fe80::240:f4ff:fe3c:aa3a%rl0 prefixlen 64 scopeid 0x1
enc0: flags=0<> mtu 1536
        priority: 0

Wie man sieht hat dieser Rechner eine Realtek-Netzwerkkarte. Außerdem ist das Loopbackinterface konfiguriert (was jeder OpenBSD Rechner automatisch immer macht) und das Interface enc0 welches ein virtuelles Interface für IPSec-Pakete ist (enc = encryption).

Sieht man sich die zu rl0 gehörenden Zeilen der Ausgabe näher an, erkennt man in der ersten Zeile einige Flags, wie etwa UP dafür, daß die Netzwerkkarte aktiv ist, sowie der MTU-Wert. In der zweiten Zeile findet sich die MAC-Adresse der Netzwerkkarte (lladdr = link layer address).

In der fünften Zeile (media:) findet sich die verwendete Ethernet-Art (hier z. B. 100BaseTX full-duplex). Wie man an Ethernet autoselect sieht, wurde dies anhand von Kabel und Gegenseite automatisch so festgelegt. Der verwendete Ethernet-Typ kann auch manuell festgelegt werden, was im Normalfall jedoch nie nötig ist.

Die letzten beiden Zeilen geben die IP-Konfiguration des Interfaces an, zuerst die IPv4 Konfiguration mit IP-Adresse, Netzwerkmaske und Broadcastadresse. In der Zeile danach die IPv6 Konfiguration mit IPv6-Adresse und Präfixlänge (hier 64).

Fast alle angezeigten Werte lassen sich mit dem ifconfig Kommando auch verändern. Die Syntax von ifconfig ist immer:

ifconfig (Interfacename) (Optionen)

Sämtliche Optionen lassen sich in der Manpage nachlesen. Hier 5 Beispiele:

ifconfig rl0 inet 192.168.4.120 netmask 255.255.255.0
ifconfig em0 up
ifconfig em0 down
ifconfig xl0 lladdr 0e:43:f4:3c:ab:6b
ifconfig fxp0 alias 192.168.4.121

Im ersten Beispiel wird das Interface rl0 mit der IP-Adresse 192.168.4.120 und der Netzwerkmaske 255.255.255.0 konfiguriert. Im zweiten Beispiel wird die Netzwerkkarte em0 aktiviert. Im dritten Beispiel wird em0 wieder deaktiviert. Im vierten Beispiel bekommt die Netzwerkkarte xl0 temporär die neue MAC-Adresse 0e:43:f4:3c:ab:6b. Im letzten Beispiel bekommt die Netzwerkkarte fxp0 die zusätzliche IP-Adresse 192.168.4.121 zugewiesen. Mit alias lassen sich mehrere IP-Adressen an eine Netzwerkkarte binden.

DHCP

Möchte man DHCP zur Konfiguration des Netzwerkinterfaces verwenden, gibt es unter OpenBSD den Befehl dhclient:

dhclient xl0

Dieser Befehl wird eine DHCP-Client-Anfrage über das Netzwerkinterface xl0 ins Lan schicken und entsprechende Antworten für die Konfiguration nutzen.

Wlan

Im Gegensatz zu Linux lassen sich bei OpenBSD mit dem Kommando ifconfig wirklich alle Aspekte von Netzwerkkarten steuern, also auch Wlan-spezifische Konfigurationen. Einige von OpenBSD unterstützte Wlantreiber sind:

Mit ifconfig läßt sich auch ein Wlanscan durchführen:

ifconfig ral0 scan

Als Ergebnis erhält man eine Liste aller in der Nähe befindlichen verfügbaren Wlans. Möchte man die SSID der Wlankarte auf einem bestimmten Wert setzen, kann man folgenden Befehl verwenden:

ifconfig iwi0 nwid myessid

Dieser Befehl setzt die SSID der Wlankarte iwi0 auf myessid. Die SSID ist eine Art Identifizierer für die Netzwerkzugehörigkeit zu einem Wlan mit diesem Namen.

Auch die Wlanverschlüsselung läßt sich mit ifconfig konfigurieren. Für eine WPA-Verschlüsselung mit Preshared Keys gibt es die beiden Parameter wpa und wpapsk:

ifconfig ral0 nwid mynet wpa wpapsk `wpa-psk mynet geheimpass`

In diesem Beispiel wird die Wlankarte ral0 für das Wlan mit der SSID mynet konfiguriert. Mit wpa wird die WPA-Verschlüsselung eingeschaltet. Mit wpapsk wird der Preshared Key angegeben. Hierbei wird ein Unterkommando angegeben, da der Preshared Key aus der jeweiligen SSID und der eigentlichen Passphrase errechnet wird. Für diese Berechnung gab es bis OpenBSD 4.8 das Hilfstool wpa-psk. Das Kommando wpa-psk erwartet zuerst die SSID und dann die Passphrase. Heraus kommt dann eine recht lange Zahlenkolonne, welche für die Option wpapsk innerhalb von ifconfig angegeben werden muß. In diesem Beispiel wurde der Befehl einfach als Unterbefehl in Backticks (``) gesetzt, wodurch das Ergebnis des Befehls direkt an diese Stelle eingesetzt wird.

Seit OpenBSD 4.9 funktioniert die Erzeugung eines WPA Schlüssels direkt mit dem ifconfig Aufruf, so daß das Hilfstool wpa-psk nicht mehr benutzt wird und aus OpenBSD entfernt wurde. Obiger Aufruf sieht seit OpenBSD 4.9 daher so aus:

ifconfig ral0 nwid mynet wpa wpakey geheimpass

Die Option wpapsk wurde aus ifconfig in OpenBSD 4.9 entfernt und dafür wpakey eingeführt. Wird eine Passphrase mit wpakey angegeben, muß zwingend im gleichen Aufruf auch der Parameter nwid mit der SSID angegeben werden.

Die Konfiguration dauerhaft machen

Die Wirkung des Befehls ifconfig ist nach einem Reboot vorbei. ifconfig ist nur für kurzzeitige temporäre Konfigurationen geeignet. Möchte man unter OpenBSD seine Netzwerkkonfiguration dauerhaft einrichten, gibt es dafür entsprechende Dateien unter /etc. Für jedes Netzwerkinterface, das beim booten automatisch konfiguriert werden soll, wird in /etc einfach eine hostname.if-Datei angelegt, wobei die Endung if das jeweilige Netzwerkinterface bezeichnet, also z. B. /etc/hostname.rl0 für die erste Realtek-Netzwerkkarte.

Der Inhalt dieser Datei besteht im wesentlichen aus den gleichen Optionen, die auch beim ifconfig Kommando benutzt werden. Eine statische Adresskonfiguration in dieser Datei würde z. B. so aussehen:

inet 172.17.25.3 255.255.0.0

Wenn diese Beispielzeile der Inhalt der Datei /etc/hostname.rl0 ist, würde beim booten die Netzwerkkarte rl0 mit der statischen Adresse 172.17.25.3 und der Netzwerkmaske 255.255.0.0 versehen.

Für eine Aliasadresse wird eine zweite Zeile hinzu gefügt, welche mit inet alias beginnt. Ein Beispiel, welches einer Netzwerkkarte sowohl die Adresse 192.168.0.11, als auch zusätzlich 192.168.0.12 zuweist:

inet 192.168.0.11 255.255.255.0
inet alias 192.168.0.12 255.255.255.255

Für eine zusätzliche Aliasadresse muß immer die Netzwerkmaske 255.255.255.255 angegeben werden.

Für eine Konfiguration per DHCP genügt das Wort dhcp in der hostname.if:

dhcp

Möchte man ein Interface beim starten zwar aktivieren, aber keine Adresse zuweisen kann man in die hostname.if auch einfach up schreiben:

up

Dies aktiviert zwar das Interface beim booten, weist aber keine weitere Konfiguration zu, was z. B. praktisch für an DSL-Modems angeschlossene Netzwerkkarten sein kann.

Für Wlankarten können einige zusätzliche Optionen angegeben werden. Die zusätzlichen Optionen entsprechen den Wlan-Optionen des ifconfig Kommandos. Ein Beispiel für eine Wlankarte die per DHCP konfiguriert werden soll, den WPA Schlüssel "g3h31mpa55" und die SSID mynet verwenden soll.

dhcp nwid mynet wpa wpakey g3h31mpa55

Dieses Beispiel funktioniert ab OpenBSD 4.9. Bis OpenBSD 4.8 mußte die Passphrase für WPA mit dem Hilfstool wpa-psk erzeugt werden.

Auch die hostname.if-Datei hat eine Manpage in der man Details nachlesen kann.

DNS und Routing

Neben der IP-Konfiguration der Netzwerkkarte benötigt man auch eine Konfiguration der DNS-Server die das System verwenden soll, sowie ein Standardgateway. Die DNS-Server gibt man in der Datei /etc/resolv.conf an. Die Datei kann z. B. so aussehen:

nameserver 192.168.0.20
nameserver 192.168.0.1
search mylan

In diesem Fall sollen die beiden DNS-Server mit den IP-Adressen 192.168.0.20 und 192.168.0.1 verwendet werden. Bei Hostnamen ohne Domainteil, wird außerdem immer die Domäne .mylan angehängt.

Diese Konfiguration kann man direkt so in die Datei /etc/resolv.conf eintragen. Sollte jedoch eine Netzwerkkonfiguration per DHCP verwendet werden, wird die /etc/resolv.conf vom DHCP-Client mit einer eventuell über DHCP empfangenen DNS-Konfiguration überschrieben.

Für das Routing existiert der Befehl route. Die Syntax des OpenBSD-Befehls route ist ein bisschen anders als bei Linux.

Möchte man sich die momentane Routingkonfiguration ansehen benutzt man folgenden Befehl:

route show

oder besser, da schneller:

route -n show

Das -n bewirkt, das zu Adressen der DNS-Name über DNS-Abfragen nicht ermittelt wird, was die Abfrage deutlich schneller macht. Ein einfaches route alleine (wie bei Linux) funktioniert unter OpenBSD nicht.

Die Grundsätzliche Syntax von route lautet:

route (Kommando) (Modifier)

Wobei Kommando add, delete, change, flush, get, monitor und show sein kann.

Mit route add werden Routen hinzugefügt. Soll beispielsweise die Standardroute hinzugefügt werden, kann dies so aussehen:

route add default 192.168.0.1

Mit diesem Kommando wird die Standardroute auf den Router 192.168.0.1 gesetzt. Das Wort "default" steht immer für die Standardroute. Weitere statische Routen lassen sich genauso anlegen:

route add 192.168.3.0/24 192.168.0.11

Dieses Kommando legt eine neue statische Route für das Zielnetzwerk 192.168.3.0/24 fest. Als Router soll für dieses Zielnetz 192.168.0.11 verwendet werden.

Mit route delete werden Routen wieder gelöscht:

route delete 192.168.3.0/24

Dieses Kommando löscht die vorher definierte statische Route wieder.

Möchte man alle Routen auf einmal löschen, benutzt man route flush.

Da alle mit route definierten Routen einen Reboot nicht überleben, benötigt man zum setzen des Standardgateways eine Konfigurationsdatei. Diese Konfigurationsdatei ist unter OpenBSD /etc/mygate. In diese Datei wird die IP-Adresse des Standardgateways eingetragen. Für eine IPv4 und IPv6 Konfiguration, können dabei 2 Zeilen in der Datei verwendet werden.

Netzwerkanalyse

OpenBSD bringt für die Netzwerkanalyse bereits einige Werkzeuge im Basissystem mit. Mit dem Kommando netstat lassen sich Netzwerkverbindungen anzeigen:

netstat -nf inet

Dieses Kommando zeigt alle aktiven IPv4-Verbindungen die der Rechner momentan aufgebaut hat an. Dabei steht der Parameter -n dafür keine Namensauflösung zu machen und -f gibt die Adressfamilie (inet = IPv4) an.

Möchte man alle TCP-Verbindungen anzeigen kann man folgendes Kommando verwenden:

netstat -np tcp

In diesem Fall steht der Parameter -p für das Protokoll das angezeigt werden soll, also TCP oder UDP.

Möchte man sich auch lauschende Netzwerkports anzeigen lassen, also Ports die zwar geöffnet sind und auf Verbindungsanfragen warten, aber momentan keine Verbindung aufgebaut haben, gibt es den Parameter -a:

netstat -naf inet

Habe ich mit netstat eine unerwünschte oder hängende TCP-Verbindung entdeckt, kann ich diese mit dem Befehl tcpdrop beenden:

tcpdrop 192.168.0.50 5607 192.168.3.10 21

Dieser Befehl beendet eine TCP-Verbindung von der lokalen Adresse 192.168.0.50, Quellport 5607 zum Port 21 auf dem Server 192.168.3.10.

OpenBSD enthält außerdem ein einfaches Netzwerkbenchmarktool namens tcpbench. Mit diesem Tool kann zur Messung der Netzwerkperformance zwischen 2 OpenBSD-Rechnern eine Verbindung aufgebaut werden. Dabei übernimmt einer der beiden Rechner den Serverpart und der andere den Client. Auf dem Server benutzt man zunächst folgenden Befehl:

tcpbench -s

Der Parameter -s versetzt tcpbench in den Servermodus. Auf dem Client benutzt man folgendes Kommando:

tcpbench servername

Wobei "servername" der Hostname oder die IP-Adresse des Servers sein muß. Man erhält dann eine Performancemessung des Netzwerkverkehrs mit einfachen TCP-Paketen zwischen beiden Rechnern. Der Test läßt sich jederzeit mit Ctrl-C abbrechen. Im Normalfall verwendet tcpbench die Portnummer 12345. Möchte man einen anderen Port verwenden kann man diesen mit dem Parameter -p angeben.

tcpbench ist ebenso wie tcpdrop ein OpenBSD spezifisches Programm, daß noch nicht sehr lange in OpenBSD enthalten ist.

Das OpenBSD Basissystem verfügt zur tieferen Netzwerkanalyse, bzw. zur genaueren Analyse von Netzwerkpaketen auch über das Snifferprogramm tcpdump. Eine Einführung in dieses sehr mächtige Tool, würde jedoch den Rahmen dieses Artikels sprengen. Weitere Tools, wie etwa der Portscanner nmap lassen sich per Package oder über das Portssystem installieren.


René Maroufi, dozent (at) maruweb.de
Creative Commons By ND