VPN with C Language

C, Ubuntu, Network, VPN, , 2018

A command line based VPN application.

Link to GitHub

  • Virtual network kernel with TUN/TAP
    • Creating virtual network device using TUN/TAP
    • Routing data stream to the virtual NIC card by modifying routing table
    • Re-packeting data and then send to VPN server
  • Encrypted tunnel using SSL based on PKI
    • Data between clients and server are encrypted by SSL tunnel
    • Clients can verify the server
  • Client login mechanism
    • Clients need to login to continue to use the VPN application
    • User names and passwords are store in a encrypted file
    • Server can verify the Clients
  • Multiple clients supported
    • A mother process is listening to connection requests
    • Using fork() to create a new process for a new connected clients
    • Clients can terminate or reconnect the connection by commands