Кастомная имплементация VPN, написанная на Golang. Обмен пакетами между клиентом и сервером происходит по протоколу UDP. Шифрование обеспечивается AES GCM.
Генерируем пару из публичного/приватного ключа - go run generate_keys.go. Public key заносим в allowedIPs в server/main.go, private key - в config.json для клиента.
На сервере запускаем (с правами root) server/main.go. Можно по желанию подправить порт (стандартный - 55635).
На клиенте (также с правами root) запускаем client/main.go, указав с флагом --config путь к конфигу в формате json.