Een werkende website is bewijs dat een aanbieder HTTP kan leveren, niet dat jij een machine bestuurt. Tussen een gedeeld pakket, een beheerde applicatie en een zelfbeheerde server zit een groot gat in wat het account met het netwerk mag doen. Beslis welke kant van dat gat je VPN-ontwerp nodig heeft voordat je nog een jaar betaalt. Vier mogelijkheden scheiden de twee, en geen ervan staat op een prijslijst.

Wat elk pakket echt geeft

De nuttige vergelijking is niet prijs of schijfruimte, maar bevoegdheid. Vraag wat het account kan starten, welke kernelfuncties het bereikt, welke poorten inkomend verkeer accepteren en of toegelaten verkeer weer ergens anders heen mag.

De meeste hostingproducten vallen in drie vormen, en alleen de laatste is een server voor algemeen gebruik:

CapabilityWebsite planSelf-managed server
Long-running custom processUsually not permittedYours to run under a service manager
Virtual network interfaceAlmost never availablePresent when the kernel module and privilege allow it
Arbitrary inbound portRestricted to the web stackProvider filtering still applies
Forwarding for clientsNot offeredPossible once routing and policy are configured

Een shell-account is de gebruikelijke bron van verwarring. Bestandsoverdracht of toegang tot geplande taken kan op beheer lijken terwijl het proces beperkt blijft tot een map en een kleine set toegestane bewerkingen.

Vier mogelijkheden die het antwoord bepalen

Neem ze in volgorde, want een fout bij de eerste stap maakt de rest irrelevant.

Ten eerste moet de software draaien als een langdurig proces dat onderhoud overleeft. Ten tweede moet de implementatie zijn virtuele interface kunnen aanmaken; op Linux betekent dat meestal /dev/net/tun openen met de relevante beheerdersbevoegdheid, zoals de kernel-documentatie over TUN/TAP beschrijft, hoewel niet elk VPN-ontwerp dat apparaat gebruikt. Ten derde moeten clients de listener bereiken op het openbare adres, het transport en de poort die je bedoelt, en een web-reverse-proxy die HTTPS accepteert zegt niets over een ongerelateerd protocol op hetzelfde nummer. Ten vierde moet toegelaten verkeer verder kunnen, met routes, doorsturen en elke vertaling die echt wordt ondersteund.

De servicevoorwaarden staan naast die vier en zijn helemaal niet technisch. Onbeperkte verkeersquota beschrijven meestal webaanvragen, niet een tunnel die andermans downloads draagt. Lees de sectie over acceptabel gebruik voordat je eromheen ontwerpt, en houd hersteltoegang in gedachten voor de dag dat de dienst niet start.

Waar een website-account ophoudt

Een websitepakket draait je code meestal in een beheerde runtime met een vast startpunt. Zelfs als er een tunnelbinair bestand is, kan het proces de bevoegdheid missen om een apparaatknooppunt te openen, een bevoorrechte poort te binden of de routetabel te wijzigen. Die beperkingen zijn het product, geen vergissing.

Daarom blijkt een plug-in die VPN belooft meestal een proxy naar elders. Biedt het huidige account alleen websitebesturing, dan is de eerlijke stap een aparte server, niet de zoektocht naar de module die de ontbrekende bevoegdheid ontgrendelt.

Wanneer één host beide moet draaien

Delen is mogelijk en soms verstandig, maar behandel het als een beveiligingsbeslissing in plaats van een gemak. Een webapplicatie met een uploadformulier staat naast tunnelreferenties en een besturingssocket, en een exploit in het ene bereikt het andere. Aparte accounts, aparte service-eenheden en aparte bestandssystemen verkleinen die blootstelling zonder een tweede machine te kopen.

Concurrentie om middelen telt net zo zwaar. Een back-up over de tunnel en een druk webproces strijden om dezelfde uplink en dezelfde schijf, en de storing ziet eruit als een trage site in plaats van een verzadigde tunnel. Bepaal vóór het incident welke belasting wint, en begrens de tunnel zodat de website blijft antwoorden.

Geen van beide opstellingen is geïsoleerd alleen omdat beide diensten draaien. De mogelijkheid ze samen te hosten is het begin van het ontwerp, en het isolatiewerk is wat het verdedigbaar maakt.

Beslis het op een testhost met vier opdrachten

Huur vóór de migratie de kleinste instantie van het doelproduct voor een uur en test de vier mogelijkheden direct. Gissen uit een functietabel kost minder geld dan een jaar met het verkeerde pakket, maar veel meer tijd.

Voer deze uit op de testhost en lees de fouten als antwoorden, niet als hindernissen:

ls -l /dev/net/tun
sudo ip tuntap add dev tun9 mode tun && sudo ip link del tun9
sysctl net.ipv4.ip_forward
ss -lunp | head

De eerste twee regels zeggen of een tunnelapparaat überhaupt kan bestaan. De derde meldt of de host pakketten mag doorsturen, en de vierde laat zien wat er al luistert zodat een poortconflict vroeg wordt gevangen. Een aanbieder die op de tweede regel faalt, kan toch een implementatie in gebruikersruimte ondersteunen, dus noem het mechanisme dat je nodig hebt, niet de productcategorie, wanneer je hun support vraagt.

Gerelateerde artikelen