Jump to content

Headscale: Difference between revisions

From Khalidi
skrev om konfigureringen
Saim (talk | contribs)
No edit summary
 
(2 intermediate revisions by 2 users not shown)
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-tjenesta.  


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] ==== For at vi skal
==== [https://headscale.net/stable/ref/dns/ Magic DNS] ====  
kunne slippe å huske ip-adressa til [[Orange Pi|orangepien]], har vi slått på
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.
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 30: Line 20:
</syntaxhighlight>  
</syntaxhighlight>  


''NB! Hvert å merke seg at vi er nødt til å ha 'private' i sub domenet. ''
''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 37: Line 27:


==== [https://headscale.net/stable/ref/acls/ ACL (Access Control Lists)] ====
==== [https://headscale.net/stable/ref/acls/ ACL (Access Control Lists)] ====
By deafult setter Headscale opp et mesh-nettverk hvor alle maskiner har
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 49: 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 konfigfila
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.


Line 85: Line 75:
Jeg anbefaler å lese dem hvis du er usikker på flagg eller parametere.''
Jeg anbefaler å lese dem hvis du er usikker på flagg eller parametere.''


[[Kategori:Tjenester]]
[[Category:Tjenester]]

Latest revision as of 21:57, 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.