pfSense 2.1
Was ist pfSense?
pfSense ist eine freie, open source Firewall, basierend auf freeBSD. Als Paketfilter verwendet man pf. Daher auch der Name pfSense. Diese Distribution kann und wird, als Router und Firewall für kleine Heimnetzwerke, wie auch für grosse Unternehmen gebraucht.
pfSense startete als Fork von M0n0wall. Während M0n0wall vor allem auf embedded Systeme ausgerichtet ist, wurde pfSense auch für grössere PC Architekturen konzipiert um zusätzliche Leistungen zu erbringen. Trotzdem ist pfSense auch noch als Image für embedded Systeme zu haben. Mein Blog Post bezieht sich auf ein solches System. Für den Test verwende ich ein ALIX Board 2D13 und beschränke mich auf Routing und Firewalling Funktionen. Proxy, IDS/IDP usw. wäre für die pfSense auch kein Problem. Hierzu habe ich leistungsfähigere Systeme zur Hand.
Als Heimrouter ist ALIX aber auch heute noch eine gute Wahl.
pfSense 2.1
pfSense 2.1 ist momentan noch in der Entwicklung. Die Entwickler von pfsense hofften bis zum IPv6 Launch Day den offiziellen Release bereit zu haben. Leider hat dies nicht geklappt.
Die Snapshots sind hier erhätlich. Auf Produktivsystemen ist der Einsatz dieser Snapshots nicht empfohlen. Grundsätzlich gibt es hier mehrere Releases pro Tag! Darunter gibt es auch Tage bei denen man ein schlechtes Ei erwischen kann :)
Für den Heimgebrauch gibt es beim Einsatz dieser Snapshots nichts einzuwenden. Hier ist jeder sein eigener König.
Gerade der volle IPv6 Support in dieser Version hat schon seinen Reiz. Und genau darum geht es in diesem Blog Post.
IPv6 mit Swisscom
Die grundlegende Konfiguration einer pfSense um IPv6 Konnektivität mit Swisscom zu erlangen ist relativ simpel. Der Spielplatz dahinter aber umso grösser :)
Ich führe hier die nötigen Schritte auf.
Wie schon erwähnt muss das System mit der Version 2.1 laufen. Der aktuelle Release 2.0.1 ist dazu noch nicht fähig.
WAN
Zuerst wird das WAN Interface konfiguriert. Wie bereits bekannt, verwendet Swisscom momentan das Tunnelprotokoll 6RD. Dementsprechend setzt man den IPv6 Configuration Type auf 6rd.
Dadurch öffnet sich innerhalb der WAN Interface Konfiguration ein neuer Abschnitt: "6RD Rapid Deployment". Diesen füllt man mit den Swisscom relevanten Daten aus.
6RD Prefix: 2a02:1200::/28
6RD Border Relay: 193.5.122.254 193.5.29.1 (Wechselt per 09.04.2013)
6RD IPv4 Prefix lenght: 0
Save und Apply, WAN ist erledigt.
LAN
Damit IPv6 auch im LAN bekannt wird, muss nun das LAN Interface konfiguriert werden.
Auch bei diesem hat es in Version 2.1 einen Punkt mit IPv6 Configuration Type. Diesen setzt man im Falle eines Tunnels wie 6to4 oder eben 6RD auf Track Interface.
Dadurch wird der Abschnitt Track IPv6 Interface verfügbar. In unserem Fall tracken wir das WAN Interface und geben als IPv6 Prefix ID 0 an.
Save und Apply!
Im Dashboard sollte nun bereits die IPv6 Verbindung ersichtlich sein. Falls nicht, hilft ein release / renew des WAN Interfaces oder ein simpler Reboot.
Firewall Regeln
pf blockt per Default sämtlichen nicht aus dem LAN initiierten Verkehr. Damit surfen via IPv6 möglich ist, muss wie bei IPv4, im Minimum eine Regel erstellt werden, welche den ausgehenden Verkehr erlaubt.
Natürlich lassen sich auch Regeln zum Erlauben von Services auf Host's oder Netzwerke einrichten. Hier bietet pfSense 2.1 volle IPv6 Unterstützung.
Damit steht dem sicheren surfen via IPv6 über die pfSense nichts mehr im Wege.
Swisscom TV
Spricht man vom Swisscom Access, so ist auch Swisscom TV immer wieder mal ein wichtiges Thema.
Auch hier. pfSense lässt sich so konfigurieren, dass Swisscom TV dahinter betrieben werden kann!
Auch wenn es in den pfSense Foren offensichtlich nicht ganz klar ist, hier die funktionierende Konfiguration.
Damit Swisscom TV betrieben werden kann, ist ein IGMP Proxy von Nöten. Während dieser unter Linux schon lange hervorragend läuft, hatte man unter BSD ein wenig Mühe. Trotz allem. Seit der Version 2.0.1 hat auch pfSense einen IGMP Proxy und diesen sogar per Default mit an Bord.
IGMP proxy
Der IGMP Proxy ist unter Services > IGMP Proxy schnell konfiguriert.
Benötigt wird ein Upstream und ein Downstream Interface.
Dem Downstream weist man das LAN Interface zu und gibt das lokale Netzwerk oder falls man möchte, die entsprechende IP der Swisscom TV Box(en) an. Threshold ist 1.
Dem Upstream weist man das WAN Interface zu. Hier werden das Multicast Netz 224.0.0.0/4 und die Swisscom TV Infrastruktur 195.186.0.0/16 benötigt. Ergänzung: Für die neue TV 2.0 Plattform wird das Netz 213.3.72.0/24 benötigt!
Verwendet man anderer Service Strukturen oder andere Provider ist hier eine andere IP nötig.
Dies lässt sich aber problemlos ausfindig machen, indem man via ssh igmpproxy -d -c /tmp/igmpproxy.conf nach Source Adressen sucht, welche geblockt werden.
Threshold ist auch hier 1.
Damit ist der IGMP Proxy bereits konfiguriert.
Firewall Regel LAN
Damit Swisscom TV funktioniert muss man ausgehend Multicast erlauben. Am einfachsten geht dies, wenn man bei der Regel welche ausgehenden IPv4 Verkehr erlaubt, unter Advanced Options:"This allows packets with IP options to pass. Otherwise they are blocked by default. This is usually only seen with multicast traffic.", markiert.
Die LAN Regel Übersicht sollte nun so aussehen:
Firewall Regeln WAN
Zudem benötigt man 2 Regeln für WAN.
Gebraucht wird eine Regel welche UDP Traffic durchlässt. In diesem Fall am bestem noch auf die Beschränkung der Swisscom Infrastruktur.
Ebenfalls muss man noch IGMP erlauben. Auch hier aktiviert man unter Advanced Options:"This allows packets with IP options to pass. Otherwise they are blocked by default. This is usually only seen with multicast traffic."
Die WAN Regel Übersicht sollte sich nun so darstellen:
Wichtig! Bei sämtlichen Änderungen am Ruleset bezüglich Swisscom TV / Multicast ist es wichtig, danach einen sauberen Reboot der Firewall zu machen!
Damit das Netzwerk nicht mit Multicast bzw eben Broadcast Traffic geflutet wird, empfiehlt sich so oder so ein Switch, welcher igmp snooping beherrscht.
Günstig und gut kann dies der GS105E von Netgear. Auch bei Swisscom erhältlich.
Ich hoffe ich konnte mit diesem Post ein wenig teuflisches Gedankengut verbreitet :D
Wenn nicht, who cares!
Special thanks to people like Seth Mos!