Skip to content

SOCKS4,SOCKS5

SOCKS4

标准的SOCKS4代理服务,同时兼容SOCKS4A协议。

gost -L socks4://:1080
services:
- name: service-0
  addr: :1080
  handler:
    type: socks4
  listener:
    type: tcp

BIND方法

SOCKS4(A)当前仅支持CONNECT方法,不支持BIND方法。

SOCKS5

GOST完整的实现了SOCKS5协议的所有功能,包括RFC1928中的三个命令(CONNECT,BIND,UDP ASSOCIATE)和RFC1929中的用户名/密码认证。

标准的SOCKS5代理服务。

gost -L socks5://user:pass@:1080
gost -L socks://user:pass@:1080

services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    # type: socks
    auth:
      username: user
      password: pass
  listener:
    type: tcp

BIND

BIND功能在服务端默认是禁用状态,可以通过bind选项来开启此功能。

gost -L socks5://user:pass@:1080?bind=true
services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    auth:
      username: user
      password: pass
    metadata:
      bind: true
  listener:
    type: tcp

UDP ASSOCIATE

UDP中转功能在服务端默认是禁用状态,可以通过udp选项来开启此功能。

gost -L socks5://user:pass@:1080?udp=true
services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    auth:
      username: user
      password: pass
    metadata:
      udp: true
  listener:
    type: tcp

扩展功能

GOST在标准SOCKS5协议基础之上增加了一些扩展功能。

协商加密

GOST支持标准SOCKS5协议的0x00(NO AUTHENTICATION REQUIRED)和0x02(USERNAME/PASSWORD)方法,并在此基础上扩展了两个方法:TLS(0x80)和TLS-AUTH(0x82),用于数据加密。

如果客户端和服务端都使用GOST,则数据传输默认会被加密(协商使用0x80或0x82方法),否则使用标准SOCKS5进行通讯(0x00或0x02方法)。可以在任意一端通过notls选项关闭加密协商功能。

gost -L socks5://user:pass@:1080?notls=true
services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    auth:
      username: user
      password: pass
    metadata:
      notls: true
  listener:
    type: tcp

MBIND (Multiplex BIND)

GOST对BIND方法进行了扩展,增加了支持多路复用的BIND方法(0xF2),多路复用基于xtaci/smux库。此扩展主要用于TCP远程端口转发。

服务端

gost -L socks5://:1080?bind=true
services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    metadata:
      bind: true
  listener:
    type: tcp

客户端

gost -L rtcp://:2222/:22 -F socks5://:1080
services:
- name: service-0
  addr: :2222
  handler:
    type: rtcp
  listener:
    type: rtcp
    chain: chain-0
  forwarder:
    nodes:
    - name: target-0
      addr: :22
chains:
- name: chain-0
  hops:
  - name: hop-0
    nodes:
    - name: node-0
      addr: :1080
      connector:
        type: socks
      dialer:
        type: tcp

UDP-TUN (UDP-Over-TCP Tunnel)

GOST对UDP中转方法进行了扩展,增加了UDP-Over-TCP方法(0xF3),此扩展主要用于UDP端口转发。

服务端

gost -L socks5://:1080?udp=true
services:
- name: service-0
  addr: :1080
  handler:
    type: socks5
    metadata:
      udp: true
  listener:
    type: tcp

客户端

gost -L udp://:10053/:53 -F socks5://:1080
services:
- name: service-0
  addr: :10053
  handler:
    type: udp
  listener:
    type: udp
    chain: chain-0
  forwarder:
    nodes:
    - name: target-0
      addr: :53
chains:
- name: chain-0
  hops:
  - name: hop-0
    nodes:
    - name: node-0
      addr: :1080
      connector:
        type: socks
      dialer:
        type: tcp

数据通道

SOCKS代理可以与各种数据通道组合使用。

SOCKS Over TLS

gost -L socks5+tls://:8443?notls=true
gost -L socks4+tls://:8443
services:
- name: service-0
  addr: :8443
  handler:
    type: socks5
    # type: socks4
    metadata:
      notls: true
  listener:
    type: tls

双重加密

这里为了避免双重加密,将SOCKS5的加密协商功能关闭(notls)。

SOCKS Over Websocket

gost -L socks5+ws://:8080
gost -L socks5+wss://:8080
services:
- name: service-0
  addr: :8080
  handler:
    type: socks5
    # type: socks4
  listener:
    type: ws
    # type: wss

SOCKS Over KCP

gost -L socks5+kcp://:8080
services:
- name: service-0
  addr: :8080
  handler:
    type: socks5
    # type: socks4
  listener:
    type: kcp