[Guide] Skaffa IPv6-tunnel med Unifi USG
Hej! Jag är en stor förespråkare av IPv6. ISP:er i sverige har legat på latsidan medan IPv4-adresserna sinar, och istället för att skynda på utrullningen av IPv6 har de börjat införa CGNAT och operatörer som Tele2 och Bredband2 har stängt ner sina 6rd-tunnlar...
Det finns trots det möjlighet för alla att köra IPv6 idag ändå. Det finns flera leverantörer av 6in4-tunnlar, en av de mest kända är nog Hurricane Electric och deras tunnelbroker.net.
De flesta vanliga konsumentroutrar har ett grafiskt UI för att konfigurera tunnlar, något som Unifi controller av någon outgrundlig anledning saknar. Stödet finns dock i både hårdvara och mjukvara på själva USG-enheten. Den här guiden visar dig hur du konfigurerar en 6in4-tunnel på din USG.
Grundkrav
Du har tillgång till att skriva en config-fil på din Unifi controller
Du har en riktig publik IPv4 från din operatör. Om du är bakom CGNAT måste du först kontakta din operatör och be om ett publikt ip, passa även på att tjata om att de borde ge dig IPv6 (utan efterfrågan kommer inget att hända). Du vet att du är bakom CGNAT om din routers IP ligger i spannet 100.64.0.0 - 100.127.255.255
Du tillåter ICMP-pings i din brandvägg (https://www.eddgrant.com/blog/2020/10/01/enabling-wan-icmp-pi...)
Du har tillgång till en 6in4-tunnel (den här guiden utgår ifrån att du har en tunnel från tunnelbroker.net, men det bör funka med alla 6in4-tunnlar)
Låt oss börja
Steg 1 är att skapa själva tunnel-interfacet på din USG, detta finns det som sagt inget UI för, så här är det json-filer som gäller
På enheten som kör din Unifi-controller: Leta upp din controllers data-folder, på en normal Linux-installation ligger den under /var/lib/unifi/data. Där inne finns sedan en map som heter "sites" och i den mappen ligger en map som har samma namn som din "site"-namn i Unifi-controllern, som standard heter den "default".
Så i /var/lib/unifi/data/sites/default ska vi skapa en config.gateway.json med detta innehåll:
{
"interfaces": {
"tunnel": {
"tun0": {
"description": "6in4 tunnel",
"address": [
"<Client IPv6 Address>"
],
"encapsulation": "sit",
"firewall": {
"in": {
"ipv6-name": "WANv6_IN"
},
"local": {
"ipv6-name": "WANv6_LOCAL"
},
"out": {
"ipv6-name": "WANv6_OUT"
}
},
"local-ip": "<Client IPv4 Address>",
"remote-ip": "<Server IPv4 Address>",
"mtu": "1480",
"multicast": "disable",
"ttl": "255"
}
}
},
"protocols": {
"static": {
"interface-route6": {
"::/0": {
"next-hop-interface": {
"tun0": "''"
}
}
}
}
}
}
Därefter måste du göra så att din USG laddar den nya konfigurationen:
I Unifi-controller, logga in -> gå till listan med enheter -> klicka på din USG -> Klicka på Device -> Klicka på Manage -> Trigger Provision
Vänta på att konfigurationen laddas, detta bör bara ta någon minut. Om enheten fastnar så kan man helt enkelt ta bort config.gateway.json och starta om USG. Du kan se eventuella problem med konfigurationen genom att läsa loggen som ligger under /var/log/unifi/server.log.
Valfritt: I det här läget kan du SSH:a in på din USG med SSH och verifiera att själva tunneln fungerar:
$ ip -6 addr
10: tun0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480
inet6 <Client IPv6 Address> scope global
valid_lft forever preferred_lft forever
inet6 fe80::51e5:59a1/128 scope link
valid_lft forever preferred_lft forever
$ ip -6 route
<Client IPv6 Address Prefix> dev tun0 proto kernel metric 256
fe80::51e5:59a1 dev tun0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth1 proto kernel metric 256
fe80::/64 dev ifb_eth0 proto kernel metric 256
default dev tun0 proto zebra metric 1024
Du kan även testa att pinga exempelvis googles DNSv6-server:
$ ping6 2001:4860:4860::8888
PING 2001:4860:4860::8888(2001:4860:4860::8888) 56 data bytes
64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=121 time=33.0 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=121 time=31.8 ms
Nu behöver vi bara se till att ditt lokala nätverk får IPv6-addresser. Detta kan vi tack och lov göra genom unifi-controller UI.
Navigera till Settings -> Networks -> Klicka på falafelmenyn (tre vertikala prickar) -> Edit -> Advanced -> Scrolla hela vägen ner till IPv6 Interface Type och välj "Static".
Fyll i följande:
IPv6 Gateway Subnet: <Routed /64> fast sätt en 1a före /64: Exempel: 2001:470:1234:1234::1/64
IPv6 RA: Ska vara påslaget
IPv6 RA Priority: High
IPv6 RA Valid Lifetime: 86400
IPv6 RA Preferred Lifetime: 14400
DHCPv6: Avstängt
DHCPv6/RDNSS DNS Control: Manual
DHCPv6/RDNSS Name Server: Vilka DNSv6-servrar du vill.
Google DNSv6: 2001:4860:4860::8888 och 2001:4860:4860::8844
Cloudflare DNSv6: 2606:4700:4700::1111 och 2606:4700:4700::1001
Kort efter att du har sparat bör alla dina klienter ha fått en IPv6-address. Grattis och välkommen till 2000-talet!