Montag, 16. März 2009

pfSense als VDSL-Router

Sebastian Piecha, Dusan Zivadinovic

pfSense als VDSL-Router

PC zum High-Speed-Router aufrüsten

Auch ein PC kann die Aufgabe des DSL-Routers übernehmen. Das bietet sich besonders dann an, wenn hohe Router-Leistung und komfortable Verwaltung gefragt sind. Eine im Verborgenen blühende Variante stellt pfSense dar, eine Router-Software auf Unix-Basis, die sich von einer Live-CD betreiben und installieren lässt.

Die frei erhältliche Router-Software pfSense[1] gründet auf dem Unix-Betriebssystem FreeBSD[2]. Die Entwickler stellen die aktuelle Version 1.2 in Form einer rund 60 MByte großen Image-Datei zum Download zur Verfügung, mit der sich eine Live-CD brennen lässt.

Die Software kommt schon mit einen Pentium-PC mit 100-MHz-CPU, 128 MByte RAM und zwei Fast-Ethernet-Anschlüssen aus. Attraktiv erscheint pfSense aber vor allem, weil die Software die Rechenleistung aktueller PCs für anspruchsvolle Netzwerkaufgaben ausreizen kann. Das prädestiniert sie für den Betrieb an Hochgeschwindigkeitsanschlüssen wie VDSL, die in Empfangsrichtung bis zu 50 MBit/s anliefern können. Für VDSL-Zwecke sollte es mindestens ein Pentium III mit 700 MHz und 256 MB RAM sein. Empfehlenswert ist allerdings eine Gigahertz-Maschine; das dürfte laut den Entwicklern für 50 bis 200 MBit/s Durchsatz genügen.

Anders als mit ursprünglich von der Telekom ausgelieferten VDSL-Routern lässt sich mit einem solchen pfSense-Router die maximale Datenrate von 50 MBit/s schnellen Anschlüssen ausschöpfen. Telekom-Router der ersten und zweiten Generation befördern lediglich bis zu 35 MBit/s.

Zu beachten ist jedoch, dass pfSense derzeit das für die IP-TV-Steuerung erforderliche Protokoll IGMP nicht unterstützt. Das zugrunde liegende FreeBSD beherrscht IGMP zwar, aber der mit pfSense gelieferte Kernel wurde ohne IGMP-Support kompiliert. So muss man also für den IP-TV-Betrieb den Telekom-Router weiterhin bereithalten. Wie man die LAN-Infrastruktur geschickterweise für diesen wechselweisen Betrieb einrichtet, beschreibt ein ausführlicher Beitrag in c't 22/08[3] ab Seite 194. Dort sind auch andere Alternativen aufgeführt, mit denen sich ein für VDSL konzipierter, aber zu langsamer Telekom-Router ersetzen lässt.

Bei der pfSense-Einrichtung gehen wir von einem PC aus, der an einem VDSL-Anschluss der Telekom betrieben werden soll und eine mindestens 1 GByte große Festplatte hat, die pfSense komplett benutzen darf (alternativ lässt sich pfSense auch auf einem Flash-Drive einrichten). Für den VDSL-Betrieb wird pfSense so eingerichtet, dass es seine PPPoE-Pakete gemäß der IEEE-Norm 802.1q mit VLAN-Tags verschickt. VLAN[4] ist eine Technik, mit der sich auf einem physischen Netzwerk mehrere virtuelle LANs betreiben lassen, um zum Beispiel Arbeitsgruppen voneinander trennen zu können. Jedes VLAN hat seine eigene VLAN-ID (bis zu 4094 verschiedene sind spezifiziert) und die Telekom verlangt für die Einwahl über ihr VDSL-Modem die ID 7.

Wir gehen von einem PC aus, der mit zwei Netzwerkanschlüssen ausgerüstet ist, obgleich pfSense im Zusammenspiel mit einem VLAN-fähigen Switch auch mit einer einzigen Netzwerkkarte als Router eingerichtet werden könnte; das würde jedoch die Kosten deutlich erhöhen. In einer einfachen Konfiguration vermittelt dem Router einer der beiden Netzwerkanschlüsse den Anschluss zum internen LAN über einen preiswerten nicht managebaren Switch (gibt es in Gigabit-Ausführung mit acht Ports bereits ab rund 30 Euro, VLAN-fähige Switches gibt es ab rund 100 Euro mehr). Am anderen Netzwerkanschluss ist das VDSL-Modem Speedport 300HS von der Telekom angeschlossen.


Installation

Stellen Sie im PC-BIOS sicher, dass der PC von einer CD booten kann und schalten Sie ihn anschließend bei eingelegter Live-CD ein. Nach einigen Sekunden präsentiert das System ein erstes Menü (Welcome to FreeBSD). Wählen Sie die erste Option (Boot FreeBSD [default]).

Gegen Ende des Bootvorgangs führt pfSense die bei der Geräteerkennung gefundenen Netzwerkkarten nebst Schnittstellen auf. Notieren Sie die Bezeichnungen und ordnen Sie die LAN- und WAN-Schnittstelle zunächst auf Papier zu; die tatsächliche Zuordnung übernimmt pfSense später selbstständig anhand Ihrer Vorgaben.

Verneinen Sie die Frage nach Einrichtung des VLAN an dieser Stelle – es ist sinnvoller für den VDSL-Betrieb, diesen Schritt später zu erledigen. Beachten Sie, dass beim ersten Startvorgang die englische Tastaturbelegung gilt, also "Z" und "Y" vertauscht sind.

Lassen Sie nun pfSense selbständig erkennen, welches Netzwerkinterface als LAN- und welches als WAN-Port verwendet werden soll. Ziehen Sie dafür die Netzwerkkabel zunächst ab (link state changed to down) und drücken dann die Taste "a". Stecken Sie nun das Kabel für das LAN-Interface ein, stellen Sie sicher, dass der Anschluss elektrisch versorgt ist (am anderen Ende ist ein eingeschalteter Switch oder PC angeschlossen) und drücken Sie die Eingabe-Taste. Wiederholen Sie den Vorgang bei eingeschaltetem und verbundenem VDSL-Modem für die WAN-Schnittstelle. Wenn die Zuordnungen der Schnittstellen korrekt sind, fahren Sie fort; alternativ ordnen Sie die Ports manuell zu.

Nun ist der Router bereits gestartet, sodass man ihn im Prinzip schon nutzen könnte – beispielsweise für die Internet-Einwahl über einen einfachen ADSL-Anschluss, für den keine VDSL-Konfiguration erforderlich ist. Er ist LAN-seitig über die IP-Adresse 192.168.1.1 zugänglich (Passwort lautet "pfsense").

Praktischer ist eine vollständige Installation auf einem Speichermedium. Wählen Sie dafür die Menü-Option "99" aus und stellen Sie anschließend die korrekte Tastaturbelegung ein (in der Regel "german.iso.kbd").

Fahren Sie fort über die Menübefehle "Accept these settings" und "Install pfSense". Wählen Sie das Speichermedium aus, auf dem pfSense eingerichtet werden soll. Lassen Sie das Medium formatieren – aber beachten Sie, dass alle zuvor angelegten Daten dabei verloren gehen ("Use this Geometry", "Format da0"). Anschließend leitet Sie der Installer durch die Partitionierung. Stellen Sie dabei sicher, dass wenigstens zwei Partitionen angelegt werden und eine Subpartition mindestens 244 MByte groß ist.

Anschließend wird das System auf dem gewählten Medium eingerichtet, was je nach Leistung des PCs einige bis viele Minuten dauern kann. Stellen Sie für den Kernel die Anzahl der PC-Prozessoren ein (in der Regel genügt die Vorauswahl "Uniprocessor kernel") und lassen Sie den Boot-Block schreiben. Anschließend startet der PC neu. Damit er beim Boot-Vorgang auf die Festplatte zurückgreift, entfernen Sie die CD aus dem Laufwerk.

Grund-Konfiguration

Der Router ist nun sowohl über die Konsole erreichbar (über den Eintrag "pfSense console setup" lässt sich zum Beispiel der LAN-IP-Adressraum ändern), als auch über ein Web-Interface. Dafür koppeln Sie eine LAN-Station an den pfSense-Router an, wahlweise direkt am LAN-Interface oder falls eingerichtet am Switch. Stellen Sie den Client-PC auf DHCP-Betrieb ein und steuern Sie mit einem Browser die Router-Adresse an (192.168.1.1 in der Werkseinstellung). Im Authentifizierungsdialog tragen Sie als Benutzernamen "admin" und als Passwort "pfsense" ein. Der Setup-Wizard startet. Viele der Grundeinstellungen lassen sich in pfSense auch nachträglich mit wenig Aufwand ändern, beispielsweise Protokoll und Portnummer für den lokalen Zugriff auf das Web-Interface.
Viele der Grundeinstellungen lassen sich in pfSense auch nachträglich mit wenig Aufwand ändern, beispielsweise Protokoll und Portnummer für den lokalen Zugriff auf das Web-Interface. Vergrößern

Über den Wizard lassen sich grundlegende Einstellungen eintragen (Hostname, NTP, Zugangsdaten für den Internet-Provider, etc.). Tragen Sie einen Hostnamen und eine Domain für pfSense ein, lassen Sie aber die DNS-Felder leer; die DNS-Adressen holt sich der Router automatisch bei der Internet-Anmeldung vom PPPoE-Server des Providers. Auf der nächsten Seite tragen Sie die Zeitzone ein (z. B. Europe/Berlin), die Adresse des Time-Servers bleibt unverändert.

Lassen Sie die komplette Seite für die WAN-Konfiguration zunächst leer; bevor die Einträge funktionieren können, muss überhaupt das WAN-Interface für VDSL eingerichtet werden. Auf der nächsten Seite lässt sich der IP-Adressraum des LAN-Ports an persönliche Bedürfnisse anpassen; wenn Sie ihn ändern, müssen Sie den Client zwei Schritte später dazu bringen, sich vom Router eine neue Adresse zu holen. Auf der letzten Seite tragen Sie Ihr neues Passwort für den Zugang zum Web-Interface ein und veranlassen den Router, die neuen Einstellungen einzulesen (reload). Wenn Sie den LAN-IP-Adressraum geändert haben, lassen Sie jetzt den Client eine neue DHCP-Anfrage starten. Unter Windows dienen dazu die Befehle

ipconfig /release
ipconfig /renew

Je nach Distribution leisten die Linux-Programme pump, dhclient oder dhcpcd dasselbe. Wer sich nicht mit der Kommandozeile herumärgern möchte, startet einfach den Client neu. Nach den grundlegenden Einrichtungsschritten liefert pfSense bei der Wiederanmeldung die Seite "Sytem Overview" mit einigen Statusangaben. Interessant sind zum Beispiel die CPU- und Memory-Auslastung.
Nach den grundlegenden Einrichtungsschritten liefert pfSense bei der Wiederanmeldung die Seite "Sytem Overview" mit einigen Statusangaben. Interessant sind zum Beispiel die CPU- und Memory-Auslastung. Vergrößern


VLAN für VDSL

Geben Sie bei der Wiederanmeldung das neue Administratorpasswort ein; pfSense meldet sich nun mit der Seite "System Overview", die Statistiken über CPU- oder auch Speicherauslastung aufführt. Öffnen Sie dann das Menü "Interfaces" und klicken Sie auf den Befehl "Assign". Merken Sie sich, welche Bezeichnung das WAN-Interface hat (z. B. le0) und wechseln Sie zum Karteireiter "VLAN". Öffnen Sie dort über den +-Button die Seite für die Erstellung neuer VLANs und wählen Sie aus dem Menü "parent interface" das WAN-Interface aus (in diesem Beispiel also le0). Über das Menü "Interfaces", "Assign" legt man virtuelle LANs anl. Im Beispiel wird der physischen Schnittstelle "le0" ein VLAN  mit der ID 7 zugeordnet wie es PPPoE-Server der Telekom erwarten.
Über das Menü "Interfaces", "Assign" legt man virtuelle LANs anl. Im Beispiel wird der physischen Schnittstelle "le0" ein VLAN mit der ID 7 zugeordnet wie es PPPoE-Server der Telekom erwarten. Vergrößern

Tragen Sie im Feld "VLAN tag" den Wert "7" ein und darunter eine Bezeichnung (z. B. VDSL). Verlassen Sie die Seite über den Save-Button. Öffnen Sie anschließend das Menü "Diagnostics" und lösen Sie einen Reboot aus.

Öffnen Sie nach dem Neustart erneut das Menü Interfaces und klicken dort auf den Befehl "Assign" – nun wird der Internet-Zugang über das VLAN-Interface eingerichtet. Stellen Sie dafür unter dem Karteireiter "Interface assignements" die WAN-Schnittstelle auf das VLAN-Interface um und speichern Sie die Änderung; in unserem Beispiel lautet der komplette Eintrag "VLAN 7 on le0 (VDSL)".

Öffnen Sie das Menü "Interfaces" und klicken Sie den Befehl "WAN" an. Stellen Sie im Bereich "General configuration" das Menü "Type" auf "PPPoE" um (voreingestellt ist DHCP) und tragen Sie im Bereich "PPPoE configuration" Ihre Zugangsdaten für T-Online ein. Für den Usernamen fügen Sie die zwölfstellige Anschlusskennung, die zwölfstellige T-Online-Nummer, die vierstellige Mitbenutzernummer sowie "@t-online.de" ohne Leerstellen und Anführungszeichen hintereinander ein. Tragen Sie im Feld darunter das achtstellige Passwort ein und schalten die Funktion "Periodic resets" ein. Damit lässt sich die Zwangstrennung auf eine günstige Zeit verlegen, beispielsweise in die Nachtstunden. Speichern Sie die Einträge über den Save-Button.

Nun sollte der Internet-Zugang funktionieren. Das kann man zum Beispiel von der Konsole aus mit dem Ping-Befehl prüfen (etwa ping www.heise.de). Falls Ping-Pakete beantwortet werden, aber Surfen noch nicht klappt, sind vermutlich die eingehenden IP-Pakete noch zu groß. Auf der Konsole blendet pfSense dann Fehlermeldungen wie "vlan0 discard oversize frame" ein, weil die vom PPPoE-Server gesendeten Pakete die zulässige Paketgröße überschreiten (z. B. 1514 Bytes statt 1510). Schalten Sie in diesem Fall im Menü "Interfaces", "WAN" im Bereich "General configuration" das "MSS clamping" ein; der Menü-Eintrag dafür heißt irreführenderweise "MTU". Ein sinnvoller Anfangswert für Experimente ist 1488 Bytes. Die Änderung wirkt sich nach dem Speichern aus, danach sollten auch Web-Zugriffe und überhaupt alle Internet-Dienste funktionieren.

Fein-Tuning

Anschließend kann man die übrigen Funktionen an persönliche Bedürfnisse anpassen, also etwa Zugänge über eine serielle Schnittstelle (mit einem Terminalprogramm) oder SSH konfigurieren, den Web-Caching-Proxy einrichten oder auch statische Routen festlegen (Menü "System"). Für SSH lässt sich die sicherere zertifikatsbasierte Authentifizierung ebenso wie für den Zugriff auf das Web-Interface einstellen.

Insgesamt bietet pfSense die von leistungsfähigen Routern bekannten Funktionen wie NAT, Firewall, DynDNS, UPnP, Port Forwarding und unter den VPN-Optionen nicht nur die üblichen IPSec und PPTP, sondern von Haus aus auch OpenVPN[5].

Die meisten Funktionen sind bereits ab Werk sinnvoll eingerichtet, beispielsweise die NAT-Funktion, die ausgehenden Verkehr grundsätzlich zulässt oder auch der DNS-Forwarder, der standardmäßig aktiviert ist und DNS-Anfragen aus dem internen Netz an den externen DNS-Server weiterleitet. Zusätzlich lässt sich dort auch festlegen, dass Clients, die per DHCP eine IP-Adresse bekommen, automatisch ins lokale DNS eingetragen werden. Auf solche Clients kann man dann anhand ihres Namens zugreifen. Ein besonderes Schmankerl des pfSense-Routers ist der Traffic Shaper, mit dem sich die Sende- und Empfangsbandbreite des Internet-Anschlusses portionieren lässt.
Ein besonderes Schmankerl des pfSense-Routers ist der Traffic Shaper, mit dem sich die Sende- und Empfangsbandbreite des Internet-Anschlusses portionieren lässt. Vergrößern

Für VDSL-Nutzer ist der Firewall-Bereich von besonderem Interesse, weil sich dort über den Traffic-Shaper Verkehrsregeln definieren lassen, um bestimmte, zeitkritische Dienste gegenüber unkritischen zu bevorzugen. Dort tragen Sie also zunächst die Up- und Downlink-Bandbreiten des VDSL-Anschlusses ein.

Stellen Sie das interne Interface auf LAN und das externe auf WAN ein und tragen Sie die Anschlussgeschwindigkeit ein (50000/10000 KBit/s oder 25000/5000 KBit/s, jeweils Empfangs- und Senderichtung). Auf den folgenden Konfigurationsseiten reservieren Sie für VoIP-Telefonate und andere zeitkritische Dienste die Mindestbandbreite. Der Mindestbedarf für VoIP hängt vom gewählten Codec ab, in der Regel sollten 120 KBit/s genügen. Bei Bedarf lässt sich dort auch Spiele-Traffic priorisieren oder auch Anwendungen wie VNC oder SMTP. Bei parallelem Datenversand - etwa wenn eine Mail während eines VoIP-Telefonats abgeschickt wird - kommen VoIP-Pakete zuerst zum Zuge, sodass sie nicht durch Mail-Pakete gebremst werden.
Bei parallelem Datenversand - etwa wenn eine Mail während eines VoIP-Telefonats abgeschickt wird - kommen VoIP-Pakete zuerst zum Zuge, sodass sie nicht durch Mail-Pakete gebremst werden. Vergrößern

Eine nette Dreingabe ist der lokale Zeit-Server (Services/OpenNTPD), der sich die aktuelle Zeit aus dem Internet holt und diese gegenüber anfragenden LAN-Stationen meldet – so muss nicht jeder LAN-Client für diesen Bedarf immer wieder eigene Internet-Verbindungen aufbauen. Unter Services/Wake on LAN kann man auch MAC-Adresse von Clients eintragen, die man aus der Ferne wecken will.

Das Menü "Status" liefert detaillierten Informationen zu einzelnen Funktionen der Firewall, unter "Status", "Services" lassen sich auch einzelne Dienste wie der DNS Forwarder oder Squid neu starten. Über das Menü "Diagnostics" lässt sich die Konfiguration sichern und zurückspielen, die Firewall neu starten und ähnliches. Dort gibt es auch eine Funktion zum Aufzeichnen des Verkehrs (Packet Capture); gleiches geht im Prinzip über eine SSH-Konsole und den Befehl tcpdump, aber eben nicht so komfortabel. (dz[6]/c't)


URL dieses Artikels:
http://www.heise.de/netze/artikel/116739

Links in diesem Artikel:
[1] http://www.heise.de/netze/software/download/pfsense/38164
[2] http://www.heise.de/netze/software/download/freebsd/34126
[3] http://www.heise.de/ct/08/22/194/
[4] http://www.heise.de/netze/VLAN-Virtuelles-LAN--/artikel/77832/
[5] http://www.heise.de/netze/software/download/openvpn/22153