Quali linguaggi di programmazione possono essere usati per creare una VPN?
Non è necessario programmare nulla. Basta usare un server VPN e installarlo dove vuoi, cambiare le impostazioni come ti serve. Poi installare/modificare il client VPN integrato sui dispositivi in modo che si connettano all'indirizzo di quel server.
Probabilmente il server più semplice e più onnipresente è OpenVPN. Quasi tutti i servizi VPN Proxy lo usano. Lo installano sui loro server, cambiano le impostazioni in modo che si comporti diversamente da una normale VPN (non si collega alle risorse locali ma agisce semplicemente come un relay proxy). Poi anche solo usando il codice del client per OpenVPN e avvolgerlo nella loro UI per collegarsi al loro server - quest'ultima parte è l'unica "programmazione" necessaria (cioè un po' di design della GUI e chiamare funzioni di libreria da quella).
Se vuoi davvero farne uno da zero, è una cosa piuttosto complicata. Hai bisogno di collegarti a qualsiasi sistema su cui il tuo server e il tuo client verranno eseguiti. Probabilmente ciò significa che devi scrivere un driver per ogni client che vuoi permettere - diciamo un driver di rete Windows, un macOS, un Android, un iOS, possibilmente anche uno Linux. Questo probabilmente vi costringerà ad usare qualsiasi linguaggio richiesto per quel particolare SDK, possibilmente una serie di lingue diverse. Qualsiasi cosa da C, Swift, Java, Python, qualsiasi cosa può essere usata e potrebbe essere richiesta - non aspettatevi che un solo linguaggio faccia tutto per voi.
Il lato server è in realtà meno restrittivo e contorto. Puoi usare qualsiasi linguaggio tu voglia, davvero. È solo un software che ascolta le connessioni su una porta specifica. La parte più complessa sarebbe il relè alla rete reale. Per l'idea del proxy è in realtà molto meno complessa.
La crittografia e l'autenticazione possono essere varie a vostra scelta, anche se vi consiglierei di cercare librerie ben implementate e testate invece di crearne di vostre.
Quanto sopra sembra un grande sforzo per ricreare una ruota, solo che la nuova ruota avrebbe bisogno di molti aggiustamenti per trasformarla da un quadrato in qualcosa che funzioni senza problemi. Ti consiglierei decisamente di partire da qualche cosa open source come OpenVPN, magari estendendo le loro cose se pensi di volere qualcosa di diverso/migliore.
Articoli simili
- Che tipo di linguaggi di programmazione venivano usati per creare videogiochi come il NES, lo SNES, il Mega Drive e la PlayStation?
- Quali sono i linguaggi di programmazione usati per fare giochi 3D come GTA?
- Quali linguaggi di programmazione sono stati usati per costruire Snapchat?
- Quali linguaggi di programmazione sono usati in Twitter?