Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/henrybarreto/obirt
A proof of concept VPN
https://github.com/henrybarreto/obirt
fast rust simple vpn
Last synced: 4 days ago
JSON representation
A proof of concept VPN
- Host: GitHub
- URL: https://github.com/henrybarreto/obirt
- Owner: henrybarreto
- License: mit
- Created: 2023-08-21T11:43:42.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-30T11:57:49.000Z (16 days ago)
- Last Synced: 2024-10-30T12:32:27.987Z (16 days ago)
- Topics: fast, rust, simple, vpn
- Language: Rust
- Homepage:
- Size: 324 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A simple VPN
> [!NOTE]
> The protocol isn't done. I am constantly improvement it and the code itself.# How to use
Start a server
```sh
obirt server
```Start a client using `obirt.henrybarreto.dev` as server.
```sh
obirt client obirt.henrybarreto.dev
```## The Client
The client connects to a server, send all IP packages received by the network interface and injecting the package what was routed by the server.
```mermaid
sequenceDiagram
participant interface
participant client
participant server
client ->>+ server: Send client public key
server ->>+ client: Send server public key
server ->> client: Send AES key encrypted by peer public key
client ->> client: Decrypt AES key
client ->> server: Send Mac address
server ->> server: Store the client information in the server
server -->> client: Receive IP and Mask to bind
client ->>+ interface: Create network interface
interface ->>+ client: Confirm interface creationloop Keep alive
client ->> server: Send keep alive package
endloop Every IP package
par From Client
interface ->> client: Receive the IP package
client ->> client: Encrypt the package
client ->> server: Send the IP package to server
server ->> server: Look for the package's destination and sent it
and From Server
server ->> client: Send the IP package to client
client ->> client: Decrypt the package
client ->> interface: Send the IP package
end
endclient ->> server: Close
server ->>- client: Close
client ->> interface: Close network interface
interface ->>- client: Confirm close on network interface
```## The Server
The server receives all IP packages from the peers connected, and redirect it to the destination registed on it.
. . .