OpenBSD Network Howto
Netzwerkkonfiguration unter OpenBSD
Geschrieben von von Dobin Rutishauser (anthraxx@gmx.net) für www.computec.ch
Version 0.9, Juni 2000


0.0 Copyright and more

Dieser Text darf frei Kopiert, aber nicht verändert werden.
Copyright liegt bei Dobin Rutishauser.
Kommentare und aktive Beiträge zu diesem Dokument sind jederzeit willkommen.
Bitte senden sie Hinweise, Kommentare, Anregungen oder Berichtigungen zu anthraxx@gmx.net

1.0 Einführung

Dieses Howto soll dabei helfen, eine Netzwerkarte bzw ein Netzwerk mit OpenBSD zum laufen zu bringen. Es ist eigentlich für Linux Umsteiger gedacht, aber auch andere Unix Umsteiger werden (hoffentlich :) damit zurechtkommen.
Dieses Howto ist speziell für OpenBSD 2.6 geschrieben, ist aber auch für die meisten OpenBSD Versionen übertragbar. Das meiste lässt sich auch auf Free- oder sogar NetBSD übertragen.

2.0 Vorbereitung

Dieses Howto beschreibt, wie man eine Netwerkkarte in ein schon installiertes OpenBSD der i386 Architektur installiert und konfiguriert.
Hilfe zur Installtion von OpenBSD gibts auf www.openbsd.org

3.0 Ein Bisschen Theorie

BSD's verwalten Netzwerkarten anders als Linux. In Linux ist die erste Netzwerkkarte immer /dev/eth0, die zweite eth1 und so weiter.
Bei BSD's entsprechen die Devicenamen der Typenbezeichnung oder dem Hersteller der Netzwerkkarte. Das heisst, wenn sie zum Beispiel eine 3COM 3c9xx Netzwerkkarte haben, hat sie das Device /dev/xl0. Eine NE2000 kompatible PCI NIC wird mit /dev/ne0 angesprochen.
Das hat einige vorteile, mach es aber schwer zu erkennen, ob OpenBSD ihre Netzwerkkarte erkannt hat. Geben sie "dmesg | more" ein und durchsuchen sie die Ausgabe nach ihrer NIC. Meistens folgt sie nach der Erkennung der HD, wenn sie den Devicenamen gefunden haben, können wir zu Kapitel 4 gehen.

Wenn nicht, haben sie ein Problem :). Der Standardkernel nach der Installation von OpenBSD hat eigentlich alle Treiber für Netzwerkkarten aktiviert. Vergewissern sie sich, das die NIC richtig sitzt und probieren sie den Befehl

# dmesg | grep ".*:.*:.*"

aus. Dass sollte mindestens zwei Zeilen liefern, nämlich eine mit der Aktuellen Kernel Version und eine zweite mit ihrer Netzwerkkarte.

Siehe Anhang A für die Devices der unterstützen NIC's in OpenBSD 2.6.


4.0 Konfiguration der Netzwerkkarte

In meinem fall heist das Device "xl0", was ich im Rest dieses Textes auch verwenden werde. Ersetzen sie "xl0" einfach durch das Device ihrer NIC.

Um zu sehen, was alles für Netzwerkkarten in ihrem System erkannt wurden, geben sie

  # ifconfig -a 
ein. Bei mir ergibt das: (gekürzt)

  # ifconfig -a
  lo0: flags=8009
          inet 127.0.0.1 netmask 0xff000000
  lo1: flags=8008
  xl0: flags=8802 
          media: Ethernet 10baseT (10baseT half-duplex)
  #
xl0 ist wie sie sehen meine Netzwerkkarte, bis jetzt noch ohne IP und auf 10baseT eingestellt. Geben wir xl0 nun eine IP:

  # ifconfig xl0 192.168.1.1 netmask 255.255.255.0 up

Die Optionen für Ifconfig ersehen sie aus der man Page oder durch einfaches eingeben von "ifconfig". Bei uns sind die Optionen:

  # ifconfig DEVICE IP netmask NETMASK up

Wenn dies geklappt hat, pingen sie einen anderen Rechner aus ihrem Netzwerk an. Fals auch dies Erfolgreich war, können sie sich ein Bier, eine Milch oder wass sie gerne Trinken gönnen, sie haben eine lauffähige NIC in ihren OpenBSD System.

Fals nicht, liegt das warscheinlich an der Einstellung der Netzwerkkarte. Wie sie oben sehen ist meine 10/100Mbit NIC auf 10baseT, also 10 Mbit mit TP Kabeln gestellt. Was aber ist, wenn sie an einem 100Mbit HUB hängt, der 10Mbit nicht unterstützt? Als erstes müssen Sie sich also Erkundigen, mit welcher Geschwindigkeit und/oder in welcher Topologie ihr Netz läuft.
Danach können sie mit

  # ifconfig -m DEVICE 
die von der Netzwerkkarten unterstützen Modi ausgeben. Bei meiner NIC ergibt das:

  # ifconfig -m xl0
  xl0: flags=8843
          media: Ethernet 10baseT full-duplex
          status: active
          supported media:
                  media autoselect
                  media 100baseTX mediaopt full-duplex
                  media 100baseTX
                  media 10baseT mediaopt full-duplex
                  media 10baseT
                  media 100baseTX mediaopt loopback
          inet 192.168.1.20 netmask 0xffffff00 broadcast 192.168.1.255
  #
Wenn ich sie nun auf 100Mbit und full-duplex einstellen will, muss ich sie zuerst wieder abschalten:
  # ifconfig xl0 down 
Und dann mit den neuen Optionen wieder einschalten:
  # ifconfig xl0 192.168.1.20 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex
Wie sie sehen kann man die Optionen einfach übernehmen. "media" ist meistens der Medientyp, wie 10BaseT oder 10Base5, und mediaopt zustätzliche Optionen dazu, wie full- oder half duplex.

5.0 Eintragen in die Konfigurationsdateien

Nun haben sie eine Lauffähige Netzwerkkarte. Blos werden die Einstellungen beim nächsten booten wieder vorlorengehen, und sie müssten die Befehle von neuem Eingeben. Also sehen wir in diesem Kapitel an, wie sie ihre NIC schon beim Booten konfigurieren.

Eigentlich ist es ganz einfach. Wenn ihre NIC das Device xl0 hat, wird die Konfiguration in /etc/hostname.xl0 gespeichert. Bei ne1 hostname.ne1 und so weiter. Schauen wir mal eine solche Konfigurationsdatei an:

# cat /etc/hostname.xl0
inet 192.168.1.10 255.255.255.0 NONE media 100baseT mediaopt full-duplex 
# 
Wie sie sehen stehen in dieser Datei einfach alle Optionen für ifconfig, ohne "ifconfig" selber und mit einem NONE nach der Netmask.

6.0 Andere Netwerkkonfigurationsdateien

Hostname:

In der /etc/myname steht der Symbolische hostname, den man auch mit dem Befehl "hostname" ändern oder anzeigen lassen kann.
# cat /etc/myname 
firestarter
# 

Andere Hosts:

Wie bei dem meisten Unixen werden in der /etc/hosts die Hostnamen für andere Computer gespeichert:
# cat /etc/hosts
127.0.0.1    localhost
192.168.1.20 firestarter.swissnet.net firestarter
192.168.1.1  unreal.swissnet.net      unreal
# 

Default Gateway:

In /etc/mygate wird der default Gateway eingetragen (der gleiche Effekt hätte "route add default 192.168.1.10"):
# cat /etc/mygate
192.168.1.10
#  

Nameserver:

In /etc/resolv.conf werden die Nameserver eingetragen:
# cat /etc/resolv.conf
nameserver 212.40.0.10
nameserver 212.40.5.50
#

Andere Netzwerkdienste:

In /etc/rc.conf wird unter anderem Eingestellt, ob und welche Netwerkdienste (wie inetd, portmapper) gestartet werden sollen.


Startscript:

/etc/netstart ist ein Script, das während dem Booten lo0 (loopback device) und alle anderen NICs konfiguriert und startet, ein Blick hierrein ist immer Interesant.



Anhang A:

Aus /usr/src/sys/arch/i386/conf/GENERIC
# Networking devices
we0     at isa? port 0x280 iomem 0xd0000 irq 9  # WD/SMC 80x3 ethernet
we1     at isa? port 0x300 iomem 0xcc000 irq 10 #
we*     at isapnp?
ec0     at isa? port 0x250 iomem 0xd8000 irq 9  # 3C503 ethernet
ne0     at isa? port 0x240 irq 9                # NE[12]000 ethernet
ne1     at isa? port 0x300 irq 10               # NE[12]000 ethernet
ne2     at isa? port 0x280 irq 9                # NE[12]000 ethernet
ne*     at isapnp?                              # NE[12]000 PnP ethernet
eg0     at isa? port 0x310 irq 5                # 3C505/Etherlink+ ethernet
el0     at isa? port 0x300 irq 9                # 3C501 ethernet
ep0     at isa? port ? irq ?                    # 3C509 ethernet
ep*     at isapnp?                              # 3C509 PnP ethernet
ep*     at isa? port ? irq ?                    # 3C509 ethernet
ef*     at isapnp?                              # 3C515 PnP ethernet
ie0     at isa? port 0x360 iomem 0xd0000 irq 7  # StarLAN and 3C507
ie1     at isa? port 0x300 irq 10               # EtherExpress
le0     at isa? port 0x360 irq 15 drq 6         # IsoLan, NE2100, and DEPCA
ex0     at isa? port 0x320 irq 5                # Intel EtherExpress PRO/10
ep0     at eisa? slot ?
ep*     at eisa? slot ?                         # 3C579 ethernet
fea*    at eisa? slot ?                         # DEC DEFEA FDDI
lmc*    at pci? dev ? function ?                # Lan Media Corp SSI/T3/HSSI
le*     at pci? dev ? function ?                # PCnet-PCI based ethernet
le*     at isapnp?
de*     at pci? dev ? function ?                # DC21X4X-based ethernet
fxp*    at pci? dev ? function ?                # EtherExpress 10/100B ethernet
ne*     at pci? dev ? function ?                # NE2000-compat ethernet
ep0     at pci? dev ? function ?                # 3C59x ethernet
ep*     at pci? dev ? function ?                # 3C59x ethernet
ne*     at pcmcia? function ?                   # PCMCIA based NE2000 ethernet
ep*     at pcmcia? function ?                   # PCMCIA based 3C5xx ethernet
sm*     at pcmcia? function ?                   # PCMCIA based sm ethernet
xe*     at pcmcia? function ?                   # Xircom ethernet
wi*     at pcmcia? function ?                   # WaveLAN IEEE 802.11
fpa*    at pci? dev ? function ?                # DEC DEFPA FDDI
xl*     at pci? dev ? function ?                # 3c9xx ethernet
rl*     at pci? dev ? function ?                # RealTek 81[23]9 ethernet
tx*     at pci? dev ? function ?                # SMC 83C170 EPIC ethernet
tl*     at pci? dev ? function ?                # Compaq Thunderlan ethernet
mx*     at pci? dev ? function ?                # Macronix PMAC ethernet
vr*     at pci? dev ? function ?                # VIA Rhine ethernet
pn*     at pci? dev ? function ?                # Lite-On PNIC ethernet
wb*     at pci? dev ? function ?                # Winbond W89C840F ethernet
ti*     at pci? dev ? function ?                # Alteon Tigon 1Gb ethernet
ax*     at pci? dev ? function ?                # ASIX AX88140A ethernet
skc*    at pci? dev ? function ?                # SysKonnect GEnesis 984x
sk*     at skc?                                 #  each port of above