IPv6 i praktiken 28/07/2015

Ett litet privat projekt som växte och till slut blev en rätt bra lösning.

Upprinelsen

Det hela började med att föreningen för bostaden uppgraderade sitt bredband så var och en kunde på 1Gbps bredband via ethernet. Men också full support för IPv6. D.v.s. varje bostad fick en /64 nätmask initialt och om man ville kunde man få en /56 (256 st undernät). Till det fanns även en statisk IPv4 adress. Hade redan en någorlunda genomarbetad lösning med olika undernät där t.ex. mediaenheter har 1, företaget 1. Lagring uppdelad på olika nät utifrån typ av data etc. Till saken hör också att jag vill ha trådat där möjligt, men vill helst inte dra fler nätverkskablar än nödvändigt.

Datalänklagret

Här kom standarden VLAN (IEEE 802.3q) väl till pass som tillåter flera logiska nät att dela på samma fysiska kabel. Jag vill även kunna utnyttja den bandbredd som erbjuds så utrustningen fick väljas därefter. Switchar var relativt lätt. Valde att införskaffa 3 st Netgearswitchar (2 st 8-portars GS108E, 1 st 5-ports, GS105E). Dessa placerades ut i bostaden på strategiska ställen där nätverksberoende utrustning fanns. Till detta fanns några vanliga 1Gbps D-link switchar utan VLAN stöd. En av VLAN switcharna placerades  direkt vid skrivbordet som tillåter direkt uppsättning av experimentnät för utveckling av t.ex. IoT enheter som kräver nätverksaccess. Kan nu även sätta upp portar där som direkt ger rå internetaccess om det skulle behövas.

Med dessa VLAN-switchar kunde jag konfigurera upp ett 'backbone' mellan dem med taggad VLAN trafik och otaggade portar till ändutrustningen. Sedan var det mest att bestämma sig för vilken Level 2 topologi som skulle finnas och ställa in den i IEEE-802.3q inställningarna i switcharna.

Landade bl.a. i följande grupper (har färger som interna namn):

  • Internet (röd).
  • Mediaenheter, telefoner, osäkra enher (orange).
  • DMZ för servers (gul).
  • Arbetsdatorer (grön).

Utöver det är det lätt att lägga till nya logiska nät vid experimentbehov. Den råa internetgruppen är begränsad i normalfallet till enheter som behöver den (brandväggen) men kan slås på om den behövs för experiment.

Hade sedan tidigare 2 olika WLAN routers, en för medie/telefoner och en för arbetsdatorer. Det var tidigare en rätt klumpig uppsättning där arbetsdatorer hade ett eget NAT:at nät bakom medienätet. Det är tyvärr priset av att använda konsumentprodukter som sällan klarar av routing mellan flera subnät, som internet en gång i tiden var tänkt att klara. Dessa WLAN switchar fick nu rollen som rena bryggor mellan en trådlös del och motsvarande trådade grupp. Så ett WLAN för grön och ett för orange zon.

Brandväggen/routern

Så vad administrerar allt detta? Gick tillbaka till en lösning som jag använt förut och som har fungerat bra. Hade innan ena WLAN routern som gränssnitt mot internet (Asus RT-66ac). Den ska vara en av de snabbare på marknaden och ska ha IPv6 stöd. Upptäckte 3 nackdelar:

  • Ska man skicka paket via NAT mot internet trådat, kom jag aldrig över ca 150Mbit/s. På tok för lite.
  • IPv6 stöd fanns. Bara en liten nackdel. De hade 'glömt' aktivera brandväggen så vid inkoppling var det raka rör in till inre delarna (oops). Med IPv6 finns inte vanlig NAT så den adress klienten använder är den man kan använda att anropa den inre datorn utifrån. En brandvägg är ett måste.
  • Som konsumentprodukt fanns inte stödet för att hantera flera nät på insidan. Så efter detta blev den relegerad till att vara brygga för WLAN access med diverse filtrering för att undvika objudna gäster.

Valde istället att köpa in en liten strömsnål PC och installera Linux på den. Valde Shuttle DS47 då den är passivt kyld (inga fläktar, har 2 nätverkskort och en celeron processor). Med 2 st 1Gbit nätverkskort så finns i alla fall en teoretisk möjlighet att nå 1Gpbs genomströmning. Båda dessa portar anslöts till en VLAN switch. Ena uttaget otaggat som tar emot internet, andra kortet skickar taggad trafik direkt på backbonedelen av nätet.

I Linux är det sedan lätt att sätta upp ett antal logiska nätverksenheter kopplade till VLAN grupperna som sedan skickar sina paket på motsvarande fysiska port med 802.3q taggning. Brandvägg blev shorewall. Ett välrenomerat projekt som gör det lätt att skapa brandväggsregler som sedan omvandlar till netfilter regler i Linuxkärnan. Behövs 2 parallella uppsättningar, en för IPv4 samt en för IPv6.

Så med denna uppsättning har jag ett backbone-nät genom bostaden där olika portar på switcharna ställs in att tillhöra ett VLAN nät. Alla interna nät använder sedan brandväggsdatorn som 'default gateway' och den tar hand om routing etc.

DHCP/DNS/NTP etc

En sak man rätt snabbt blir varse med IPv6 är att nu är det i praktiken omöjligt att klara sig utan DNS. Att komma ihåg dessa adresser och skriva in dem är i praktiken så långsamt att det inte är hållbart.

På brandväggen körs demonen 'dnsmasq'. Det är en kombinerad DHCP server samt DNS server. För IPv6 tar den även hand om 'router advertiement' (RA) rollen. För alla normalt sett fasta enheter i nätet har jag satt upp kopplingar från enheternas MAC adresser till egna DNS namn. Dnsmasq hanterar en 'privat' toppdomän kallad 'hemma' så 'nexus4.hemma' blir det namn min mobiltelefon får när den kopplar upp sig på nätverket. På detta sättet kan man klara sig utan statiska IP adresser. Nu upprätthåller jag dessa ändå av gammal vana för IPv4 sidan.

För kopplingen mot leverantören så har jag en /56 tilldelning så varje undernät får en /64, vilket i princip innebär 256 möjliga undernät. Använder själv 3-4 st. För IPv4 är det klassisk NAT:ning med portforwardering där det behövs. Har t.ex. egen epost-server sedan länge som behöver direktaccess.

Fördelar mot förr: Vad har blivit bättre?

IPv6 delen är kul att ha. Även om leverantören inte klarar av att leverera det idag, kan man införa det genom tunnling mot en av många IPv6 leverantörer online. T.ex. https://www.sixxs.net. Det innebär att paketen kommer utifrån som IPv4 men packas upp till IPv6. Sedan är det som om man satt på deras nät så man behöver veta vad man gör så man inte råkar hamna på det öppna internet utan skydd.

En hel del lärdomar.

Windows har bra IPv6 stöd, så till den grad att de ofta föredrar IPv6 till IPv4. Androidenheter plockar gladeligen åt sig IPv6 adresser när de erbjuds. Linux fungerar bra på grundläggande nivå men fortfarande en del brister i högre nivåns verktyg för t.ex. konfigurering. En irriterande detalj är att Debians olika mirrors inte alltid svarar på annonserade IPv6 adresser så det blir rätt mycket timeouts vid 'apt-get update'. Annars är det lite roligt att se Firefox applet '6OrNot' lysa upp med en '6' när man går in på google, facebook, netflix eller annan stor site. Svenska siter är i stort sett uteslutande '4'. Främsta praktiska nyttan är att få kunskap om hur IPv6 fungerar och att ha tillgång till ett fullgott IPv6 nät för t.ex. IoT utveckling.

Mycket flexiblare tilldelning av enheter till olika nätverk. Jag kan ha olika enheter anslutna till olika nät oberoende av var de står. VLAN uppsättningen är den största praktiska nyttan då man helt kan koppla isär frågan om var saker är och vilket nät de ska tillhöra.

Experimentportar vid skrivbordet är trevligt för allmänt utvecklingsarbete.

Sedan, för en gångs skull har jag känslan av 'det bara funkar' mycket oftare nu. De driftavbrott jag upplevt har för det mesta varit 5-10min och följts av ett mail från föreningen angående uppdatering av deras utrustning.

Till slut...

Det blev över förväntan. Frågan är, har man nytta av hastigheten? I vanligt surfande är det klart snabbare, men kanske inte tillräckligt för att motivera arbetsinsatsen. Däremot får jag ofta relativt bra utdelning mot stora tjänster där man utför bulköverföringar. T.ex. köp en programvara på 'Steam' och den börjar laddas ner. Efter ca 30s har de fattat att man kan ta emot data och nedladdningen går med ca 50Mbyte/s. Då gör det inte så mycket att det handlar om 5-10Gbyte data. Även för Google Drive är det trevligt att det uppdateras snabbt.

Så, hur fort blev det? Fick jag någon hastighet? Från bredbandskollen: 949,27Mbit/s ner, 961,18MBit/s upp. Känns ok. :-)