Encapsulate TCP connections inside HTTP WebSockets
tcp
Go to file
2022-09-01 09:08:45 +02:00
base Refactor project to make it easier to test 2022-09-01 09:08:45 +02:00
tcp_relay_client Refactor project to make it easier to test 2022-09-01 09:08:45 +02:00
tcp_relay_server Refactor project to make it easier to test 2022-09-01 09:08:45 +02:00
.gitignore Can specify custom server root certificate for client 2022-08-31 10:59:07 +02:00
Cargo.lock Add support for CRL on server side 2022-08-31 15:37:51 +02:00
Cargo.toml Initial commit 2022-08-30 09:43:53 +02:00
README.MD Update README 2022-08-31 15:42:58 +02:00

TCP over HTTP

This project aims to provide an easy-to-setup TCP forwarding solution:

|--------|              |--------|                     |--------|              | -------|
|        |              | Client |                     | Server |              |        |
| Client | -- TCP xx -- |        | -- HTTP 80 / 443 -- |        | -- TCP xx -- | Server |
|        |              |  Relay |                     |  Relay |              |        |
|--------|              |--------|                     |--------|              |--------|

This project can be used especially to bypass firewalls that blocks traffics from ports others than the HTTP / HTTPS ports.

Authentication

The client can authenticate agains the server relays through two different means:

  • Using a token
  • Using a client TLS certificate. In this case, the server relay must act as a HTTPS server, and you must provide the server the required certificates / key files in PEM format. It is also possible to provide the server a CRL file.

Binaries

This repository contains two binaries:

  • tpc_relay_server: The server relay. In case of token authentication, it can be put behind a reverse proxy.
  • tcp_relay_client: The client relay

A single server - client relay pair can relay multiple ports simultaneously from the same machine.