===== OpenWrt bij Freedom Internet VVDSL2 met een DrayTek Vigor 165-modem en een TP-Link TL-WDR4300-router =====
Deze pagina is ook beschikbaar in het [[manuals:networking:openwrt-freedom-vdsl|Engels]].
----
Dit artikel beschrijft hoe ik VDSL heb ingesteld voor [[https://freedom.nl/|Freedom.nl]], terwijl ik gebruik maak van mijn eigen modem en router. Ik heb deze setup bij mijn ouders thuis. Ze gebruiken alleen de internetverbinding; ze kijken geen "ouderwetse" TV, en ze hebben ook geen vaste telefoon. Dus het netwerk is relatief eenvoudig.
Ik heb ervoor gekozen om Freedom's Fritzbox niet te ontvangen, omdat ik niet de intentie had die ooit te gebruiken. Die dingen bieden **veel** te veel functionaliteit naar mijn zin, zonder enige broncode vrij te geven. Alles dat ik wil is een dom modem dat zo min mogelijk doet. Het moet de DSL omzetten naar een ethernet-trunk, en verder niets.
Gelukkig is Freedom één van de weinige ISP's in de wereld die haar klanten geen verplichte apparaten opdringt. Sterker nog, ze laten je tijdens het bestelproces kiezen of je hun hardware wilt gebruiken, en geven je zelfs een kleine korting als je dat niet wilt.
Ik ben een uitgesproken voorstander van modem- en routervrijheid, dus ik ben het niet eens met de huidige situatie dat bijna alle ISP's hun klanten modemrouters opdringen. De Duitsers noemen dit **[[https://de.wikipedia.org/wiki/Routerzwang|Routerzwang]]**. (Natuurlijk hebben zij er een woord voor...)
Als modem gebruik ik een [[https://tweakers.net/pricewatch/1312228/draytek-vigor-165-annex-a.html|DrayTek Vigor 165]], welke ik als een volledig transparante bridge heb geconfigureerd, wat betekent dat hij zelf geen internettoegang heeft. Jammer genoeg lijken er geen FOSS DSL-modems te bestaan, dus dit lijkt het beste compromis te zijn. Ik vertrouw de Vigor helemaal niet, maar hij kan in ieder geval volledig gesandboxt worden.
Al het echte werk wordt gedaan door mijn vertrouwde [[https://www.tp-link.com/nl/home-networking/wifi-router/tl-wdr4300/|TP-Link TL-WDR4300]] die [[https://openwrt.org/|OpenWrt]] draait. Omdat dit apparaat een Atheros AR9344-chipset heeft, heeft hij geen blobs nodig om te werken.
----
\\
==== Het DrayTek Vigor 165-modem configureren ====
De Vigor 165 moet ingesteld worden op **MPoA Full Bridge Mode**. In tegenstelling tot de Vigor 130, welke in **Bridge Mode** moest worden gezet om je router de 802.1Q VLAN-tags af te laten handelen, werkt dit helemaal niet met de Vigor 165. Sterker nog, ik ben erachter gekomen dat **Bridge Mode** op de Vigor 165 //alle 802.1Q-headers stript//, dus in plaats daarvan moet **Full Bridge Mode** worden gebruikt.
In tegenstelling tot wat DrayTek's documentatie beweert, moet er //helemaal geen VLAN tag insertion door de Vigor worden gedaan//. Alles kan uitgeschakeld blijven, en de OpenWrt-router kan het internetverkeer taggen en tegelijkertijd nog steeds in staat zijn om de Vigor's webinterface en SSH-server te benaderen, mits juist geconfigureerd.
In de volgende stappen zal ik beschrijven hoe ik de Vigor 165 als transparante bridge heb ingesteld. Ik wilde dat de volgende zaken zouden werken:
* De LAN 1-poort op de Vigor 165 zou effectief een ongefilterde ethernet-trunk moeten zijn;
* De Vigor 165 moet zelf niet in staat zijn om het internet te bereiken: aangezien ik geen broncode heb, kan hij niet worden vertrouwd;
* De OpenWrt-router moet de 802.1Q-tags en de PPPoE-encapsulatie afhandelen;
* De OpenWrt-router moet [[https://tools.ietf.org/html/rfc4638|RFC 4638]] / Baby Jumbo Frames kunnen gebruiken;
* De Vigor's webinterface en SSH-server moeten nog benaderbaar zijn vanaf het LAN op de OpenWrt-router;
* De Vigor's klok moet over NTP gesynchroniseerd worden vanaf mijn LAN;
* Alle andere functionaliteit van de Vigor 165 moet volledig worden uitgeschakeld.
\\
=== VLAN-tagging instellen ===
VLAN-tagging moet **niet** door de Vigor worden gedaan. Dus zet onder **Internet Access** > **General Setup** alle drie de keuzevakken op ''Disable''.\\
Ik heb ook meteen **DSL Mode** op ''VDSL2 Only'' gezet omdat ik er toch was, maar dat zou niet uit moeten maken.
Sla de instellingen op, maar reboot nog niet.
\\
\\
=== MPoA full bridge mode instellen ===
Zet onder **Internet Access** > **MPoA / Static or dynamic IP** de optie **MPoA (RFC1483/2684)** op ''Enable'' en vink het vakje voor ''Enable Full Bridge Mode'' aan.
Terwijl ik er toch was, heb ik ook meteen de ADSL-configuratie goed ingesteld, maar dat is niet nodig voor VDSL. Freedom heeft haar instellingen [[https://freedom.nl/helpdesk/internet/algemene-instellingen|hier]] gedocumenteerd.
Sla de instellingen op, maar reboot nog niet.
\\
\\
=== Het LAN instellen zodat het modem nog kan worden bereikt ===
Verander onder **LAN** > **General Setup** de optie **1st IP Address** naar ''192.168.200.1'' en zet **DHCP Server configuration** op ''Disable''.\\
Op het **LAN 1 IPv6 Setup**-tabblad zet je **DHCPv6 Server** op ''Disable Server''.
Sla de instellingen op, maar reboot nog niet.
\\
\\
=== NTP-tijdsynchronisatie instellen ===
Omdat de Vigor zelf geen internettoegang zal hebben, moet hij zijn NTP-klok van de OpenWrt-router krijgen.
Zet onder **System Maintenance** > **Time and Date** de optie **Time Server** op ''192.168.200.2''.
Sla de instellingen op, maar reboot nog niet.
\\
\\
=== Jumbo Frames inschakelen ===
Dit kan niet via de GUI worden gedaan, dus we moeten naar de Vigor SSH'en:
ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -o Ciphers=+aes128-cbc admin@192.168.1.1
Zet vervolgens Jumbo Frames aan:
port jumbo on
port jumbo 9022
\\
=== Het modem herstarten ===
Ga naar **System Maintenance** > **Reboot** en selecteer ''Using current configuration''. Klik dan ''Reboot Now''-knop.
\\
\\
----
\\
==== De OpenWrt TL-WDR4300-router configureren ====
De OpenWrt-router zal als het daadwerkelijke endpoint in het IP-netwerk dienen. Alle pakketten zullen onveranderd door het modem gaan.
Dit betekent dat de router zal moeten werken als VLAN-switch, PPPoE-client, NAT-gateway, DHCPv4- en DHCPv6-server, een IPv6 RA-server voor SLAAC en een caching DNS-server. En hij zal ook als NTP-server moeten dienen zodat de Vigor zijn klok kan instellen, waarvoor we een apart (untagged) VLAN moeten maken. Op dat VLAN kunnen we ook de Vigor's configuratiepagina's en SSH-server benaderen.
\\
\\
=== VLAN's instellen ===
Als eerste moeten we de switch configureren. Verander in ''/etc/config/network'' het onderste gedeelte ''config switch_vlan'' als volgt:
# Dit is het LAN-VLAN, dat de vier gele LAN-poorten verbindt
config switch_vlan
option device 'switch0'
option vlan '1'
option ports '0t 2 3 4 5'
# Dit is het niet-getagte WAN-VLAN om de Vigor te benaderen via de blauwe WAN-poort
config switch_vlan
option device 'switch0'
option vlan '2'
option ports '0t 1'
# Dit is het getagte WAN-VLAN om het internet te benaderen, door de Vigor heen
config switch_vlan
option device 'switch0'
option vlan '6'
option ports '0t 1t'
\\
\\
=== De WAN-interfaces instellen ===
Hogerop in ''/etc/config/network'' verander je de ''wan''- en ''wan6''-interfaces als volgt.
# Dit zet de MTU van de ethernet-adapter op 1508, zodat we MTU 1500 in de PPPoE-tunnel kunnen gebruiken
config device
option name 'eth0'
option mtu '1508'
# Zet de MTU van LAN op 1500
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0.1'
config interface 'lan'
option device 'br-lan'
option mtu '1500'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
# Dit is de niet-getagte interface om met de Vigor te praten
config interface 'modem'
option device 'eth0.2'
option mtu '1500'
option proto 'static'
option ipaddr '192.168.200.2'
option netmask '255.255.255.0'
option force_link '0'
# Dit is het getagte WAN-VLAN om het internet te benaderen, door de Vigor heen
# Zet de MTU op 1508, omdat PPPoE 8 bytes overhead heeft
config interface 'wan'
option device 'eth0.6'
option mtu '1508'
option proto 'pppoe'
option username 'fake@freedom.nl'
option password '1234'
# Niet noodzakelijk, maar ik heb graag extra logging
option pppd_options 'debug'
Let op dat je de ''wan6''-interface volledig verwijdert, aangezien die niet nodig is. De PPPoE-tunnel zal automatisch een virtuele IPv6 WAN-interface aanmaken.
\\
\\
Voeg in ''/etc/config/dhcp'' de ''modem''-interface toe:
config dhcp 'modem'
option interface 'modem'
option ignore '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
\\
\\
=== De firewall instellen ==
Voeg in ''/etc/config/firewall'' de ''modem''-zone toe en sta toe dat de ''lan''-zone er toegang toe heeft:
config zone
option name 'modem'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option network 'modem'
config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option network 'wan'
config forwarding
option src 'lan'
option dest 'modem'
config forwarding
option src 'lan'
option dest 'wan'
\\
\\
=== De NTP-server instellen ===
Voeg in ''/etc/config/system'' de ''enable_server''-parameter toe:
config timeserver 'ntp'
option enabled '1'
option enable_server '1'
list server '0.openwrt.pool.ntp.org'
list server '1.openwrt.pool.ntp.org'
list server '2.openwrt.pool.ntp.org'
list server '3.openwrt.pool.ntp.org'
\\
Voeg in ''/etc/config/firewall'' een regel toe om inkomend NTP-verkeer toe te staan:
config rule
option name 'Allow NTP from modem'
option src 'modem'
option src_ip '192.168.200.1'
option family 'ipv4'
option dest_port '123'
option proto 'udp'
option target 'ACCEPT'
\\
\\
=== De instellingen toepassen ===
Tenslotte herstart je een aantal daemons:
service network restart
service firewall restart
service dnsmasq restart
service odhcpd restart
service sysntpd restart
Of simpelweg:
reboot
\\
\\
==== Succes? ====
Als je alles correct hebt gevolgd, zou je nu een /32 IPv4-adres en een /48 IPv6-prefix op je ''pppoe-wan''-interface moeten ontvangen.
Verbonden LAN-clients zouden een DHCPv4-lease, een DHCPv6-lease en een SLAAC-adres moeten ontvangen.
Je zou je Vigor op [[http://192.168.200.1/]] moeten kunnen benaderen, en je Vigor zou de tijd moeten kunnen oppikken van je router.
\\
\\
----