В качестве базовой отправной точки вы должны иметь возможность написать настройку клиент / сервер на выбранном вами языке, который будет передавать по IP.Ваш VPN также должен быть в состоянии предоставить операционной системе сетевой интерфейс.Если вы используете Linux, я предлагаю системный интерфейс tun / tap.Для справки вы можете посмотреть код в qemu, который использует эти вызовы ОС.В целях шифрования библиотека OpenSSL должна быть в состоянии обеспечить вас всеми необходимыми вызовами.
Я не уверен, каковы конечные требования вашей курсовой работы.Вы можете создать что-нибудь от базовой настройки симметричного ключа с общим ключом, которую можно быстро взломать до бездонной попытки создать достойную VPN-систему.Вы должны указать свои требования.