Home

Awesome

relaybaton

A pluggable transport to circumvent Internet censorship with Encrypted SNI.

The project will be updated following the adoption of ECH.

License: MIT GoDoc Go Report Card

Getting Started

Prerequisites

Install

go get github.com/iyouport-org/relaybaton

Build

CLI

CGO_ENABLED=1 should be set in cross-compiling

make

C++ static library

make desktop

Android library

make mobile

Deployment

For supporting ESNI features and hiding the IP address of the server from interception, the server should have a valid domain name and behind Cloudflare CDN.

Cloudflare CDN will provide TLS encryption with ESNI extension.

Server

sudo is required for listening on port 80

sudo relaybation server --config /path/to/server/config.toml

Client

relaybation client --config /path/to/client/config.toml

A local proxy server will listen on the local ports which given in the configuration file.

Configuration

Example

[client]
port = 1080
http_port = 1088
redir_port = 1090
server = "example.com"
username = "username"
password = "password"
proxy_all = true

[server]
port = 80
admin_password = "password"

[db]
type = "sqlite3"
username = "root"
password = "password"
host = "localhost"
port = 1433
database = "relaybaton.db"

[dns]
type = "doh"
server = "cloudflare-dns.com"
addr = "1.1.1.1"

[log]
file = "./log.xml"
level = "trace"

Description of the fields

FieldTOML TypeGo TypeDescription
client.portIntegeruint16SOCKS5 port that client listen to
client.http_portIntegeruint16HTTP port that client listen to
client.redir_portIntegeruint16Redirect port that client listen to
client.serverStringstringdomain name of the server
client.usernameStringstringusername of the client
client.passwordStringstringpassword of the client
client.proxy_allBooleanboolif proxy all traffic
server.portIntegeruint16port that server listen to
server.admin_passwordStringstringpassword of account "admin"
db.typeStringgithub.com/iyouport-org/relaybaton config.dbTypetype of the database
db.usernameStringstringusername for database connection
db.passwordStringstringpassword for database connection
db.hostStringstringhostname for database connection
db.portIntegeruint16port for database connection
db.databaseStringstringname of database
dns.typeStringgithub.com/iyouport-org/relaybaton config.DNSTypetype of DNS resolver
dns.serverStringstringserver name of the DNS server
dns.addrStringnet.AddrIP address of the DNS server
log.fileStringos.Filefilename of log file
log.levelStringgithub.com/sirupsen/logrus logrus.Levelminimum log level to write

Built With

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments