Eigen router achter een XS4ALL-VDSL-aansluiting (2)

[Update 15-7-2015: naar aanleiding van een van de reacties heb ik een nieuwe versie van dit artikel geschreven.]

Een paar maanden geleden probeerde ik een eigen router werkend te krijgen op een VDSL-aansluiting van XS4ALL. Dat was toen maar matig succesvol, omdat de PPPoE-sessie vanaf de router niet robuust genoeg was.

Inmiddels heb ik het experiment kunnen herhalen, dit keer gelukkig met meer succes. Mede dankzij dit artikel van Peter Buijsman heb ik alles werkend gekregen.De gebruikte apparaten:

  • Modem: Draytek Vigor 130 VDSL2-modem (firmwareversie 3.7.5)
  • Router: MikroTik 2011UiAS-2HnD (RouterOS versie 6.9)
Draytek Vigor 130 VDSL2-modem

Draytek Vigor 130 VDSL2-modem

Mikrotik RB2011UiAS-2HnD router

Mikrotik RB2011UiAS-2HnD router

Stap 1. Modem in “bridge mode”

Om te beginnen moeten we het modem in bridge mode zetten. De router die we erachter hangen “praat” dan rechtstreeks met de DSLAM om de PPPoE-sessie op te zetten.

WAN-instellingen

WAN-instellingen

De WAN-instellingen zijn minimaal, maar let op: doe niets met de VLAN-instellingen!

De PPPoE-sessie met XS4ALL wordt opgezet over vlan 6. Het ligt daarom voor de hand om het modem de vlan-tag alvast te laten strippen. In de praktijk bevalt dat slecht, om twee redenen:

  1. De Vigor 130 gaat er zelf met de PPPoE-sessie vandoor. (Dat verklaart ook waarom de verbinding in de eerdere testopstelling niet robuust te krijgen was: er ontstond blijkbaar een “wedstrijd” tussen het modem en de router over welk van de twee als eerste de PPPoE-sessie kon krijgen.)
  2. Het webinterface van het modem zelf is dan niet meer bereikbaar, bijvoorbeeld voor het nalopen van de instellingen.

(Overigens staat dit op de supportwebsite van Draytek niet goed beschreven.)

PPPoE-pass-through instellen

PPPoE-pass-through instellen

Op de PPPoE/PPPoA-pagina gaat het om drie instellingen:

  1. PPPoE/PPPoA Client: Enable
  2. DSL Modem Settings: VPI, VCI, Encapsulating Type en Protocol (zie de afbeelding)
  3. PPPoE Pass-through: For Wired Lan (aanvinken)

Dit is alles voor wat betreft het modem.

Stap 2. Routerconfiguratie

Dit is een schematische weergave van de opbouw van de verbinding:

Schema van de verbindingsopbouw

Schema van de verbindingsopbouw

Het modem zorgt voor de “bitpijp” tussen de DSLAM en de router. Op de router maken we een virtuele interface voor vlan 6 en daar overheen loopt de PPPoE-sessie.

Op de router zelf komt de aansluiting met het modem binnen op ethernetpoort 9. Omdat het om VDSL gaat, wilde ik er geen “kostbare” gigabitpoort (1 t/m 5) aan verspillen. Verder is de keuze arbitrair.

In dit voorbeeld loopt verder de DMZ over poort 1 en het gebruikerssegment over poort 2.

Routerschema

De configuratie is dan als volgt (op basis van /export compact):

/interface bridge
add admin-mac=4C:5E:0C:AB:CD:EF auto-mac=no l2mtu=1598 name=bridge-dmz
/interface ethernet
set [ find default-name=ether1 ] name=ether1-dmz
set [ find default-name=ether2 ] name=ether2-werkkamer
set [ find default-name=ether9 ] comment=\
"Verbinding met VDSL-modem in bridge (plus lokaal 192.168.1.0/24)" name=\
ether9-vdsl
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=\
20/40mhz-ht-above country=netherlands disabled=no distance=indoors \
hide-ssid=yes l2mtu=2290 mode=ap-bridge ssid=MikroTik-nomap
/interface vlan
add arp=disabled interface=ether9-vdsl l2mtu=1594 name=vlan-xs4all-inet \
vlan-id=6
/ip neighbor discovery
set vlan-xs4all-inet discover=no
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk \
mode=dynamic-keys \
wpa-pre-shared-key=DitIsNietZoGeheim wpa2-pre-shared-key=\
DitIsNietZoGeheim
add authentication-types=wpa2-psk management-protection=allowed mode=\
dynamic-keys name=profile-gasten wpa2-pre-shared-key=DitIsNietZoGeheim
/interface wireless
add disabled=no l2mtu=2290 mac-address=4E:5E:0C:12:34:56 master-interface=\
wlan1 name=wlan-gasten security-profile=profile-gasten ssid=WLAN_GASTEN \
wds-default-bridge=bridge-dmz
/ip pool
add name=dhcp-dmz ranges=192.168.2.192/27
add name=dhcp-werkkamer ranges=192.168.5.192/27
/ip dhcp-server
add address-pool=dhcp-dmz disabled=no interface=bridge-dmz \
lease-time=2h \
name=server-dmz
add address-pool=dhcp-werkkamer disabled=no interface=ether2-werkkamer \
lease-time=2h name=server-werkkamer
#
# MTU = 1492
# Let op dat in het PPP-profiel "Change TCP MSS" op Yes staat
# en "Use IPv6" ook
#
/interface pppoe-client
add ac-name="" add-default-route=yes allow=pap,mschap2 comment=\
"pppoe-verbinding XS4ALL-internet" default-route-distance=1 \
dial-on-demand=no disabled=no interface=vlan-xs4all-inet \
keepalive-timeout=60 max-mru=1492 max-mtu=1492 mrru=disabled name=\
pppoe-xs4all-inet password=kpn profile=default service-name="" \
use-peer-dns=yes user=fb7360@xs4all.nl
/ip neighbor discovery
set pppoe-xs4all-inet \
comment="pppoe-verbinding XS4ALL-internet" discover=no
/interface bridge port
add bridge=bridge-dmz interface=wlan1
add bridge=bridge-dmz interface=ether1-dmz
add bridge=bridge-dmz interface=wlan-gasten
/ip address
add address=192.168.2.1/24 interface=bridge-dmz network=192.168.2.0
add address=192.168.5.1/24 interface=ether2-werkkamer network=192.168.5.0
add address=192.168.1.2/24 \
comment="DrayTek Vigor130 VDSL-modem" \
interface=ether9-vdsl network=192.168.1.0
/ip dhcp-server config
set store-leases-disk=never
/ip dhcp-server network
add address=192.168.2.0/24 dns-server=192.168.2.1 gateway=192.168.2.1
add address=192.168.5.0/24 dns-server=192.168.2.5 gateway=192.168.5.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.5.1 name=router
/ip firewall filter
add chain=input protocol=icmp
add chain=input connection-state=established
add chain=input connection-state=related
add action=drop chain=input in-interface=pppoe-xs4all-inet
add action=drop chain=input in-interface=vlan-xs4all-inet
add action=drop chain=input in-interface=ether9-vdsl
add chain=forward connection-state=established
add chain=forward connection-state=related
add action=drop chain=forward connection-state=invalid
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-xs4all-inet
# Ook NAT naar het modem zelf
add action=masquerade chain=srcnat out-interface=ether9-vdsl
/lcd interface
set ether1-dmz interface=ether1-dmz
set ether2-werkkamer interface=ether2-werkkamer
set ether9-vdsl interface=ether9-vdsl
set wlan1 interface=wlan1
/system clock
set time-zone-name=Europe/Amsterdam
/system ntp client
# ntp.xs4all.nl
set enabled=yes primary-ntp=194.109.22.18
/system ntp server
set enabled=yes

Het IP-adres van de NTP-server van XS4ALL staat hier hard in: RouterOS accepteert geen servernamen. Het is netjes om met een script periodiek dit adres te checken en zonodig te updaten.

Stap 3. IPv6 instellen

Eerst de DHCPv6-client instellen. (Om IPv6 werkend te krijgen is dit  overigens niet strikt noodzakelijk.)

/ipv6 dhcp-client
add add-default-route=yes interface=pppoe-xs4all-inet pool-name=\
xs4all-v6prefix pool-prefix-length=62 use-peer-dns=no

Merk op dat ik geen gebruik maak van de aangeboden DNS-adressen (use-peer-dns=no). Het probleem is namelijk dat deze de IPv4-DNS-adressen van de PPPoE-verbinding overschrijven. Echter, op dit punt van de configuratie hebben de interfaces enkel nog een link local adres en werkt de DNS-server van de router dus niet.

De prefix van XS4ALL komt nu in een pool terecht (pool-name=xs4all-v6prefix) en nu kunnen met prefix delegation delen van de /48 uitgedeeld gaan worden. Echter, ik heb nog niet kunnen ontdekken of het mogelijk is om bepaalde prefixen te “reserveren” voor een interface. Dat is nodig om bijvoorveeld servers een vast IPv6-adres te kunnen geven.

Omdat je van XS4ALL, naast het vaste IPv4-adres, ook een vaste IPv6-prefix krijgt, is dit verder geen probleem en kunnen we de v6-prefixen in ieder geval statisch routeren.

/ipv6 address
add address=2001:db8:1234:5678:4e5e:cff:fe23:12ab eui-64=yes interface=\
ether2-werkkamer
add address=2001:db8:1234:2:4e5e:cff:fe23:12ab eui-64=yes interface=\
bridge-dmz

Tenslotte nog de firewall. Let op dat DHCPv6-verkeer wordt toegelaten!

/ipv6 firewall filter
add chain=input protocol=icmpv6
add chain=input connection-state=established
add chain=input connection-state=related
add chain=input comment=ntp-service dst-port=123 limit=10,5 protocol=udp
add chain=input comment="DHCPv6-prefix ontvangen van XS4ALL" dst-port=546 \
protocol=udp src-address=fe80::/10
add action=reject chain=input in-interface=pppoe-xs4all-inet reject-with=\
icmp-admin-prohibited
add action=reject chain=input in-interface=vlan-xs4all-inet reject-with=\
icmp-admin-prohibited
add action=reject chain=input in-interface=ether9-vdsl reject-with=\
icmp-admin-prohibited

33 reacties op “Eigen router achter een XS4ALL-VDSL-aansluiting (2)

  1. Goed artiekel. Heb je in deze opstelling ook gekeken of je TV aan de praat krijgt? Ik kan me zo voorstellen dat een en ander aan de gang te krijgen is als je een VLAN met ID 4 aanmaakt?
    De (redelijk summiere) beschrijving op de site van XS4All doet vermoeden dat Internet en TV in dezelfde PPPoE verbinding verpakt zitten maar dat ze de DSLAM verlaten met een ander VLAN tag nummer. Op basis hiervan zou ik zeggen, dat moet werken. Ik ben benieuwd of dit ook strookt met de ervaringen die je hebt opgedaan met de Vigor 130.

    • Dank je wel. Ik heb alleen internet van XS4ALL, dus ik kan het zelf niet testen. Wat ik ervan weet is dat je inderdaad ook een VLAN 4 moet aanmaken. Deze moet, net als VLAN 4, op de ethernet interface lopen. Dit gaat dus apart/onafhankelijk van de PPPoE-verbinding. Hier http://netwerkje.com/config-internet-iptv staat een suggestie: het komt neer op het bridgen van VLAN 4 naar een vrije ethernetpoort, zonder het VLAN-id.

  2. Wat is voor jou de afweging geweest om de Mikrotik niet rechtstreeks op de NTU aan te sluiten? Bij mij speelt het idee om de Fritzbox (in mijn geval) er tussen uit te halen en de PPPoe connectie met alles wat erbij hoort door de Mikrotik te laten doen. Helaas nog geen verbinding kunnen opbouwen, wat voor het grootste deel veroorzaakt word door tijdgebrek.

    • Ik heb de fritzbox niet in gebruik, mara een Banana Pi R1 rechtstreeks op de NT aangesloten. Werkt prima, mits je de MTU van je eth0 interface op minimaal 1508 zet, zodat je pppoe interface 1500 kan krijgen. Mits je de standaard MTU’s gebruikt (1500 voor eth0, 1492 voor pppoe) dan gaat dit bij enkele websites (o.a. speedtest.net) fout.

  3. Harold, kreeg je ipv6 zonder problemen voor elkaar met de Vigor 130? Als ik de Vigor 130 als router configureer krijg ik wel ipv4 maar geen ipv4. Op de fritzbox krijg ik wel ipv6 (als dit werkt gaat ie naar bridge mode met pfsense)

    • Niet letterlijk op de Vigor 130 zèlf: die gebruik ik alleen als modem. De pppoe-sessie en de DHCPv6-client draaien op een aparte router erachter.

      • Ik had hem eerst ook als Bridge/Modem staan maar kreeg toen geen ipv6. Vandaar als router geprobeerd, maar daar ook geen ipv6.

        • Het luistert nogal nauw, het is me geloof ik met pfSense nooit gelukt. De DHCPv6-client moet uitsluitend de delegated prefix aanvragen en dus geen adres.

  4. Bedankt voor je goede artikel, het is eigenlijk heel generieker dan de titel doet vermoeden. Nu heb ik op dit moment nog geen beschikking over VDSL2 maar ben al wel bezig dit voor te bereiden. Het grote voordeel van deze setup , in mijn ogen, is dat je er in security op vooruit gaat. In plaats van afhankelijk te zijn van een firmware update kan je nu bijv OpenBSD gebruiken wat een stuk beter onderhouden wordt. Wat ik me afvraag is wat de extra latency is van deze setup tov van alles in het modem regelen? Ik ben niet gamer die op zoek is naar de laagste ping. Maar ik probeer wel zoveel mogelijk latency te vermijden. Zou voor mij eens willen meten wat de ping is van een client achter de microtik en wat de ping is als het modem weer alles regeld en de client direct aan het modem hangt?
    Door taken te verschuiven van het modem naar een dedicated device zal je ook veel minder snel tegen performance problemen aanlopen. Je kan daar de hardware steeds upgraden indien gewenst. Het enige wat jammer is van die vigor 130 is dat het maar een poort heeft. Ik heb namelijk twee redundante gateway’s die elk direct zijn aangesloten op het modem (met 4 poorten). Upgrades van de gateways zorgen niet voor onderbreking van de services. Maar deze opzet is al weer 8 jaar oud. En de latency is goed meetbaar.

    Bijvoorbaat dank

    • Het is inderdaad interessant om (verschillen in) die latency te onderzoeken, helaas heb ik op dit moment weinig tijd.
      Dat die Vigor 130 maar één poort heeft is voor mij juist geen bezwaar. Ik laat het echte werk toch door de router erachter doen.

  5. Voor iedereen die iptv werkend wil krijgen op xs4all met mikrotik.
    Hier onder de handleiding.

    Ik ga hier uit van een routerboard 750GL

    Ik ga uit van eth5 als link naar de tv’s.

    ga naar de webinterface
    klik op interfaces.
    klik dan op ether5-slave-local
    Pas de arp aan naar: arp-proxy
    en master-port naar: none
    Klik daarna op apply.

    Ga dan naar interfaces
    add new
    VLAN
    Name: tv
    arp: proxy-arp
    VLAN ID: 4
    Interface: ether1-gateway

    Klik vervolgens op bridge.
    add new
    Name: tv bridge
    arp: proxy-arp
    Protocol mode: none
    Klik dan op apply

    Klik daarna op ports.
    Klik op add new:
    Interface: TV
    Bridge: TV Bridge
    Klik op apply.

    Klik weer op add new.
    Interface: ether5-slave-local
    Bridge: TV Bridge
    Klik op apply.

    En je kan tv kijken op het xs4all netwerk met je mikrotik.

    • Hi Michael,

      Heb je dit in combinatie met VDSL of glas van xs4all? Ik krijg het niet werkend. Ik heb een setup met een vigor130 modem en heb het idee dat deze de IPTV verbinding niet opzet.

      Met een wireshark dump (switch ertussen) zie ik de DHCP request naar de vigor gaan, zonder ooit antwoord te krijgen. Hetzelfde, maar dan untagged op de 4de poort op de fritzbox werkt perfect.

      Groet,
      Dennis

  6. Ik heb een Vigor 130 proberen aan te sluiten op de lijn VDSL van XS4All, helaas krijgt mijn router daar achter geen verbinding, ondanks de passthrough.
    Om te testen heb ik de passthrough uit gezet om te zien of de Vigor alles netjes afhandeld, maar er lijkt geen verbinding met XS4all opgebouwd te worden.

    Ik kon ook niet vinden hoe ik de VLAN6 kon aanzetten.

    Heb jij enig idee?

    • Lukt het wel met de Fritz!Box van XS4ALL?
      Als je de Vigor al niet werkend krijgt zónder passthrough, zal het zeker niet gaan lukken mét. Kijk dus eerst of je het in een normale opstelling werkend kunt krijgen, dus met je PC direct op de Vigor aangesloten. In dat geval moet je bij “General Setup” de “VLAN Tag Insertion” enabelen en op 6 zetten. Vervolgens bij de PPPoE instellingen niet vergeten een username en wachtwoord in te vullen. (Dit hoeft niet je echte username en wachtwoord te zijn.)

      • Ik heb zelf nu een ASUS RT-68u draaien achter mijn Fritzbox 7360. De router op poort 1 zetten van de Fritzdoos, daar een exposed host aan koppelen (vergeet geen statisch IP te geven aan de router voor de zekerheid). Vervolgens de DHCP server van de Fritz uitzetten bij:

        Home network -> Network -> De knoppen IPv4 adresses en IPv6 adresses -> Disable DHCP server.

        Sindsdien zit ik zonder problemen op de Asus en de Fritzbox stoort niet meer met poortengezeur en dergelijke.

      • Hoewel ik het zelf nog niet geprobeerd heb, zijn er een aantal websites waarop aangegeven word dat ook de Fritzbox in bridge mode te zetten is. Dit vergt echter wel veel extra werk (lees het kan niet via de webinterface gedaan worden).

  7. Hoi Harold,

    Ik heb, met dank aan jou setup, mijn RB951G-2HnD werkend gekregen op mijn xs4all VDSL lijn, ook doormiddel van de Vigor 130.

    De volgende stap is nu IPTV van xs4all. de add-on die michael hierboven beschrijft werkt niet voor mij.

    Moet ik wellicht vlan 4 geforceerd over de PPPoE sessie heen laten lopen?

    • Dat lijkt me niet. Waar het om gaat is dat je een nieuwe VLAN-interface met ID 4 aanmaakt, op de ethernetinterface. Vervolgens moet je deze bridgen met een aparte poort op je router, die geen slave-poort is, geen IP-adres heeft en geen DHCP-server heeft.

        • Ik kan niets geks ontdekken. Het ziet er ok uit, maar is het blijkbaar niet. Enige wat ik nog kan verzinnen is met Wireshark een capture doen bij een werkende opstelling en dat vergelijken met wat je nu hebt. Daar zal dan toch wel een aanwijzing in moeten zitten.

          • Bedankt voor de controle. Met een wireshark capture heb ik kunnen constateren dat er op vlan 4 een DHCP request naar de Vigor 130 wordt gestuurd. Daarna is het akelig stil. Heb jij enig idee hoe ik in de vigor 130 kan nagaan wat er fout gaat?

  8. Ipv6 config zoals hierboven beschreven staat werkte voor mij ook niet.
    Ik heb de config iets aangepast en toen werkte het wel.
    Vervang dit 2001:db8:1234 naar je eigen ipv6 blok.
    Ik heb hier hetvolgende op toegepast:

    /ipv6 dhcp-client
    add add-default-route=yes interface=pppoe-xs4all-inet pool-name=\
    xs4all-v6prefix pool-prefix-length=62 use-peer-dns=no

    /ipv6 address
    add address=2001:db8:1234:1::1/64 advertise=yes eui-64=no interface=\
    ether2-werkkamer
    add address=2001:db8:1234:2::1/64 advertise=yes eui-64=no interface=\
    bridge-dmz

    /ipv6 firewall filter
    add chain=input protocol=icmpv6
    add chain=input connection-state=established
    add chain=input connection-state=related
    add chain=input comment=ntp-service dst-port=123 limit=10,5 protocol=udp
    add chain=input comment=”DHCPv6-prefix ontvangen van XS4ALL” dst-port=546 \
    protocol=udp src-address=fe80::/10
    add action=reject chain=input in-interface=pppoe-xs4all-inet reject-with=\
    icmp-admin-prohibited
    add action=reject chain=input in-interface=vlan-xs4all-inet reject-with=\
    icmp-admin-prohibited
    add action=reject chain=input in-interface=ether9-vdsl reject-with=\
    icmp-admin-prohibited

    En dan de belangrijkste:

    /ipv6 firewall mangle

    chain=forward action=change-mss new-mss=1232 passthrough=yes protocol=tcp tcp-flags=syn in-interface=pppoe-xs4all-inet tcp-mss=1411-65535 log=no log-prefix=””

    chain=forward action=change-mss new-mss=1232 passthrough=yes protocol=tcp tcp-flags=syn out-interface=pppoe-xs4all-inet tcp-mss=1421-65535 log=no log-prefix=””

  9. Ik maak gebruik van Vodafone vdsl en wil hetzelfde voor elkaar krijgen. Alleen maakt Vodafone volgens mij geen gebruik van pppoe en vlan200. Iemand die dit al aan de gang gekregen heeft ?

    • Ik heb deze instructie gebruikt om een vergelijkbare setup voor elkaar te krijgen op een Tele2 verbinding. Ik vermoed dat het op een Vodafone verbinding ook aan de gang te krijgen is. De uitdaging zal meer zitten in uitzoeken wat de settings voor de Vodafone verbinding moeten zijn. Het Draytek modem ondersteund in ieder geval de meest gangbare protocollen (PPPoE en MPoA (RFC1483/2684)). Ik vermoed overigens dat Vodafone ook gewoon PPPoE gebruikt.

      Let wel dat Vodafone op hun website aangeven dat ze Bridge Mode NIET ondersteunen dus dat word experimenteren vrees ik.

  10. Wat betreft het mekaar in de haren zitten van de PPPoE client van de
    Draytek en van de MikroTik: dit komt omdat er in bovenstaande handleiding
    ten onrechte staat dat je de PPPoE op enable moet zetten.
    Deze moet gewoon op disable staan, dan zal de Draytek niet meer proberen
    de PPPoE op te zetten, en alleen de PPPoE vanaf de MikroTik doortunnelen.

    • Interessante tip! Zodra ik PPPoE/PPPoA-client op “disable” zet, kan ik op dat scherm echter geen enkele instelling meer wijzigen. Doen de waarden bij VPI/VCI er dan niet meer toe? Is het dan voldoende om bij General Setup de VLAN-tag op 6 te zetten?

      • VPI/VCI doen er zowizo niet toe bij VDSL.
        Ik heb net gisteren een nieuwe FW gedownload die net was uitgekomen, en nu is het weer iets anders.
        Ik heb nu de VLAN tag insertion AAN staan (op 6), en de VLAN in de MikroTik weg gehaald. PPPoE dus rechtstreeks op de interface.
        PPPoE in de Draytek nu toch maar weer op Enabled, en het relaying vinkje aan, de info rechts mbt account wordt dan grayed out dus ik neem aan dat hij nu niet meer stiekem probeert PPPoE te starten.
        De MTU kun je dan op 1500 zetten (nieuwe feature van deze FW) en je hebt eindelijk geen gezeur meer met net niet passende pakketjes! Dus de clamping kan ook weg.
        Het grappige is dat met deze FW en de PPPoE op Disabled het nog wel werkt als voorheen, maar dan gaat de router packets droppen als ze langer dan 1496 zijn ipv langer dan 1500.
        (dat was eigenlijk de reden dat ik de VLAN tagging naar de Draytek verplaatst had omdat ik daar de issue verwachtte maar dat was het niet. ik denk dat de Draytek de LAN MTU alleen verhoogt als de PPPoE client Enabled staat en de MTU op 1500)

  11. Ik heb sinds kort een CCR1009 en wil ook mijn XS4ALL (VDSL2) in bridge zetten.
    Wat ik mij nu afvraag, en eigenlijk nergens terug ziet komen, is:
    Hoef je nu nergens een DHCP-client op VLAN6 (pppoe) te zetten?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *