Viaalink Relay

Zo werkt Viaalink Relay

Eén Relay, een adres voor elk apparaat dat je hebt.

Alles wat via een Relay gaat, is een van drie soorten verbinding. Hier staan ze in gewone woorden, elk met een link naar de technische details.

Technische details →

Overzicht

Drie manieren om te verbinden

Een Relay is een server die je zelf draait. Je apparaten verbinden ernaar toe; mensen bereiken via de Relay wat je publiceert.

  • A

    Apparaat ↔ Relay

    Een client op je apparaat maakt verbinding met de Relay en publiceert iets op dat apparaat als adres.

    • Eén commando: via publish 3000
    • Of gewoon OpenSSH: ssh -R
    • Geen open poort op het apparaat
    Zo publiceert een apparaat
  • B

    SSH-client ↔ Relay ↔ apparaat

    Een machine publiceert zijn SSH als privé-alias. Je logt in vanaf je laptop met gewoon OpenSSH en maakt een jump via de Relay.

    • Niets openbaar op internet
    • Gewoon OpenSSH: ssh -J
    • De Relay kan de sessie niet lezen
    Zo werkt SSH via de Relay
  • C

    Bezoeker ↔ adres

    Iedereen met de link opent het adres in een browser. Een bezoeker installeert niets en heeft geen account nodig.

    • Een browser is genoeg
    • HTTPS op je eigen domein
    • Optioneel een wachtwoord per link
    Wat een bezoeker ziet

Pad A

Een apparaat publiceert een adres

Een programma op je apparaat — de client — belt de Relay, niet andersom.

Het apparaat heeft geen open poort en geen regel in de router nodig, alleen een weg naar de Relay.

De client is de Viaalink CLI (via publish 3000) of gewoon OpenSSH (ssh -R), dat bij Linux, macOS en recente Windows zit.

Zolang die ene verbinding openstaat werkt het adres; gaat ze dicht, dan is het adres weg.

  1. Je apparaat app op localhost:3000
  2. Client via publish 3000
    verbindt naar buiten · SSH 2222
  3. Relay relay.example.com

Je adres https://k3x.relay.example.com

Met de standaardinstellingen kiest de Relay een korte willekeurige naam; de client toont het adres dat hij kreeg.

Technische details →

Pad B

Met SSH inloggen op een machine, via de Relay

Je wilt thuis of op kantoor op een machine inloggen zonder zijn SSH op internet te zetten.

De machine publiceert zijn SSH onder een privé-alias, een naam die alleen binnen de Relay bestaat.

Vanaf je laptop maak je met gewoon OpenSSH een jump via de Relay; op de machine zelf log je daarna gewoon in.

De SSH-sessie loopt versleuteld van je laptop tot de machine: de Relay kopieert de bytes en kan ze niet lezen.

  1. Je laptop SSH-client (OpenSSH)
    ssh -J
  2. Relay jump, poort 2222
    alleen binnen de Relay
  3. Privé-alias mybox:22
    ssh -R
  4. De machine zijn eigen SSH-server

Eén commando ssh -J relay.example.com:2222 alice@mybox

Zowel de laptop als de machine logt bij de Relay in met een goedgekeurde SSH-sleutel.

Technische details →

Pad C

Een bezoeker opent het adres

Je stuurt iemand het adres; die opent het in een browser. Geen app, geen account, geen sleutel.

De Relay zoekt het apparaat bij het adres en stuurt het verzoek over de verbinding van dat apparaat.

Bezoekers tellen niet mee als verbonden apparaten.

  1. Bezoeker een browser, niets geïnstalleerd
    HTTPS 443
  2. Relay HTTPS eindigt hier
    binnen de SSH van het apparaat
  3. Je apparaat de app die je publiceerde

HTTPS eindigt bij de Relay, met zijn Let's Encrypt-certificaat. Wil je onbekenden buiten houden, zet dan een wachtwoord op één link, of laat de Relay alleen bepaalde netwerken of landen toe.

Technische details →

De onderdelen

De onderdelen

Vier onderdelen, van de app op je apparaat tot de persoon die hem opent.

  1. Je app of dienst bijv. localhost:3000, of SSH
    op hetzelfde apparaat
  2. Client via, of OpenSSH
    één uitgaande SSH-verbinding
  3. Relay op je server, NAS of pc, met automatische HTTPS
    HTTPS op je eigen domein
  4. Bezoeker een browser, waar dan ook

Technische details →

Beveiliging

Wat de Relay wel en niet kan zien

De Relay zit in het midden. Het is goed om precies te weten wat er in leesbare vorm langskomt.

  1. Bezoeker browser
    HTTPS
  2. Relay je eigen server
    binnen SSH
  3. Je apparaat client

De Relay kan zien

  • Webverzoeken naar je adressen: HTTPS eindigt bij de Relay, omdat die de naam leest om het juiste apparaat te vinden.
  • Welke apparaten verbonden zijn en welke adressen elk apparaat heeft.
  • Dat iemand verbinding maakte met een privé-alias.

De Relay kan niet zien

  • De inhoud van een SSH-sessie via een privé-alias: die is versleuteld tussen je laptop en de machine.
  • Verkeer dat je publiceert met TLS-passthrough: je eigen dienst heeft het certificaat.

Wie bewijst wat

  • Apparaten en SSH-clients loggen bij de Relay in met een goedgekeurde SSH-sleutel.
  • De Relay bewijst zich aan apparaten met zijn SSH-hostsleutel, die OpenSSH controleert, en aan bezoekers met zijn Let's Encrypt-certificaat.
  • Bezoekers bewijzen standaard niets; je kunt een wachtwoord per link en IP- of landregels toevoegen.
Wie de Relay beheert, kan in principe webverkeer lezen — daarom draai je hem zelf. Is zelfs dat te veel, gebruik dan TLS-passthrough of publiceer iets dat zelf versleutelt, zoals SSH via een privé-alias.

Technische details →

Stap voor stap

Een apparaat verbindt, stap voor stap

Wat er gebeurt tussen het moment dat een client start en het moment dat het adres werkt.

  1. Naar buiten verbinden

    Het apparaat opent één verbinding met de SSH-poort van de Relay, 2222. Het heeft vijf seconden om in te loggen.

  2. Handdruk

    De Relay bewijst wie hij is met zijn SSH-hostsleutel. Vanaf hier is alles versleuteld.

  3. Inloggen met een sleutel

    Het apparaat bewijst wie het is met een SSH-sleutel die de beheerder heeft goedgekeurd. Met een licentie controleert de Relay ook of het apparaat binnen je pakket past.

  4. Een adres vragen

    Het apparaat vraagt adressen aan met gewone SSH-forwardverzoeken, dezelfde die ssh -R stuurt.

    ssh -p 2222 -R app:80:localhost:3000 relay.example.com
  5. Het adres krijgen

    De Relay antwoordt met het adres dat hij toewees.

    HTTPS: https://k3x.relay.example.com
  6. Het verkeer dragen

    Elke bezoeker wordt een nieuw kanaal binnen dezelfde SSH-verbinding, en de client geeft het door aan de lokale app. Gaat de verbinding dicht, dan zijn de adressen weg.

Technische details →

Waar het draait

Waar het draait

Elke machine die aan blijft, kan de Relay zijn. Elk apparaat kan erdoor publiceren: het heeft alleen een client nodig, via of OpenSSH.

  • Linux

    Servers, pc's en Raspberry Pi, op Intel/AMD en ARM-borden.

    Start bij het opstarten als systeemdienst.

  • Docker

    Het image viaalink/relay voor amd64 en arm64.

    Een container die met Docker herstart.

  • Synology en QNAP

    Hetzelfde Docker-image, in de container-app van de NAS.

    Draait als container.

  • ASUSTOR

    De app Viaalink Relay, vanuit de NAS.

    Start met de NAS.

  • Windows

    Intel/AMD en ARM 64-bit, uit een zip-bestand.

    Draait zolang je bent ingelogd.

  • macOS

    Intel en Apple silicon.

    Draait zolang je bent ingelogd.

Technische details →

Vragen

Korte antwoorden

Moeten bezoekers iets installeren?

Nee. Een bezoeker opent het adres in een browser. Geen app, geen account en geen sleutel — tenzij je een wachtwoord op die link zet.

Kan de Relay mijn SSH-sessie lezen?

Nee. Als je via de Relay een jump maakt naar een privé-alias, is de SSH-sessie versleuteld tussen je laptop en de machine. De Relay ziet alleen dat er een verbinding was. Webverkeer is anders: HTTPS eindigt bij de Relay.

Heeft elk apparaat een openbaar IP-adres nodig?

Nee. Alleen de Relay moet vanaf internet bereikbaar zijn. Apparaten verbinden er zelf naartoe en hebben geen open poort en geen regel in de router nodig.

Kan elk apparaat de Relay zijn?

Elke machine die aan blijft: een Linux-server of -pc, een Raspberry Pi, een NAS, een Docker-host, of een Windows- of macOS-computer. Hij heeft een domeinnaam nodig die jij beheert, en poorten die vanaf internet bereikbaar zijn.

Draai je eigen Relay

Begin gratis, of bekijk wat elk pakket toevoegt.

Bekijk de pakketten Snel starten