Headscale
Magien som får oppsettet vårt til å kjøre heter Headscale. Det er en VPN-løsning som bruker Wireguard-protokollen. Dette er en selvhosta versjon av Tailscale, som betyr at vi har kontroll på all trafikken selv. I tillegg slipper vi å betale for Tailscale-tjenesten.
Headscale er hosta på VPS-en (Jaffa). Det var vi nødt til å gjøre fordi måten man kobler seg på nettverket er gjennom en URL, og denne URL-en må være kobla opp mot ei statisk IP-adresse. Om denne IP-adressa ikke er statisk, vil koblinga kun fungere helt til adressa endrer seg.
Nyttig å vite
Headscale gjør en del, la oss se på noen av tingene vi har konfigurert.
For at vi skal kunne slippe å huske ip-adressa til orangepien, har vi slått på den innebygde DNS-en til Headscale. DNS-en kan konfigureres på to måter; vi bruker måten som krever en ekstra fil, extra-records.json. Det har vi gjort for å gjøre ting mer oversiktlig.
Her er et eksempel på hva som kan være inne i denne fila:
[
{
"name": "pocketid.private.studenterforpalestina.no",
"type": "A",
"value": "100.64.0.2"
}
]
NB! Verdt å merke seg at vi er nødt til å ha 'private' i sub-domenet. (hvorfor?)
I 99.999 % av tilfellene vil vi sette value til å være
100.64.0.2, da dette er ip-adressa til orangepien på
Tailscale-nettverket.
By default setter Headscale opp et mesh-nettverk hvor alle maskiner har tilgang til hverandre. Det vil si at vi i teorien kunne DDoS-et hverandre, scanna hverandres porter, eller nådd hverandres private tjenester om vi hoster noe på egen PC.
I vårt tilfelle har vi satt opp ACLen til å ikke tillate dette. For å lære mer om hvordan vi begrenser dette, kan man sjekke ACL-fila vi bruker, eventuelt sjekke dette eksempelet fra Headscale sin nettside.
Config-fila
Det er enda mer konfigurering som er gjort i selve config.yaml,
men det er alt for mye å dekke her. I tillegg inneholder standard configfila
masse kommentarer som vi har beholdt for å forklare hva de ulike valgene gjør.
Kan anbefale å lese mer på den offisielle dokumentasjonen til Headscale.
Nyttig å vite (Kommandoer)
Siden vi kjører Headscale i en docker container, må vi bruke
docker exec for å kjøre kommandoer. Den første "headscale" i kommandoen er
navnet på containeren, mens den andre er selve programmet.
Liste over brukere
docker exec headscale headscale users list
Opprette en ny bruker
docker exec headscale headscale users create <BRUKERNAVN>
Lage en autentiseringsnøkkel
For å generere en nøkkel som lar en ny enhet koble seg til:
docker exec headscale headscale preauthkeys create --user <BRUKERNAVN>
Hjelp-menyen
Hjelp-kommandoene er veldig nyttige. Du kan få oversikt over alt du kan gjøre her:
docker exec headscale headscale --help
NB! Hver underkommando har sin egen hjelp-side som er veldig godt skrevet. Jeg anbefaler å lese dem hvis du er usikker på flagg eller parametere.