Sain äskettäin IPv6-yhteyden kotiini, joten halusin luonnollisesti lisätä IPv6-tuen palvelimelleni. Törmäsin muutamiin ongelmiin, joita en löytänyt dokumentoituna yhdessä paikassa, joten tässä löytämäni ratkaisu.

Ongelma

Huomasin nopeasti, että Internet-palveluntarjoajani ei ole toteuttanut IPv6-tukea "oikein". En saa /56 prefixiä prefix delegoinnilla vaan /64-prefixin, jota ei voi jakaa edelleen aliverkkoihin. Tämä pätee kaikkiin mobiilioperaattoreihin Suomessa, ja koska en voi saada kiinteää yhteyttä nykyiseen osoitteeseeni niin tämän on riitettävä.

Prefix delegoinnin puute tarkoittaa, että minun on asetettava RA ja NDP relay tilaan OpenWRT:ssä, eikä minulla ole kontrollia IPv6-osoitteisiin jotka laitteeni saavat. Tämä puolestaan tarkoittaa, että en voi luoda pysyviä palomuurisääntöjä näiden osoitteiden perusteella, koska ne voivat muuttua milloin tahansa.

Muutaman viikon ajan selvisin manuaalisesti muuttamalla palomuurisääntöjä aina, kun prefix muuttui, mutta se ei ollut riittävän hyvä ratkaisu pitkässä juoksussa, koska minulla on paljon palomuurisääntöjä.

IPv6 SLAAC privacy extension käytöstä poistaminen

Vaikka en saa ennustettavaa prefixiä, voin saada ennustettavan suffixin poistamalla käytöstä IPv6 SLAAC:n Privacy Extensions. Näin suffix (host osa) johdetaan laitteen MAC-osoitteesta ja se pysyy aina samana.

Privacy Extensions on olemassa syystä. Se lisää yksityisyyttä generoimalla osoitteen host osan satunnaisesti ja vaihtamalla osoitetta aika-ajoin. En usko, että tämä on ongelma palvelimellani, koska se on joka tapauksessa avoin julkiverkkoon. Privacy Extensionsin pääasiallinen tarkoitus on se, että mobiililaitteita ei voida seurata verkkojen välillä ja palvelimeni pysyy luonnollisesti aina samassa verkossa. On hyvä tiedostaa, että tämä käytännössä tekee MAC-osoitteestasi julkisen, mutta en henkilökohtaisesti näe siinä ilmeistä riskiä.

Käytän NetworkManageria palvelimellani. Voit poistaa yksityisyyden laajennukset käytöstä etsimällä verkkoyhteytesi asetukset hakemistosta /etc/NetworkManager/system-connections/. Omalla palvelimellani se oli tiedosto Wired connection 1.nmconnection. Lisää/muuta seuraavat rivit [ipv6]-osioon:

[ipv6]
addr-gen-mode=eui64
method=auto
ip6-privacy=0

Tämän jälkeen voit joko käynnistää NetworkManagerin tai koko koneen uudelleen. Sen jälkeen tietokoneellasi pitäisi olla uusi IPv6 osoite.

Logiikkaa, jolla IPv6-osoite nyt lasketaan, kutsutaan EUI-64:ksi. Löysin loistavan työkalun sen testaamiseen ja paremmin ymmärtämiseen: EUI-64 calculator.

Dynaamisen prefixin edelleenlähetys

Löysin, että OpenWRT:ssä voi asettaa osan palomuurisäännön kohdeosoitteesta dynaamiseksi. Tätä tekniikkaa kutsutaan dynaamisen prefixin edelleenlähetykseksi. Käsittääkseni se on OpenWRT spesifinen ominaisuus, joten tämä syntaksi ei siis todennäköisesti toimi muissa palomuureissa. Tämän tekniikan avulla voimme käyttää staattista host osaa palomuurisäännön kohdeosoitteena, jonka asetimme palvelimelle edellisessä osassa.

Palvelimen IPv6-osoite

2001:14bb:8ad:6b:f279:59ff:fe65:f9e4

Palomuurisäännön kohdeosoite

::f279:59ff:fe65:f9e4/-64

Tässä näet palvelimeni nykyisen IPv6-osoitteen ja siitä johdetun palomuurisäännön kohdeosoitteen. /-64 kertoo palomuurille, että se jättää huomioimatta osoitteen ensimmäiset 64 bittiä ja tarkastelee vain osoitteen viimeisiä 64 bittiä, jotka ovat host osa.

Lisätietoja palomuurin asetuksista löydät OpenWRT wikistä.