Im Web gibt es viele Anleitungen, um auf Routern das vorinstallierte Linux-System anzupassen und zu erweitern. Es geht auch umgekehrt: Bauen Sie doch aus einem gewöhnlichen PC einen Router.
Auch wenn heute die günstigsten WLAN-Router keine 100 Euro mehr kosten, lohnt sich in manchen Fällen der klassische Linux-Weg, einen vollwertigen PC zu einem Router umzufunktionieren.Für diesen Artikel benutzten wir das Atom-Board D945GCLF von Intel mit Atom N230-Prozessor. Es kostet in diversen Online-Shops inzwischen unter 60 Euro. Als Hauptspeicher bauten wir einen DDR2-Riegel von Kingston mit 1 GByte RAM ein, Kostenpunkt 15 Euro. Damit der Rechner leise arbeitet, leisteten wir uns zusätzlich ein neues 300-Watt-Netzteil. Hier wurden wir bei Conrad fündig und kauften für rund 30 Euro das “Jou Jye Silent”. Die restlichen Komponenten stammen aus einem alten Debian-Rechner: Gehäuse, 40 GByte P-ATA-Festplatte und eine alte 3Com-Netzwerkkarte (Abbildung 1).

Abbildung 1: Das soll unser Router werden: Neue Hardware für rund 110 Euro in einem alten Desktop-Gehäuse mit P-ATA-Festplatte.
Das Mini-ITX-Mainboard von Intel lässt sich problemlos in jedem ATX-Gehäuse unterbringen. Die Löcher für die Verschraubung sind genormt, eine passende Blende für die externen Anschlüsse liegt dem Board bei. Ein ATX-Tower bietet zwei Vorteile: er kostet deutlich weniger als ein spezielles ITX-Gehäuse und bietet zudem reichlich Platz für einen späteren Plattenausbau. Das Intel-Board bootet problemlos von USB, so dass wir für die Installation auf ein CD-Laufwerk verzichten konnten. Bei einem älteren Mainboard benötigen Sie eventuell zusätzlich ein optisches Laufwerk.
Nachdem sämtliche Komponenten verbaut waren, blieb immer noch viel Platz im Gehäuse (Abbildung 2). Nutzt man als Systemplatte eine traditionelle ATA-Harddisk, lassen sich später ohne Reboot zusätzliche S-ATA-Platten einbauen, falls man den Router zusätzlich als Dateiserver nutzen möchte. Das Atom-Board bringt nur einen PCI-Steckplatz mit. Möchten Sie den nicht durch die Netzwerkkarte belegen, weichen Sie auf einen USB-Ethernet-Adapter aus.

Abbildung 2: Nach dem Einbau des Min-ITX-Boards bleibt noch reichlich Platz für zusätzliche Festplatten oder ein DVD-Laufwerk.
Die Software
Als Betriebssystem installierten wir die LTS-Version 8.04.2 von Ubuntu. Das Setup des Routings und eines DHCP-Servers verläuft aber unter den meisten Distributionen wie hier beschrieben. Zunächst gilt es, die einzelnen Netzwerkgeräte korrekt zuzuordnen und zu entscheiden, welches die Internetverbindung verwaltet und welches das interne Netz. Das Atom-Board bringt eine 100-MBit/s-NIC mit – möchten Sie Ihr Intranet mit einer Gigabit-Karte aufrüsten, nutzen Sie den Netzwerkadapter auf dem Mainboard als externe Schnittstelle und die zusätzliche Karte als interne Schnittstelle. Wir gehen im Folgenden davon aus, dass die Schnittstelle eth0 das interne Netz verwaltet, eth1 den Verkehr mit dem Internet.
Die erste Netzwerkkarte eth0 bekommt eine feste IP-Adresse, da über sie später ein DHCP-Server das interne Netz versorgen wird. Über eth1 stellen Sie eine Internetverbindung her. Für beides nutzen Sie entweder die grafischen Werkzeuge der Distribution oder erstellen von Hand eine entsprechende Konfigurationsdatei /etc/network/interfaces (Listing 1).
Starten Sie das Netzwerk nun mit /etc/init.d/networking restart neu, dann sollte die Ausgabe von /sbin/ifconfig für das Interface eth0 die statische Adresse 192.168.0.1 anzeigen, für eth1 die vom Provider per DHCP zugeteilte.
# /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.0 network 192.168.0.0 auto eth1 iface eth1 inet dhcp
DHCP-Server
Die Clients sollen per Switch mit dem Router verbunden werden. Um deren Setup zu erleichtern, soll der Router über eth0 einen DHCP-Serverdienst anbieten, der den Clients automatisch eine IP-Adresse zuteilt. Dazu installieren Sie unter Ubuntu zunächst das Paket dhcp3-server:
sudo apt-get install dhcp3-server
Anschließend öffnen Sie mit Admin-Rechten die Datei /etc/default/dhcp3-server und tragen als Interface eth0 ein:
INTERFACES="eth0"
Den eigentlichen DHCP-Server richten Sie über die Datei /etc/dhcp3/dhcpd.conf ein. Sie enthält an den meisten Stellen schon passende Einträge, vor denen Sie nur noch die Kommentarzeichen entfernen müssen. Für ein einfaches Setup mit maximal elf Clients scrollen Sie zum Eintrag # This is a very basic subnet declaration und fügen hier den in Listing 2 gezeigten Abschnitt ein. Die passenden Nameserver-Einträge des Providers fügt der DHCP-Server in der Regel automatisch ein. Falls nicht, müssen Sie das Listing um eine Zeile option domain-name-servers NS1 NS2; ergänzen. Die entsprechenden Nameserver-Einträge entnehmen Sie der Datei /etc/resolv.conf.
# This is a very basic subnet declaration.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.20;
option routers 192.168.0.1;
}
Starten Sie nun den DHCP-Server über den Befehl /etc/init.d/dhcp3-server restart neu. Hat alles geklappt, erhalten die per Switch angeschlossenen Client-Rechner automatisch eine IP-Adresse aus dem vorgegebenen Bereich, und in der Datei /etc/resolv.conf auf den Clients finden sich die gleichen Nameserver-Einträge wie auf dem Server.
IP-Weiterleitung
Hat das bisherige Setup geklappt, dann können Sie vom Client aus die IP-Adresse des Servers anpingen und zum Beispiel per SSH Dateien hin und her schieben (sofern das Paket openssh-server installiert ist). Allerdings bleibt den Clients der Zugang ins Internet versperrt, da der Kernel keine Anfragen vom internen auf das externe Netzwerk umleitet. Um dieses so genannte Port-Forwarding beziehungsweise NAT (“Network Address Translation”) einzuschalten, entfernen Sie in der Datei /etc/sysctl.conf das Rautezeichen vor den Einträgen net.ipv4.ip_forward=1 und net.ipv6.ip_forward=1 (falls IPv6 benötigt wird). Diese Änderung wirkt sich allerdings erst nach einem Neustart aus. Im laufenden Betrieb schalten Sie das IP-Forwarding über folgenden Befehl ein:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Hat alles geklappt, zeigt die Ausgabe des Befehls cat /proc/sys/net/ipv4/ip_forward eine Eins an.
Masquerading
Theoretisch würden jetzt Anfragen aus dem internen Netz bereits ins Internet weitergeleitet. Da der Adressbereich 192.168.0.0/32 allerdings für private Netze reserviert ist, werden Anfragen aus diesen Netzen nicht weitergeleitet. Als Lösung springt die im Kernel integrierte Firewall iptables ein. Mit zwei einfachen Regeln weisen Sie diese an, Pakete aus dem internen Netz mit der externen Adresse zu versehen und beim Empfang die zugehörigen Pakete wieder zum jeweiligen Rechner des Intranets weiterzuleiten. Diesen Vorgang nennt man Masquerading, weil der Kernel die internen Pakete quasi mit einer Maske der externen Schnittstelle versieht. Der erste Iptables-Befehl richtet dieses Masquerading ein:
# iptables --table nat --append POSTROUTING -o eth1 -j MASQUERADE
Falls Sie über eth1 eine DSL-Verbindung aufgebaut haben, dann müssen Sie hier -o eth1 durch -o ppp0 ersetzen. Der zweite Befehl sorgt dafür, dass die Pakete entsprechend weitergeleitet werden:
# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Auch in diesem Fall müssen Sie -o eth1 durch -o ppp0 ersetzen, falls der Rechner direkt mit einem DSL-Modem verbunden ist. Die Iptables-Regeln bleiben nach einem Reboot nicht erhalten, für ein dauerhaftes Masquerading bietet sich ein Eintrag in /etc/rc.local beziehungsweise /etc/boot.local an. Alternativ richten Sie das Masquerading über das grafische Tool Firestarter [1] ein. Nach diesen Einstellungen sollten die Clients problemlos über den Router eine Internetverbindung aufbauen können.
[1] Firestarter: Markus Nasarek, “Brandmelder”, LinuxUser 01/2007, S. 32, http://linux-community.de/artikel/11962






Hi Marcel,
was verbraucht der Router in der Konfiguration denn so ungefähr an Strom?
Zwischen 40 und 50 Watt. Ist nicht enorm stromsparend aber besser als ein 486-er :-)
Von dem Atom-Board hätte ich mir ja einen geringeren Stromverbrauch erwartet. Das liegt ja im Bereich den ich auch mit meinem Pentium Dual-Core mit Nvidia Chipsatzgrafik im Idle erreiche. Da bin ich unter Gnome bei ca. 48 Watt und kann zudem dank VDPAU auch problemlos HD Videos abspielen.
Die Desktop-Boards sind leider nicht so stromsparend wie die Netbook-Komponenten. Rund 20 Watt gehen auf Kosten der Chipsatzgrafik, die 3,.5-Zoll-Festplatte braucht auch 10 bis 12 Watt.
Es gibt aber jetzt mit dem D945GSEJT (endlich) auch ein Netbook-Bord, das dann im Leerlauf nur ca. 15 Watt verbraucht:
http://download.intel.com/support/motherboards/desktop/d945gsejt/sb/e62862001us.pdf
In der Tat ist das ein bei den Atom-Boards ein Problem (vgl. die aktuelle c’t 11/09). Dort geht es nur mit 26 bis 33 Watt Leerlaufleistung und wenn ich die gesparten Watt einrechne, dann habe ich bei 15 Watt Mehrverbrauch und den Münchner Strompreisen (20,9¢/kWh) in 5 Jahren den Preis für ein besser ausgestattetes Board (2 Netzwerkschnittstellen) und ein stromsparenderes Netzteil raus. Ein 300W-Netzteil läuft bei dieser Leistung mit einer Belastung unter 20% und da ist selbst bei 80plus-Netzteilen – das Jou Jye von Conrad (80 05 00-44) ist nicht als 80+ beworben – nur sehr schwer Energieffizienz zu erreichen.… Mehr »
Was mich derzeit noch an den Atom-Boards nervt, ist das Fehlen eines digitalen Videoausganges. Nun, für einen Router mag dies angehen, da kann auch ein alter CRT Verwendung finden, wenn er man ihn komplett ausschalten kann, aber als reiner Router ist mir ein Atom-Board doch ein wenig viel HW, sofern ich nicht mit den angebotenen Routern auskomme. Man kann sich dann auch bei den WRT/Freetz-Distris mal umschauen, sofern man Spezialfunktion braucht und seinen Router aufbohren will. Ich denke derzeit über einen PVR-Router-NAS-Kombi nach. Warum? NAS sind entweder stromsparend und schweinelahm (manchmal sogar beides) oder brauchen auch um die 30-40W Ruheleistung.… Mehr »