Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrjosh/udp2grpc
A Tunnel which Turns UDP Traffic into Encrypted gRPC/TCP Traffic, helps you Bypass UDP FireWalls(or Unstable UDP Environment)
https://github.com/mrjosh/udp2grpc
grpc udp udp2grpc udptogrpc wireguard-over-tcp
Last synced: 4 months ago
JSON representation
A Tunnel which Turns UDP Traffic into Encrypted gRPC/TCP Traffic, helps you Bypass UDP FireWalls(or Unstable UDP Environment)
- Host: GitHub
- URL: https://github.com/mrjosh/udp2grpc
- Owner: mrjosh
- License: mit
- Created: 2022-10-28T17:15:38.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-15T06:24:50.000Z (about 2 years ago)
- Last Synced: 2024-06-20T22:35:04.263Z (8 months ago)
- Topics: grpc, udp, udp2grpc, udptogrpc, wireguard-over-tcp
- Language: Go
- Homepage:
- Size: 150 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![License](https://img.shields.io/github/license/mrjosh/udp2grpc)
__ ______ ____ ___ ____ ____ ______
/ / / / __ \/ __ \__ \ ____ / __ \/ __ \/ ____/
/ / / / / / / /_/ /_/ // __ \/ /_/ / /_/ / /
/ /_/ / /_/ / ____/ __// /_/ / _, _/ ____/ /___
\____/_____/_/ /____/\__, /_/ |_/_/ \____/
/____/## ⚠️ This project is still in early development. ⚠️
![image](image.jpg)
## Inspiration
This project is inspired heavily from [udp2raw](https://github.com/wangyu-/udp2raw)## UDP2gRPC
A Tunnel which Turns UDP Traffic into Encrypted gRPC/TCP Traffic,helps you Bypass UDP FireWalls(or Unstable UDP Environment)
Assume your UDP is blocked or being QOS-ed or just poorly supported.## Docker image
Pull dockerhub image
```bash
docker pull mrjoshlab/udp2grpc:latest
```## Getting Started
### Installing
Download binary release from https://github.com/mrjosh/udp2grpc/releases### Generate certificates for server and client
Assume your server ip is 127.0.0.1 and your service domain is example.com
```bash
# generate for specific ip address
utg gen-certificates --dir ./cert --ip 127.0.0.1# generate for specific domain name
utg gen-certificates --dir ./cert --domain example.com# generate for both domain and ip
utg gen-certificates --dir ./cert --domain example.com --ip 127.0.0.1
```### Generate a new privatekey
```bash
utg genkey
# output
# R1kvISImDxxRS1AnMDUrSy0xVg9XFzhDCyszGSdAX04=
```### Generate a new peer config
```bash
utg peer -n Joshua-MBP -r 127.0.0.1:51820
```
output
```
server side config:
-------------------------------------------------------------
...
peers:
- name: Joshua-MBP
privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM=
remote: 127.0.0.1:51820
available_from:
- 0.0.0.0/0
...client side config:
-------------------------------------------------------------
client:
privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM=
remote: '{{ server ip address }}'
...
```### Config
Server side config-file
```yaml
server:privatekey: "{{ super-secure-server-private-key }}"
listen: 0.0.0.0:52935
tls:
insecure: false
cert_file: ./cert/server.crt
key_file: ./cert/server.keypeers:
- name: "PeerName"
privatekey: "{{ super-secure-client-private-key }}"
remote: "127.0.0.1:51820"
available_from:
- 192.168.1.0/24
```Client side config-file
```yaml
client:
privatekey: "{{ super-secure-client-private-key }}"
listen: 0.0.0.0:51820
remote: 127.0.0.1:52935
persistentKeepalive: 30
tls:
insecure: false
cert_file: ./cert/server.crt
```### Running
Assume your server domain example.com and you have a service listening on udp port 51820.
if you wish to run the server without tls, use the flag `--insecure` for client and server
```bash
# Run at server side:
utg server --config-file server.yaml# Run at client side:
utg client --config-file client.yaml
```### Docker-Compose example
```yaml
version: '3.7'services:
# init-container
# generate certifiactes for server and client
gen-certificates:
image: mrjoshlab/udp2grpc:latest
command:
- "gen-certificates"
# server ip address
- "--ip"
- "127.0.0.1"
# certificates directory
- "--dir"
- "/cert"
volumes:
- "$PWD/cert/:/cert"# udp2grpc server container
udp2grpc-server:
image: mrjoshlab/udp2grpc:latest
ports:
- "52935:52935/tcp"
command:
- "server"
- "--config-file"
- "/config/server.yaml"
volumes:
- "$PWD/cert/:/cert"
- "$PWD/server.yaml:/config/server.yaml"
restart: unless-stopped
depends_on:
gen-certificates:
condition: service_completed_successfully# udp2grpc client container
udp2grpc-client:
image: mrjoshlab/udp2grpc:latest
ports:
- "51820:51820/udp"
command:
- "client"
- "--config-file"
- "/config/client.yaml"
volumes:
- "$PWD/cert/server.crt:/cert/server.crt"
- "$PWD/client.yaml:/config/client.yaml"
restart: unless-stopped
depends_on:
gen-certificates:
condition: service_completed_successfully
```## Contributing
Thank you for considering contributing to UDP2gRPC project!## License
The UDP2gRPC is open-source software licensed under the MIT license.