Skip to content

Plain HTTP Tunnel

PHT是GOST中的一种数据通道类型。

CONNECT方法并不是所有HTTP服务都支持,为了更加通用,GOST利用HTTP协议中更加常用的GET和POST方法来实现数据通道,包括加密的phts和明文的pht两种模式。

TLS证书配置

TLS配置请参考TLS配置说明

不使用TLS

gost -L "http+pht://:8443?authorizePath=/authorize&pushPath=/push&pullPath=/pull"
services:
- name: service-0
  addr: ":8443"
  handler:
    type: http
  listener:
    type: pht
    metadata:
      authorizePath: /authorize
      pushPath: /push
      pullPath: /pull

使用TLS

PHT over LTS。

gost -L "http+phts://:8443?authorizePath=/authorize&pushPath=/push&pullPath=/pull"
services:
- name: service-0
  addr: ":8443"
  handler:
    type: http
  listener:
    type: phts
    metadata:
      authorizePath: /authorize
      pushPath: /push
      pullPath: /pull

自定义请求路径

PHT通道由三部分组成:

  • 授权 - 客户端在与服务端进行数据传输前需要获取服务端的授权码,通过authorizePath选项设置请求的URI,默认值为/authorize
  • 接收数据 - 客户端从服务端获取数据,通过pullPath选项设置请求的URI,默认值为/pull
  • 发送数据 - 客户端发送数据到服务端,通过pushPath选项设置请求的URI,默认值为/push

路径匹配验证

仅当客户端和服务端设定的path参数相同时,连接才能成功建立。

代理协议

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

HTTP Over PHT

gost -L http+pht://:8443
services:
- name: service-0
  addr: :8443
  handler:
    type: http
  listener:
    type: pht
    # type: phts

SOCKS5 Over PHT

gost -L socks5+pht://:8443
services:
- name: service-0
  addr: :8443
  handler:
    type: socks5
  listener:
    type: pht
    # type: phts

Relay Over PHT

gost -L relay+pht://:8443
services:
- name: service-0
  addr: :8443
  handler:
    type: relay
  listener:
    type: pht
    # type: phts

端口转发

PHT通道也可以用作端口转发。

服务端

gost -L pht://:8443/:1080 -L socks5://:1080
等同于

gost -L forward+pht://:8443/:1080 -L socks5://:1080
services:
- name: service-0
  addr: :8443
  handler:
    type: forward
  listener:
    type: pht
    # type: phts
  forwarder:
    nodes:
    - name: target-0
      addr: :1080
- name: service-1
  addr: :1080
  handler:
    type: socks5
  listener:
    type: tcp

通过使用PHT数据通道的端口转发,给1080端口的SOCKS5代理服务增加了PHT数据通道。

此时8443端口等同于:

gost -L socks5+pht://:8443