How to program a vpn (for fun)

This page summarizes the projects mentioned and recommended in the original post on /r/learnprogramming

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • wintun

    Mirror only. Official repository is at https://git.zx2c4.com/wintun

  • How "scratch" do you want to go from? Do you want to write your own virtual network driver, or do you want to use an existing driver like Wintun? Either way learning about Wintun would be a good start. Then there's the protocol, regardless of what language you learn, the wireguard-go implementation is a very good example of how to implement a secure protocol with modern language.

  • wireguard-go

    Mirror only. Official repository is at https://git.zx2c4.com/wireguard-go

  • How "scratch" do you want to go from? Do you want to write your own virtual network driver, or do you want to use an existing driver like Wintun? Either way learning about Wintun would be a good start. Then there's the protocol, regardless of what language you learn, the wireguard-go implementation is a very good example of how to implement a secure protocol with modern language.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • pivpn

    The Simplest VPN installer, designed for Raspberry Pi

  • Once you nailed all of them it's only a matter of deploying the server on a server and after confirming things work, continue on writing a user-accessible client. Most people just skip all the previous paragraphs and set up PiVPN/Outline on their own server for personal use.

  • outline-apps

    Outline Client and Manager, developed by Jigsaw. Outline Manager makes it easy to create your own VPN server. Outline Client lets you share access to your VPN with anyone in your network, giving them access to the free and open internet.

  • Once you nailed all of them it's only a matter of deploying the server on a server and after confirming things work, continue on writing a user-accessible client. Most people just skip all the previous paragraphs and set up PiVPN/Outline on their own server for personal use.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts