Awesome
relaybaton
A pluggable transport to circumvent Internet censorship with Encrypted SNI.
The project will be updated following the adoption of ECH.
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
Field | TOML Type | Go Type | Description |
---|---|---|---|
client.port | Integer | uint16 | SOCKS5 port that client listen to |
client.http_port | Integer | uint16 | HTTP port that client listen to |
client.redir_port | Integer | uint16 | Redirect port that client listen to |
client.server | String | string | domain name of the server |
client.username | String | string | username of the client |
client.password | String | string | password of the client |
client.proxy_all | Boolean | bool | if proxy all traffic |
server.port | Integer | uint16 | port that server listen to |
server.admin_password | String | string | password of account "admin" |
db.type | String | github.com/iyouport-org/relaybaton config.dbType | type of the database |
db.username | String | string | username for database connection |
db.password | String | string | password for database connection |
db.host | String | string | hostname for database connection |
db.port | Integer | uint16 | port for database connection |
db.database | String | string | name of database |
dns.type | String | github.com/iyouport-org/relaybaton config.DNSType | type of DNS resolver |
dns.server | String | string | server name of the DNS server |
dns.addr | String | net.Addr | IP address of the DNS server |
log.file | String | os.File | filename of log file |
log.level | String | github.com/sirupsen/logrus logrus.Level | minimum log level to write |
Built With
- github.com/cloudflare/tls-tris - crypto/tls, now with 100% more 1.3.
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
- Cloudflare