Skip to content

QuicVPN, a replacement of OpenVPN, in rust, based on Quic

License

Notifications You must be signed in to change notification settings

szguoxz/QuicVPN

Repository files navigation

QuicVPN

QuicVPN, a replacement of OpenVPN, in rust, based on Quic

This project has 3 excutables:

quic_server: this is a vpn server and a proxy server.
quic_client: this is the vpn client.
quic_proxy: this is the proxy client. Basically it will listen to a local port as a proxy, and tunnel the request to quic_server if needed.

build:

just download the code, make sure your rust is installed, and run: cargo build --release
There's a project called simpplewintun, the wintun driver, I made a small change to make it easier for me to work with, but all credit go to the original author, even I included the source code in this project.
The building of wintun will need a C++ compiler, so you will have to have that too.

how it works:

This project utilizes quinn project for the quic protocol. quic_server acts as a vpn server and a proxy server, that the vpn client and proxy client will connect to through quic protocol. quic_server will create a virtual tun network card to tunnel vpn traffic. if you use it only as a proxy server, the tun is still created but will not be used.

3 executable all needs a configuration file called: server.toml and client.toml. Which can only be generated by running quic_server. run with --help will get more information. Basically it will generate self-signed certificates for the server, and will generate and sign client certificates for the vpn client and proxy client.

The VPN server will needs to setup IP forward and SNAT to work effectively. If you are using ubuntu, iptables will be a great tool. When you run quic_server, there will be some help message regarding how to do that.

The VPN client will need you setup route, so all traffic to the server will be routed through the client created tun network card. route add command is available both on windows and linux