XS4All and PFSense This part is in dutch because XS4All is a dutch internet provider and it's not really intresting for people without a XS4All connection. Ik ga er vanuit dat de mensen die dit lezen enig idee hebben van netwerken en eventueel PFSense. Uitleggen hoe bijvoorbeeld IPV6 in elkaar zit lijkt me niet echt nuttig en buiten de scoop van dit verhaal. Het idee Het idee was het volgende. We plaatsen de router van XS4All, een Fritzbox 7360 in bridgemode. Daarachter draaien we een PFSense systeem welke dan mijn core-router zou gaan worden. Dus: _ +---------+ __( )_ +---------+ +---------+ +---------+ | _( )_ | | | | | | | ( Internet )--->| Fritzbox|--->| PFSense |--->| PC's | | (____________) | modem | | router | | |-+ +---------+ +---------+ +---------+ De modem De Fritzbox kun je aanpassen via de telnet interface. Zorg ervoor dat de modem gewoon normaal werkt. Als er hier al problemen zijn met je internet, gaat de rest al helemaal niet werken. 1) Sluit een analoge telefoon aan op je fritzbox. Bel het nummer #96*7* Dit kun je ook doen door een nieuwe siptelefoon aan te sluiten in de webinterface en via de click-to-dail dit nummer laten bellen. Er is ook een URL welke hetzelfde zou moeten doen, echter die heb ik niet terug kunnen vinden. Deze actie zal de telnet interface enabelen. 2) Telnet naar de fritzbox en pas het bestandje /var/flash/debug.cfg aan. telnet 192.168.178.1 --> inloggen met je admin wachtwoord cd /var/flash/ echo > debug.cfg nvi debug.cfg --> en vul dit met onderstaande. nvi is bijna hetzelfde als vim sleep 120 killall dsld telefon voipd pbd sleep 10 brctl addif lan ptm_vr9 ifconfig ptm_vr9 up 3) Reboot de router. Je kunt bovenstaande ook met de hand uitvoeren. Het effect is hetzelfde. De router op IPV4 Ik neem aan dat niemand problemen heeft met het installeren van een pfsense router. 1) We maken voor de WAN interface eerst een nieuw VLAN aan op VLAN 6. Deze nieuwe interface hangen we aan de WAN. (interfaces -> assign) 2) Deze WAN interface zetten we voor IPV4 op PPPOE. Hiervoor kan je alles invullen als username/wachtwoord, als er maar iets staat. 3) Reboot en je IPV4 XS4All netwerk werkt. Dit kun je zien bij Diagnostics -> interfaces. Je zult hier 2 adressen te zien krijgen. Je eigen en een extra helper adres van de pppoe verbinding. 4) Stel je router verder in zoals je wilt qua routering en firewalling. De router op IPV6 Tot zo ver ging alles naar wens. Internet werkte prima en ook mijn ipsec tunnels waren geen enkel probleem om in te stellen. Echter ik heb redelijk veel werken met IPV6, en dat wilde ik dus ook op mijn PFSense doosje. Hier begon de elende. Ik had dit aan kunnen zien komen aangezien als je googled naar 'pfsense xs4all ipv6', dan zijn de eerste twee meldingen links naar het bug-systeem van PFSense... 1) Eerst de internetkant van de router instellen. Het idee is dat je een DHCP-PD doet over de PPPOE lijn heen en XS4All hierdoor weet waar het verkeer naartoe moet. Dus dit kunnen we instellen bij de WAN interface. FOUT. In vorige versies van PFSense bestond DHCP-PD wel, echter tegenwoordig niet meer. Das jammer aangezien XS4All dit wel vereist. Een gewoon DHCP6 request is niet genoeg. (https://redmine.pfsense.org/issues/3097 2) Gelukkig is er dus een BUG request welke op solved staat. Dus we upgraden de PFSense doos van stable naar development in de waan dat daar deze patch ondertussen in zit. Helaas bleek dit niet het geval. Wel konden we hierin wel een eigen DHCP6c configfile opgeven. Dus in /root/dhcp6c_xs4all.conf de volgende configuratie gezet: interface pppoe0 { send ia-pd 0; send rapid-commit; request domain-name-servers; request domain-name; script "/var/etc/dhcp6c_wan_script.sh"; }; id-assoc pd 0 { }; 3) Dit is echter maar 1 deel van het verhaal. Het blijkt dat het proces dat de DHCP6c moet aansturen nu niet meer gestart word. Dit moeten we dus ook met de hand regelen. Hiervoor heb ik een scriptje gemaakt dat onderstaande uitvoert. Dat scriptje kan je vervolgens in je config.xml zetten als startup script. #!/bin/sh sleep 120 # Eerst alles laten opkomen killall -9 dhcp6c # Mocht er nog iets draaien, dan draait het nu niet meer. sleep 10 /usr/local/sbin/dhcp6c -c /var/etc/dhcp6c_wan.conf -p /var/run/dhcp6c_pppoe0.pid pppoe0 & 4) Dit werkte! We hebben een IPV6 adres en nadat we IPV6 aan de LAN kant hadden geconfigureerd in het goede subnet en de rtadvd, ofwel de router advertisment aan hadden gezet kreeg iedereen een IPV6 adres en konden we over IPV6 werken! 5) Echter wat bleek, sommige adressen waren gewoonweg niet meer te benaderen. Facebook werkte niet meer. Youtube en google wel. Ik kreeg heel vreemd gedrag met netwerkverbindingen op IPV6. Met IPV4 was niets aan de hand. Eerst handmatig de MTU size op de router naar 1492 gezet (wat zowieso een goed idee is) maar de problemen bleven. Pas nadat ik mijn MTU size van mijn computer ook naar 1492 had gezet, was het enigsinds werkbaar, maar nog niet geweldig. Blijkbaar is er ergens in het verhaal de path MTU discovery stuk gegaan, aangezien dit niet meer werkte. In tegenstelling tot een IPV4 router, waar een pakket word opgeknipt als het te groot is, stuurt een IPV6 router een ICMPv6 type 2 pakket terug zodat de computer weet dat er een lagere MTU size gekozen moet worden. Dit is mooi te zien met het commando 'tracepath6'. Elke IPV6 stack zou een path discovery moeten doen om de MTU size te bepalen, echter dit werkte dus niet meer. Geen idee hoe dit te fixen is. Ondertussen was ik het redelijk zat en had het redelijk gehad met PFSense. Nu heb ik m0n0wall erop draaien en die kent wel DHCP-PD. Dit werkte redelijk snel als een zonnetje. De mogelijkheden hiermee zijn wel minder, maar het werkt prima en stabiel nu. Later nog maar eens kijken of PFSense en XS4All samen kunnen komen. Met dank aan: gjppp