Headscale: Difference between revisions
m formaterings feil |
m språkvask |
||
| Line 1: | Line 1: | ||
Magien som får oppsettet vårt til å kjøre heter '''Headscale'''. Det er en | 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. | ||
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- | |||
Headscale er hosta på [[Jaffa|VPS-en (Jaffa)]]. Det var vi nødt til å gjøre | Headscale er hosta på [[Jaffa|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. | ||
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 === | === Nyttig å vite === | ||
Headscale gjør en del, la oss se på noen av tingene vi | Headscale gjør en del, la oss se på noen av tingene vi har konfigurert. | ||
har konfigurert. | |||
==== [https://headscale.net/stable/ref/dns/ Magic DNS] ==== | ==== [https://headscale.net/stable/ref/dns/ Magic DNS] ==== | ||
For at vi skal | For at vi skal kunne slippe å huske ip-adressa til [[Orange Pi|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, <code>extra-records.json</code>. Det har vi gjort for å gjøre ting mer oversiktlig. | ||
kunne slippe å huske ip-adressa til [[Orange Pi|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, <code>extra-records.json</code>. Det har | |||
vi gjort for å gjøre ting mer oversiktlig. | |||
Her er et eksempel på hva som kan være inne i denne fila: | Her er et eksempel på hva som kan være inne i denne fila: | ||
| Line 31: | Line 20: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''NB! | ''NB! Verdt å merke seg at vi er nødt til å ha 'private' i sub-domenet. '' (hvorfor?) | ||
I 99.999 % av tilfellene vil vi sette <code>value</code> til å være | I 99.999 % av tilfellene vil vi sette <code>value</code> til å være | ||
| Line 38: | Line 27: | ||
==== [https://headscale.net/stable/ref/acls/ ACL (Access Control Lists)] ==== | ==== [https://headscale.net/stable/ref/acls/ ACL (Access Control Lists)] ==== | ||
By | 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, | 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 | scanna hverandres porter, eller nådd hverandres private tjenester om vi hoster | ||
| Line 50: | Line 39: | ||
==== Config-fila ==== | ==== Config-fila ==== | ||
Det er enda mer konfigurering som er gjort i selve <code>config.yaml</code>, | Det er enda mer konfigurering som er gjort i selve <code>config.yaml</code>, | ||
men det er alt for mye å dekke her. I tillegg inneholder standard | 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. | masse kommentarer som vi har beholdt for å forklare hva de ulike valgene gjør. | ||
Revision as of 17:20, 16 January 2026
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.