KPN glasvezel via PFSense

Door Venxir op zondag 6 augustus 2017 11:50 - Reacties (94)
CategorieŽn: KPN, PFsense, Views: 38.708

http://cdn.downdetector.com/static/uploads/c/300/d6ab7/449px-KPN_logo_svg.png


VIA

https://www.alandra.be/wp-content/uploads/2014/07/pfsense-logo.png



Deze blog moet gelezen worden als hulpmiddel om tot een succesvolle configuratie te komen. Iedereen gebruikt zijn eigen hardware en daardoor kan en zal ik ook nooit garanderen dat mijn uitleg zal leiden tot jouw perfecte oplossing :).

Updates

8 Aug 2017 - Post herzien voor PfSense 4.0 BETA en info reacties/eigen ervaringen verwerkt

Inhoud

Inleiding

Ik ontving een Experiabox V9 toen ik KPN glasvezel had afgesloten bij KPN. Ik wist voor het bestellen al dat ik meer controle over mijn firewall, statistieken en vooral DHCP + VPN wou hebben.

PFSense biedt al deze features en kan op bijna elke laptop of server draaien. Zelf draai ik het via een Lenovo Thinkserver Ts140 i.cm. HyperV 2016. Mijn PFSense is dus gevirtualiseerd en de server heeft een WAN en LAN aansluiting. Als je maar ťťn ethernet aansluiting hebt, bijvoorbeeld op een laptop dan moet je gaan denken in VLANS om de nodige netwerken tegelijk over een enkele kabel te krijgen. Dat onderwerp ga ik niet behandelen.

Ik raad altijd aan om te begrijpen wat je gaat doen, daarvoor is http://www.netwerkje.com een hele goede bron. Hierdoor snap je problematische situaties beter.
Daarnaast ga ik ervan uit dat PFsense je bekend is en je enige netwerkkennis beheerst. Ik leg al mijn keuzes uit met tekst en waar nodig screenshots zodat de redenatie duidelijk is.

Terug naar boven

Wat is er nodig?

PFSense
PFSense is de firewall/routing software welke opensource en gratis is te verkrijgen. Dit systeem werkt op FreeBSD en is in staat om grotendeels je Experiabox te vervangen. Het enige wat PfSense niet kan is je telefonie voorzien omdat KPN hun SIP gegevens niet vrij geeft. Mocht je dus erg gehecht zijn aan vaste telefonie dan heb je je Experiabox ook nodig. Zie het "Managed switch" hoofdstuk voor een eventuele oplossing. Ik gebruik tegenwoordig versie 4.0-BETA maar de screenshots komen uit versie 2.x en zijn qua looks anders. Toch is de configuratie en plek ervan nog steeds identiek. Om die reden heb ik de oude screenshots opnieuw gebruikt.

Managed switch (Optioneel)
Een managed switch met IGMP snooping functie is een erg fijn hulpmiddel en in mijn ogen zelfs nodig als je een degelijk netwerk wil opbouwen. In mijn geval komt de NTU verbinding direct binnen op de switch. In de switch wordt de inkomende KPN poort geisoleerd van het normale LAN. Daarnaast kan ik nu VLAN4(ITV), VLAN6(Internet) en VLAN7(Telefonie) herkennen en toekennen aan poorten op mijn switch. Zo krijgt de PfSense WAN poort VLAN 4+6(tagged) en toegekend en stuur ik VLAN 7(tagged) naar de Experiabox zodat we toch nog vaste telefonie hebben in huis.

De Experiabox kan zonder VLAN 4 en 6 als je alleen telefonie gebruikt. Alleen de eerste keer moet je de Experiabox aansluiten op alle VLANS zodat de initiele gegevens van KPN opgehaald kunnen worden.

Mijn normale LAN(VLAN 1) loopt ook over deze switch, hierdoor kan ik IGMP snooping toepassen en zorgen dat het IGMP broadcast verkeer alleen naar mijn decoders gaat en niet naar alle apparaten in mijn netwerk. Zonder deze functie krijg je het probleem dat elke poort de TV stream van 7 a 15 mbit gaat uitsturen waardoor veel apparaten nodeloos druk zijn met dit verkeer. Als je een WiFi AP gebruikt dan zal deze het zelfs zo zwaar kunnen hebben dat je WiFi totaal niet presteert, die kan namelijk niet goed overweg met dit type verkeer.

Update 8-6-2017: Daarnaast houdt deze switch ook het SSDP verkeer tegen zodat de IGMP proxy in pfsense stopt met klagen over onderstaande, dit verkeer is namelijk niet relevant voor je decoder maar voor uPnP:

igmpproxy 55272 The source address 192.168.0.60 for group 239.255.255.250, is not in any valid net for upstream VIF.


Je kan ook de KPN NTU direct naar PFSense sturen als je dat wilt natuurlijk. Alleen voor IGMP snooping moet dan nog iets bedacht worden.

Terug naar boven

Interfaces defineren

Update: Hyper-V scheidt zelf de VLANS met virtuele switches, binnen PfSense krijg je dus meerdere NIC's met elk hun eigen VLAN i.p.v. 1 NIC met alle VLAN's zoals bij ESX.

Als basis moet PFSense eerst bekend zijn met je interfaces. In mijn geval heb ik em0(WAN) en em1(LAN) geconfigureerd tijdens de installatie van PFSense.

Op de WAN poort willen we VLAN 4 en VLAN 6 uit elkaar trekken zodat we twee aparte verbindingen kunnen maken. Dit doen we door eerst beide VLANS te maken zoals hieronder.
http://static.tweakers.net/ext/f/e5zRpdCzJoL02t6dEbzVBJgW/medium.png
De gemaakte VLANS kan ik toekennen aan de WAN en IPTV_WAN(OPT1 met andere naam) interfaces van PFSense.
EM1(LAN) hang ik direct aan de LAN interface omdat ik hier geen VLANS op maak.
http://static.tweakers.net/ext/f/3rvMOObfN3Ck0YZzu7YxVKmZ/medium.png
WAN
We kunnen nu al de internet verbinding met KPN instellen en controleren of we een IP-adres krijgen. Hiervoor moet je een PPPOE verbinding maken. De configuratie van deze verbinding heb ik in vele vormen en maten gezien. Voor mij werkt "<mac-adres-van-je-wan-adapter>@internet" als username en "welkom" als wachtwoord perfect.
Update 8-6-2017: Ik spoof mijn MAC-adres hier ook zodat er een match met de username is.

http://static.tweakers.net/ext/f/k0LMxiZHseeCTShHWatQlMRX/medium.png
http://static.tweakers.net/ext/f/4KG48pSdXFMRl1IxzB7oPbwl/medium.png

Als je WAN settings kloppen dan zul je een IP-adres van KPN krijgen, mocht het niet werken, controleer je logs via Status>System Logs>PPP in PFSense. Ik krijg nu via Status>Interfaces het onderstaande te zien:

http://static.tweakers.net/ext/f/WVbcDrTGLNLwxxNg0qfVivnb/full.png

Een ip-adres, gateway en zelfs een IPv6 adres :), in principe heb je nu internet via PFsense.
Mocht je geen verbinding krijgen, dan kan het lonen om je NTU even 10 seconden van het stroomnet te halen zodat de boel kan resetten.

IPTV
De IPTV_WAN interface heeft iets andere instellingen nodig om te gaan werken. Deze interface krijgt zijn IP-adres via DHCP van KPN. Nu geeft KPN niet zomaar adressen uit aan de eerste beste client die erom vraagt, neeeee we moeten iets extra's doen ;).
http://static.tweakers.net/ext/f/fS4CNvnisvULitNXfYDvRiy4/medium.png
We moeten extra DHCP opties meegeven zodat we de juiste gegevens terug krijgen. De dhcp-class-identifier "IPTV_RG" is het belangrijkste. Zonder deze optie mee te geven in je request zul je nooit antwoord krijgen en zal je interface nooit tot leven komen. subnet-mask en router zorgen voor wat extra informatie in de logging en interface die later van pas komt.

Update 8-6-2017: Tegenwoordig weet ik dat je subnet-mask, routers ,classless-routes kan gebruiken om automatisch routes te laten maken. Neem dit mee in de request options en je bent van je static routes af! :)
http://static.tweakers.net/ext/f/3Cof0vdi2nRuayhb7JozSX5u/medium.png
Als je settings kloppen dan zou je interface online moeten komen en krijg je iets zoals dit voorbeeld. mocht het niet werken, controleer je logs via Status>System Logs>DHCP in PFSense. Ik krijg nu via Status>Interfaces het onderstaande te zien:

http://static.tweakers.net/ext/f/IihOVIyIbgwhf6olmd7upaJh/full.png

Je hebt nu beide interfaces online! _/-\o_
http://static.tweakers.net/ext/f/mtkiossli70hALJaeAZefCqI/full.png

KPN doet zijn werk goed, nu moeten we PFSense nog leren hoe met onze decoder om te gaan.

Je kan je routes verifieren via Diagnostics>Routes
http://static.tweakers.net/ext/f/0TSDhlEgXjOQj4sPTJQJsXB1/medium.png
Terug naar boven

DHCP instellen

Je zal ongetwijfeld al een DHCP server voor je LAN hebben ingesteld op PFSense, daarom ga ik ook niet uitleggen hoe dat moet. Wat er wel moet gebeuren is dat we een extra optie moeten meegeven omdat je decoder nu ook op je LAN netwerk komt te zitten tussen je printer, chromecasts, pc's etc ;). Optie 60 "IPTV_RG" is altijd hetzelfde, optie 28 is het broadcast adres van je LAN netwerk, deze eindigt altijd op .255. Mijn interne LAN netwerk is van 192.168.0.1 t/m 192.168.0.255.
http://static.tweakers.net/ext/f/FszZAGMa04BfBI44Lc49NUXT/medium.png
Geven we deze beide opties niet mee dan zal de decoder niet correct werken.
Terug naar boven

IGMP Proxy opzetten


IGMP proxy updaten (Niet meer relevant voor 4.0)
De igmpproxy draait op een oudere beta versie, terwijl er in 2009 een 1.0 is uitgekomen.
In pfsense 2.3 wordt dit gefixt maar voor nu moet je het zelf updaten. Als je dit niet doet dan hangen zenders soms bij snel zappen of langdurig kijken.

Updaten doe je via de shell met de volgende commands via shell(Putty oid):
pkg
pkg update
pkg install igmpproxy

Deze nieuwe versie heeft alleen andere commandline argumenten dus je moet in pfsense ook wat wijzigen:
in etc/inc.services.inc de volgende regel zoeken:
mwexec("/usr/local/sbin/igmpproxy -d4 -c {$g['tmp_path']}/igmpproxy.conf");

deze vervangen voor:
mwexec_bg("/usr/local/sbin/igmpproxy -v {$g['tmp_path']}/igmpproxy.conf");

de -v kan je verwijderen, dit scheelt wat debug info in je logging.


IGMP instellen
Het IGMP verkeer moet over onze LAN en IPTV_WAN gaan. Om dit samenspel te realiseren is de IGMP proxy nodig, deze bepaald welke verzoeken hij honoreert en door geeft over vlan4 en vice-versa richting LAN.
http://static.tweakers.net/ext/f/Xl5YFCYS0IPnHuC0jqFycuLg/medium.png

Upstream moet op de "IPTV_WAN" interface en ook hier zie je bekende adressen terug, 213.75.0.0/21 was die classless-static-route en daar gaat IGMP verkeer overheen. Daarnaast heb je ook je IPTV_WAN interface en ook deze interface verwerkt IGMP verkeer op een bepaalde range. Controleer wat je Gateway van je IPTV_WAN interface is en gebruik dat als basis voor je range. Mijn gateway is 10.244.0.1 dus ik gebruik 10.244.0.0/18 (/18 is nog een gok, de range kan kleiner maar dat is trial and error).

Update 8-6-2017: Ik gebruik voor upstream nu de ranges 10.0.0.0/8 en 213.75.0.0/16 en voor downstream 192.168.0.0/24. Dit werkt perfect omdat ze niet zo krap zijnen zo krijg ik ook geen problemen als KPN besluit net een ander IP te gebruiken die buiten mijn range valt.

Als downstream gebruik je je LAN interface en definieer je je DHCP range. waarschijnlijk hoeft die IP-range niet maar ik vind het netjes en duidelijk om alles duidelijk te specificeren.

Terug naar boven

Firewall

De firewall doet zijn werk goed en blokkeert van nature het verkeer die wij nodig hebben om TV te kunnen kijken. Daarom zijn er op de LAN en IPTV_WAN interfaces enkele regels toegevoegd.

Via Firewall>Rules kunnen deze regels worden ingesteld.
Onderstaande regels staan standaard in het LAN tabblad, alleen moet voor de tweede regel een extra setting worden aangevinkt zodat we het IGMP(multicast verkeer) door te laten vanuit het LAN naar andere interfaces. dIt heet "Allow packets with IP options to pass".
http://static.tweakers.net/ext/f/oRjnrkUh1sCn4oDTVufgIBuB/medium.png
http://static.tweakers.net/ext/f/2u6jY2HO0JnRBzCUMWlOtTrB/medium.png
Voor het IPTV_WAN tabblad moeten de volgende regels gemaakt worden, vergeet niet om multicast toe te laten voor je regels.
http://static.tweakers.net/ext/f/zQV4awgRu9VCBWWwwUSQp9U3/medium.png
Terug naar boven

Hiermee zou je een werkende installatie moeten hebben :), zo niet dan wordt het tijd om te debuggen als een echte tweaker ;).

Veelgestelde vragen

Q: Ik heb veel IGMP meldingen zoals onderstaande afbeelding
http://static.tweakers.net/ext/f/2j0g7r6oDBdOa5NVmqTxAeGe/medium.png
A: Dit is het resultaat van de IGMP proxy die,voor hem onbekende upstream adressen weigert door te geven. dit is dus goed. Je ziet ook dat het LAN adressen zijn in mijn situatie en deze kwamen door veel SSDP verzoeken binnen mijn netwerk. Ik laat de switch nu ook dit protocol standaard blokkeren om deze meldingen te onderdrukken.

Q: Werkt hiermee routed itv en dus Netflix?
A: Ja, zelf getest :)

Q: Mijn beeld stopt na 4 minuten met een foutmelding, help?
A: De IGMP proxy van alle pfsense versie is buggy, dit lijkt eigenlijk gefixt in versie 4. Zie ook: https://redmine.pfsense.org/issues/6099

Q: Handig tip van PureDJ!
A:Ik ben een tijd geleden over gezet naar het nieuwe KPN netwerk (genaamd SNI)
Wat gebeurde er toen, iedere keer als ik mijn pfsense aansloot werd ik geblocked voor een flink aantal uren.
Na lang, heel lang speurwerk (iedere keer geblocked, daarna doet de Experiabox het ook niet meer) en met een sniffer tussen het netwerk, ben ik er uit wat het probleem is.
Pfsense zend op beide VLANs (4 en 34 in mijn geval) gelijktijdig een DHCP discover = crash aan KPN kant (inmiddels weet ik voor een gedeelte hoe het een en ander afgehandeld word aan de KPN kant, zij hebben een DHCP relay op de Layer 3 switch met een optie 82 insert, zodat het ip gekoppeld is aan aansluiting ipv MAC)

P.S. IPs op het SNI netwerk beginnen met 145

Oplossing ben ik nu mee bezig, ik ben bang dat daar een script op de PFsense doos nodig is.

Q: Ik heb een andere vraag
A: stel hem hieronder of in een DM, dan voeg ik hem toe :).

Terug naar boven