TL;DR; Ik krijg IPv6 niet lekker aan de praat met een OpenWRT router die een Wireguard server draait voor een laptop en telefoon.
Hoe zijn wij hier dan beland?
Hoera, het is vakantie, dus we trekken de lanen op, de paden in. Eindelijk staat die #$$* tent dan een beetje redelijk en is het zondag. Verder heeft dat weinig betekenis, maar vrouwlief wil dan graag haar favoriete programma inzake boeren en daaraan gekoppelde hoe…danook verschillende vrouwen kijken. Dit kan via NPO start, waar we als hard-werkende burgers toch allemaal voor betalen, niet waar? Welke buitenlander zit er nu te wachten op Yvonne en/of haar Lada, maar goed, nadat de WiFi in een handomdraai is geactiveerd … oh ja. Je bent natuurlijk niet meer in NL, en dus mag je niet naar dat programma kijken. Probleem…
Omdat deze situatie allerminst bevordelijk is voor een goede start van de vakantie, en ik nog een paar uur had om de boel “te fiksen” (waarvan ik overigens nog steeds niet begrijp waarom dit mijn schuld is) snel mijn Squid proxy op mijn servertje thuis opgepookt, een gat in de vuurmuur geschoten, en hiermee zo pakweg een half uurtje voor het eind van de “deadline”, een geirriteerd begin van de vakantie voorkomen. Crisis afgewend. Toch?
Welja, maar wat mij natuurlijk niet lekker zat, is dat ik nu een open proxy had draaien, dus daar de volgende dag maar even een gebruikersnaam/wachtwoord op gegooid. Eerst via Basic, maar omdat de communicatie met de proxy niet via TLS verloopt (dat lijkt een unicum te zijn) dat maar lichtelijk opgewaardeerd naar Digest, wat beter is, maar zeker niet “OK”. Met deze proxy kunnen Firefox en macOS/iOS prima overweg, wat een heleboel “helpt”, maar bleek al vrij snel dat “kritieke apps” zoals instagram het niet doen. Die kunnen waarschijnlijk niet inloggen ofzo. Net als met de Threema messenger app, die wel de proxy instelling ziet, maar inloggen niet ondersteund. (Voor Threema heb ik dan ook direct een bug ingeschoten, maar nooit meer wat van gehoord, toch jammer, betaal je dan voor…)
Hoedanook, proxy was leuk, en werkte voldoende om de eerste behoefte te bevredigen, maar iets sterkers zou behoorlijk beter zijn.
Wireguard op OpenWRT
Doordenkend over hoe ik de proxy setup kon verbeteren, en vooral voor alles kon laten werken (dingen als mail, rsync, etc.) leek mij dat een VPN oplossing de volgende stap was. Gelukkig stond de WiFi toe om op welke poort dan ook te verbinden, dus hoefde ik geen trucen uit te halen via poort 80 of 443. Dat was eigenlijk bij de proxy al het geval, maar hoedanook een fijne test-omgeving. Na een kerkje hier en een leuk dorpje daar, besloot ik dan ook om de Wireguard tunnel die ik al thuis gebruikte om 3 verschillende internet aansluitingen aan elkaar te koppelen, uit te breiden met een “peer” voor mijn laptop en telefoon.
In mijn simplistische visie (die lang en goed werkt) heb ik de internet aansluiting van mijzelf, ouders en schoonouders aan elkaar geknoopt. Eigenlijk, ik heb de internet routers die gebruikt worden (en dus geen fritzdozen zijn) op een XS4ALL of Freedom verbinding zo ingericht met OpenWRT dat er een tunnel is opgebouwd die een IPv4 prive netwerk doorgeeft, waardoor een transparant virtueel netwerk (hè hè, VPN) ontstaat en ik zo de modems en WiFI APs die allen OpenWRT draaien kan onderhouden via de VPN tunnel (met een script), en ook metrieken per minuut kan opsturen naar mijn servertje thuis, zodat ik op een regenachtige zaterdagmiddag mij heerlijk in velerlei grafieken kan verdiepen via Graphite/Grafana. (Je leert heel veel bijvoorbeeld over wat ping-tijden met een KPN4ALL migratie doen.)
Dus… ik dacht doe even een “peer” voor mijn laptop, dan gebruik ik de wireguard app om een VPN te definieren, en jahoor, dat werkte, voor IPv4. Dat wil zeggen, een /29 toegewezen, waaruit de laptop 1 IP gebruikt, die statisch ingesteld op de laptop, en daarmee kan ik de routering prima in orde krijgen: laptop heeft toegang tot het interne netwerk (alsof het thuis op de niet-gasten-wifi zit, en begint zichzelf te backuppen) en als ik de default gateway over de Wireguard tunnel stuur dan komt al mijn verkeer van de tent via de wifi gewoon vanaf mijn thuis-adres… zolang het maar IPv4 is. Kortom, dat deel gehaald, maar een beetje … ouderwets.
IPv6 en Wireguard
Ik wilde meer. Terwijl de rest van het gezin het al lang best vond, dacht ik: “maar nu moet het helemaal kunnen werken.” En dus prutste ik verder. IPv6 dat was toch niets meer dan een ander adres, toch? Nou niet helemaal natuurlijk. Maar op de manier waarop ik een IPv4 prive adres wist door te lussen, kon ik ook een IPv6 subnet doorlussen. Met een statisch adres, <prefix>:<vpn-prefix>::<nummer>
kreeg ik ook IPv6 werkend. Helemaal blij, totdat ik me realiseerde dat ik nu vrijwel alle features van IPv6 kwijt was. Men kon me nu zeer eenvoudig tracken. Ik gebruikte immers altijd hetzelfde IPv4 en IPv6 adres. De hele boel met tijdelijke adressen enzo werkte niet meer.
Dat leek me toch niet de bedoeling, dus na een hoop gegoogel vond ik http://www.makikiweb.com/ipv6/wireguard_on_openwrt.html en klooide hiermee. Maar ik krijg het maar niet voor elkaar.
Hoe doe je dit?
Wat ik wil, is een IPv6 prefix delegeren over een Wireguard tunnel. De instructies van makikiweb werken niet, want het DHCP scherm van OpenWRT 21.02.03 hebben “server” mode in grijs voor de wireguard interface. Kortom dat werkt niet. Maak ik er een nieuwe interface bovenop (zoals zij zeggen), dan kan ik wel RA/server selecteren, maar werkt het niet, de client ziet geen announcements, zo lijkt het althans. Wireguard is een beetje magie op dit punt, zo kun je in het DNS veld bijvoorbeeld servers en zoekdomeinen invullen.
Nu heb ik thuis twee WiFi netwerken, een voor gasten en een voor prive, maar eigenlijk zou ik alleen het gastennetwerk willen houden en gewoon vanaf mijn laptop altijd de Wireguard VPN aan willen hebben staan om in het prive netwerk terecht te komen. Natuurlijk wil ik dan wel IPv6 een beetje fatsoenlijk kunnen gebruiken.
Het liefst heb ik ook mijn telefoon altijd verbonden met mijn Wireguard VPN. Dat werkt prima voor IPv4, maar ik wil ook IPv6 kunnen doen. Dit moet uiteraard niet in het prive-netwerk terecht komen, dus hier heb ik een aparte Wireguard setup voor die enkel en alleen in het gastennetwerk uitkomt. Dat is bijvoorbeeld vanaf hier in ons tentje nogsteeds beter (het is ook vreemd genoeg sneller), maar bovenal natuurlijk fijn dat er niemand “meekijkt” bijvoorbeeld op DNS niveau.
De uiteindelijke vraag
Heel lang verhaal, dan heel kort: heeft er iemand ervaring met IPv6 en Wireguard, en zoja een idee hoe ik IPv6 temp addresses kan krijgen op de client via de Wireguard tunnel? Of wat dan ook het beste is dat je kan krijgen? Alvast bedankt!