KPN glasvezel via PFSense

Door Venxir op woensdag 13 januari 2016 20:37 - Reacties (87)
CategorieŽn: KPN, PFsense, Views: 31.541

https://www.kpn.com/public/images/logo-kpn-groot.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 :).

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. ESXi. 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.

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.

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.

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

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.
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.

PS: Ik heb het nooit voor elkaar gekregen om classless-static-routes in mijn DHCP request te kunnen gebruiken in PFSense. Nu weet ik het antwoord van deze request dankzij netwerkje.com en GoT, maar het zou voor de netheid mooi zijn als PFSense dit ook kan(tips zijn welkom!)
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.

Terug naar boven


Static routes instellen

Technisch gesproken hoeven we maar ťťn static route in te stellen ;). Nu lijkt deze route uit de lucht te vallen, maar hij is goed te verklaren.
http://static.tweakers.net/ext/f/PR0fNEiZGrkdEX8Ec590ud2j/medium.png
213.75.112.0/21 is een ip-range van KPN waar de decoder ook mee wil communiceren. Normaal krijg je deze range van KPN te horen als je een classless-static-route optie meestuurt. Nu lukt mij dit helaas niet in PFsense zoals ik eerder aan gaf. Gelukkig lijkt deze range voor heel Nederland Hetzelfde.

We zeggen hierboven dat we alle verzoeken naar 213.75.112.0/21 willen routeren via de IPTV_WAN interface en niet via onze default WAN gateway. Zonder deze regel krijg ik de decoder niet door zijn initiŽle opstartfase heen.
Dit doe je via System>Routing>Routes

Mocht je default gateway fout staan dan kan je dit corrigeren via System>Routing>Gateways
http://static.tweakers.net/ext/f/Q4GDBp0H5OFBpO4MbVQBINOU/medium.png
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
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).

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.
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 beide 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 kan de logging verminderen door de -v optie in services.inc te verwijderen. Als je de ingestelde upstream adressen zou verwijderen dan zie je ook welke 213.75.x.x adressen aangeroepen worden. dit was voor mij een manier om achter deze classless-static-route te komen en te bevestigen dat ik de juiste ip-range gebruik.

UPDATE

In mijn handleiding gebruikte ik vaak 213.75.0.0/16 als static route en firewall rule. Dit moet toch echt 213.75.0.0/21 zijn omdat .16 een te grote range is. Ik kwam erachter dat vi.nl en webmai.telfort.nl het dan niet meer doen omdat die dan in de range vallen en dus over IPTV_Wan worden gerouteerd...

UPDATE2 22-12-2016

Er komt een nieuwe uitleg met meer detail en de laatste PFSense versie! Ik heb zelf wat dingen getest en ben tot wat conclusies gekomen die anderen ook kunnen helpen :). Ik hoop het morgen te kunnen posten.

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

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

Terug naar boven

plaats deze banner onder je eigen reviewtweakers - nomineer voor review van de maand