All Projects → buraksezer → Gsocks5

buraksezer / Gsocks5

Licence: apache-2.0
Secure SOCKS5 server in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Gsocks5

Nps
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
Stars: ✭ 19,537 (+19835.71%)
Mutual labels:  socks5, socks
Leaf
A lightweight and fast proxy utility tries to include any useful features.
Stars: ✭ 530 (+440.82%)
Mutual labels:  socks, tls
Socks5
A full-fledged high-performance socks5 proxy server written in C#. Plugin support included.
Stars: ✭ 286 (+191.84%)
Mutual labels:  socks5, socks
socks5 list
Auto-updated SOCKS5 proxy list + proxies for Telegram
Stars: ✭ 210 (+114.29%)
Mutual labels:  socks, socks5
Jsocksproxy
SOCKS proxy written in Java
Stars: ✭ 19 (-80.61%)
Mutual labels:  socks5, socks
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 8,395 (+8466.33%)
Mutual labels:  tls, socks5
Socks
A SOCKS (SOCKS4, SOCKS4A and SOCKS5) Proxy Package for Go
Stars: ✭ 355 (+262.24%)
Mutual labels:  socks5, socks
arch-privoxyvpn
Docker build script for Arch Linux base with Privoxy and OpenVPN
Stars: ✭ 55 (-43.88%)
Mutual labels:  socks, socks5
Docker Dante Telegram
dante config builder for Telegram SOCKS-proxy & Dockerfile for building image with such proxy
Stars: ✭ 16 (-83.67%)
Mutual labels:  socks5, socks
Blinksocks
A framework for building composable proxy protocol stack.
Stars: ✭ 587 (+498.98%)
Mutual labels:  socks5, tls
3proxy
3proxy - tiny free proxy server
Stars: ✭ 2,493 (+2443.88%)
Mutual labels:  socks, socks5
Netch
A simple proxy client
Stars: ✭ 10,297 (+10407.14%)
Mutual labels:  socks5, socks
Pummel
Socks5 Proxy HTTP/HTTPS-Flooding (cc) attack
Stars: ✭ 53 (-45.92%)
Mutual labels:  socks, socks5
rsp
Rapid SSH Proxy
Stars: ✭ 223 (+127.55%)
Mutual labels:  socks, socks5
asyncio-socks-server
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.
Stars: ✭ 154 (+57.14%)
Mutual labels:  socks, socks5
Socks5
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support
Stars: ✭ 321 (+227.55%)
Mutual labels:  socks5, socks
python-socks
Core proxy client (SOCKS4, SOCKS5, HTTP) functionality for Python
Stars: ✭ 40 (-59.18%)
Mutual labels:  socks, socks5
Socks5
A full-fledged high-performance socks5 proxy server written in C#. Plugin support included.
Stars: ✭ 331 (+237.76%)
Mutual labels:  socks, socks5
Daze
Daze is a tool to help you link to the Internet.
Stars: ✭ 580 (+491.84%)
Mutual labels:  socks5, socks
Socksio
Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5
Stars: ✭ 27 (-72.45%)
Mutual labels:  socks5, socks

gsocks5

Go Report Card

Hassle-free and secure SOCKS5 server in the Go programming language.

gsocks5 uses go-socks5 library to handle the protocol. UDP isn't supported by go-socks5, so gsocks5 doesn't support that protocol.

gsocks5 consists of two different parts: client and server.

  • The client component runs on your computer and accepts TCP connections from your local host.

  • The server component runs on your remote host and accepts connections from the client component. TLS is enabled on this server by default.

TLS is used to encrypt traffic(SOCKS5 protocol messages and other plain text TCP traffic like HTTP) between server and client components. After SOCKS5 is done with its job, your client and the outside world continue communication over that secured socket. This may seem bad to you. I think, this design choice doesn't create a performance bottleneck or security problem.

So you need to use an SSL certificate to run gsocks5. Self-signed SSL certificates are good for personal use.

gsocks5 supports SOCKS5 authentication protocol. You need to set socks5_username and socks5_password fields in server.json file to get it. In addition, gsocks5 supports an internal authentication mechanism to protect your bandwith from outsiders. Just set password field to get that feature.

gsocks5 has been tested on GNU/Linux and OSX.

Installation

With a correctly configured Go toolchain:

go get -u github.com/buraksezer/gsocks5

Edit the configuration file and and run it on your local host:

gsocks5 -c path/to/client.json

On your server:

gsocks5 -c path/to/server.json

For systemd users, service files for both components have been provided. Please take a look at data folder.

Configuration

There are two different configuration file under data folder.

client.json

Field Type Description
role string Role of this server. Set 'client' on your local host.
debug boolean Disables or enables debug mode.
insecure_skip_verify boolean Disables TLS verification. It's useful if you use a self-signed TLS certificate.
server_addr string Remote SOCKS5 server address, the syntax of laddr is "host:port", like "127.0.0.1:8080".
client_addr string Local proxy server address, the syntax of laddr is "host:port", like "127.0.0.1:8080".
password string Password to authenticate local server on remote server. It's not relevant with SOCKS5 protocol.
keepalive_period int Period between keep alives, in seconds.
dial_timeout int Timeout value for dialing, in seconds.

server.json

Field Type Description
role string Role of this server. Set 'server' on the remote host.
debug boolean Disables or enables debug mode.
server_addr string Address to listen, the syntax of laddr is "host:port", like "127.0.0.1:8080".
password string Password to authenticate local server on remote server. It's not relevant with SOCKS5 protocol.
socks5_username string Username for SOCKS5 Authentication protocol.
socks5_password string Password for SOCKS5 Authentication protocol.
server_cert string Path of your SSL certificate file.
server_key string Path of the private key file of your certificate.

You may need to generate a self-signed SSL certificate for the server component, the following command should work for you:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

Contributions

Please don't hesitate to fork the project and send a pull request or just e-mail me to ask questions and share ideas.

License

The Apache License, Version 2.0 - see LICENSE for more details.

TODO

  • Implement UDP relay, if go-socks5 decides to support UDP.
  • Unit tests
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].