1
0
Fork 0
Browse Source

Blog: XS4All and PFSense

master
Rogier Neeleman 10 years ago
parent
commit
a970a92aaf
  1. 136
      blog/2014-10-28_XS4All_and_PFSense.txt

136
blog/2014-10-28_XS4All_and_PFSense.txt

@ -0,0 +1,136 @@ @@ -0,0 +1,136 @@
<b>XS4All and PFSense</b>
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.
<i>Het idee</i>
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 | | |-+
+---------+ +---------+ +---------+
<i>De modem</i>
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 <b>#96*7*</b>
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.
<i>De router op IPV4</i>
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.
<i>De router op IPV6</i>
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. (<a href='https://redmine.pfsense.org/issues/3097' target='new'>https://redmine.pfsense.org/issues/3097</a>
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 <a href='http://m0n0.ch/wall/' target='new'>m0n0wall</a> 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:
<a href='http://gjppp.home.xs4all.nl/vdsl-pppoe/' target='new'>gjppp</a>
Loading…
Cancel
Save