HevSocks5Server is a simple, lightweight socks5 server.
- IPv4/IPv6. (dual stack)
- Standard
CONNECTcommand. - Standard
UDP ASSOCIATEcommand. 1 - Extended
FWD UDPcommand. (UDP in TCP) 2 - Multiple username/password authentication.
See here for more details.
git clone --recursive https://github.com/heiher/hev-socks5-server cd hev-socks5-server make # statically link make ENABLE_STATIC=1mkdir hev-socks5-server cd hev-socks5-server git clone --recursive https://github.com/heiher/hev-socks5-server jni cd jni ndk-buildgit clone --recursive https://github.com/heiher/hev-socks5-server cd hev-socks5-server # will generate HevSocks5Server.xcframework ./build-apple.shexport MSYS=winsymlinks:native git clone --recursive https://github.com/heiher/hev-socks5-server cd hev-socks5-server makemain: # Worker threads workers: 4 # Listen port port: 1080 # Listen address (ipv4|ipv6) listen-address: '::' # UDP listen port (0: random, a-b: range) # udp-port: 0 # UDP listen address (ipv4|ipv6) # udp-listen-address: '::1' # UDP public address (ipv4) # udp-public-address-v4: '' # UDP public address (ipv6) # udp-public-address-v6: '' # Listen ipv6 only listen-ipv6-only: false # Bind source address (ipv4|ipv6) # It is overridden by bind-address-v{4,6} if specified bind-address: '' # Bind source address (ipv4) bind-address-v4: '' # Bind source address (ipv6) bind-address-v6: '' # Bind source network interface bind-interface: '' # Domain address type (ipv4|ipv6|unspec) domain-address-type: unspec # Socket mark (hex: 0x1, dec: 1, oct: 01) mark: 0 #auth: # file: conf/auth.txt # username: # password: #misc: # task stack size (bytes) # task-stack-size: 8192 # udp socket recv buffer (SO_RCVBUF) size (bytes) # udp-recv-buffer-size: 524288 # number of udp buffers in splice, 1500 bytes per buffer. # udp-copy-buffer-nums: 10 # TCP connect timeout (ms) # connect-timeout: 10000 # TCP read-write timeout (ms) # tcp-read-write-timeout: 300000 # UDP read-write timeout (ms) # udp-read-write-timeout: 60000 # stdout, stderr or file-path # log-file: stderr # debug, info, warn or error # log-level: warn # If present, run as a daemon with this pid file # pid-file: /run/hev-socks5-server.pid # If present, set rlimit nofile; else use default value # limit-nofile: 65535<USERNAME> <SPACE> <PASSWORD> <SPACE> <MARK> <LF> - USERNAME: A string of up to 255 characters
- PASSWORD: A string of up to 255 characters
- MARK: Hexadecimal
bin/hev-socks5-server conf/main.ymlSend signal SIGUSR1 to socks5 server process after the authentication file is updated.
killall -SIGUSR1 hev-socks5-serverFor example, limit the number of connections for jerry up to 2:
auth: file: conf/auth.txtjerry pass 1a iptables -A OUTPUT -p tcp --syn -m mark --mark 0x1a -m connlimit --connlimit-above 2 -j REJECTRepo: https://github.com/openwrt/packages/tree/master/net/hev-socks5-server
# Install package opkg install hev-socks5-server # Edit /etc/config/hev-socks5-server # Restart service /etc/init.d/hev-socks5-server restart/** * hev_socks5_server_main_from_file: * @config_path: config file path * * Start and run the socks5 server, this function will blocks until the * hev_socks5_server_quit is called or an error occurs. * * Returns: returns zero on successful, otherwise returns -1. * * Since: 2.6.7 */ int hev_socks5_server_main_from_file (const char *config_path); /** * hev_socks5_server_main_from_str: * @config_str: string config * @config_len: the byte length of string config * * Start and run the socks5 server, this function will blocks until the * hev_socks5_server_quit is called or an error occurs. * * Returns: returns zero on successful, otherwise returns -1. * * Since: 2.6.7 */ int hev_socks5_server_main_from_str (const unsigned char *config_str, unsigned int config_len); /** * hev_socks5_server_quit: * * Stop the socks5 server. * * Since: 2.6.7 */ void hev_socks5_server_quit (void);- ammar faizi - https://github.com/ammarfaizi2
- hev - https://hev.cc
- pexcn - i@pexcn.me
MIT
Footnotes
-
Windows is not supported at this time. ↩
-
See protocol specification. The hev-socks5-tunnel and hev-socks5-tproxy clients support UDP relay over TCP. ↩





