ZeroTier på Raspberry Pi & i RetroPie

For å spille sammen over internett spill som i utgangspunktet kun var laget for lokalt nettverk, så finnes det «LAN over internet». ZeroTier er en slik løsning.

Det finnes mange måter å spille sammen over internett, fra åpne og usikre direkteoppkoblinger med port forwarding, via krypterte og sikrere direkte og indirekte VPN-løsninger, eller sentrale spillservere, til nyere tids spillstrømmingsteknologi, eller kombinasjoner av disse.

For remote play over internett for spill som bare virker på lokalnettet eller har støtte for LAN multiplayer, har jeg valgt å bruke ZeroTier, hovedsakelig fordi jeg har lang og god personlig erfaring med den selv, men også fordi:

  • den er relativt lett å sette opp og administrere
  • den fungerer på og mellom mange ulike operativsystemer, faste og mobile enheter, inkludert Raspberry Pi
  • den gir noe bedre nettsikkerhet i form av kryptering enn åpen port forwarding for dine venner og deg
  • den gir direkte peer-to-peer forbindelser mellom enhetene etter oppkobling
  • den finner veien gjennom de fleste NAT-oppsett
  • den kan legges til i routingtabellen for automatisk enhetsoppdagelse i de fleste spill
  • den er foreløpig helt gratis for inntil 100 enheter i virtuelle nettverk og ganske rask selv når den ikke klarer å sette opp direkteforbindelser.

I tillegg kan ZeroTier være veldig praktisk til andre formål, som enkel tilgang og remote desktop til og administrasjon av enheter og ressurser i hjemmenettverket, spillstrømming etc. når man befinner seg utenfor hjemmet.

Man kan også bridge’/koble sammen subnett fra flere separate hjemmenettverk, og dermed også enheter som ikke selv kan installere ZeroTier, remote over internett, slik at man for eksempel kan spille LAN-spill over internett på PS3 og andre konsoller. Det blir kanskje mer om dette i senere artikler.

Guide til ZeroTier

Installasjon på Rasberry Pi

Dette står beskrevet på ZeroTier sin hjemmeside, men jeg legger ved en rask instruksjon her.

1. Installer gpg:

 sudo apt update&&sudo apt install gpg

2. Legg til gpg-nøkkel og ZeroTier repository i apt sources for fremtidige oppdateringer via apt upgrade, samt installere(kopiér og lim inn alt under på samme linje i shell):

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

3. Tjenesten zerotier-one skal nå starte automatisk ved neste boot av Raspberry Pi, ellers så kan man starte den manuelt med:

sudo service zerotier-one start

Opprette virtuelt LAN over Internett

ZeroTier har en veldig grei online administrasjonstjeneste man kan bruke på https://my.zerotier.com/, hvis man ikke har lyst til å sette opp sin egen server og være helt uavhengig dem.

  1. Registrér deg som bruker, gjerne med en Google-bruker, og logg inn
  2. Velg «Networks» og «Create a Network»
  3. Behold gjerne foreslåtte innstillinger slik de er, eller endre nettverksnavn, ip-addresser etc.
  4. Notér deg «Network ID» av typen «6ac564381b46fbdc»

Registrere en ny Raspberry Pi

1. I et shell på din RPi skriv inn(bytt ut med egen «Network ID»):

sudo zerotier-cli join 6ac564381b46fbdc

2. Gå tilbake til administrasjonssiden for samme nettverket på https://my.zerotier.com/ og huk av i «Auth?»-boksen for å godkjenne enheten, fyll gjerne ut navn og beskrivelse:

Skjermbilde fra ZeroTier administrasjonssiden.

3. Dem du skal koble til/spille med over internettet må gjøre pkt. 1, og eieren av nettverket må gjøre pkt. 2 for hver av disse.

ZeroTier-nettverk fra RetroPie

Det er ikke alltid ønskelig å være tilkoblet et ZeroTier-nettverk eller gå inn i shell for å styre med dette.

Jeg har derfor laget et bash-script, «Toggle ZeroTier», som kan kopieres til en av ROMS-mappene som leser sh-script, typisk /home/pi/RetroPie/roms/moonlight, og som deretter kan kjøres direkte med kontroller fra spillmenyene i EmulationStation:

  1. Last ned og til valgt ROMS-mappe fra: https://github.com/Vegz78/ToggleZeroTier
  2. Redigér fila med egen ZeroTier «Network ID» og «Device ID»(sjekk ifconfig eller ip a)
  3. Gjør filen eksekverbar med:
sudo chmod 755 _ToggleZeroTier.sh

Til slutt starter du EmulationStation og kjører scriptet fra valgte plassering:

Scriptet veksler sirkulært mellom 3 tilstander;
(1)kobler opp det registrerte ZeroTier-nettverket hvis ikke oppkoblet,
(2)legger det til som broadcast i routingtabellen hvis oppkoblet, og
(3)kobler ned hvis oppkoblet og i routingtabellen.

Når ZeroTier-nettverket er registrert som broadcast-adresse i routingtabellen, vil andre enheter oppdages automatisk gjennom ZeroTier i de fleste LAN-spill(F.eks om man vil spille Minecraft Pi Edition sammen over internett).

ZeroTier-nettverk fra kommandolinjen

Like enkelt kan scriptet _ToggleZeroTier.sh kjøres fra kommandolinjen, og hver gang det kjøres, på samme måte som i RetroPie, automatisk veksle mellom de 3 tilstandene (1)kobler opp det registrerte ZeroTier-nettverket hvis ikke oppkoblet, (2)legger det til som broadcast i routingtabellen hvis oppkoblet, og (3)kobler ned hvis oppkoblet og i routingtabellen.

Scriptet kan kjøres direkte fra den fulle installasjonsbanen, typisk /home/pi/RetroPie/roms/moonlight/_ToggleZeroTier.sh, eller legges til i $PATH-variablen og kjøres hvor-som-helst-fra med _ToggleZeroTier.sh.

Selv foretrekker jeg å lage en symbolsk lenke i en mappe som allerede er tilgjengelig i $PATH-variablen, f.eks.:

sudo ln -s /home/pi/RetroPie/roms/moonlight/_ToggleZeroTier.sh /usr/local/games/zerotier

Og så kjøre bare kommandoen zerotier hvor-som-helst-fra hver gang jeg trenger det.

Legg igjen en kommentar