https://github.com/0990/socks5
socks5 proxy,support tcp,udp
https://github.com/0990/socks5
go-socks socks4 socks4a socks5 socks5-server
Last synced: 26 days ago
JSON representation
socks5 proxy,support tcp,udp
- Host: GitHub
- URL: https://github.com/0990/socks5
- Owner: 0990
- License: apache-2.0
- Created: 2020-07-09T10:40:22.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-09-29T11:56:30.000Z (8 months ago)
- Last Synced: 2025-09-29T13:31:01.022Z (8 months ago)
- Topics: go-socks, socks4, socks4a, socks5, socks5-server
- Language: Go
- Homepage:
- Size: 70.3 KB
- Stars: 68
- Watchers: 3
- Forks: 27
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# socks5
[中文文档](doc/README_zh.md)
A lightweight SOCKS proxy server that supports socks4, socks4a, and socks5 protocols. The code is simple and easy to read, just like the original SOCKS protocol.
## Feature
* support [socks4](doc/SOCKS4.protocol.txt),[socks4a](doc/socks4A.protocol.txt),[socks5(TCP&UDP)](doc/rfc1928.txt)
* Supports [socks5 username/password authentication](doc/rfc1929.txt)
## Usage
Download the latest program for your operating system and architecture from the [Release](https://github.com/0990/socks5/releases) page.
Extracting,then execute the binary file directly (Linux platform requires execution permission)
```bash
./ss5
```
or
```bash
./ss5 -c ./ss5.json
```
[Docker installation](doc/docker.md)
### Configuration
The ss5.json file in the extracted directory is the configuration file
Simple configuration instructions:
```
ListenPort The listening port for TCP and UDP proxies, default is 1080
UserName,Password Fill in if username/password authentication is required, default is empty
LogLevel Log level (debug, info, warn, error)
```
[Advanced configuration](doc/config.md)
## Package Usage
```
go get github.com/0990/socks5
```
Here is a simple example:
```
s := socks5.NewServer(socks5.ServerCfg{
ListenPort: 1080,
UserName: "",
Password: "",
UDPTimout: 60,
TCPTimeout: 60,
LogLevel:"error"
})
err := s.Run()
if err != nil {
log.Fatalln(err)
}
```
## TODO
* Support BIND command
## Thanks
[txthinking/socks5](https://github.com/txthinking/socks5)