Skip to content

TCP 代理对内网服务器的 Socket 端口进行代理,使得外网可以访问内网服务器的 TCP 服务。如 mysql,redis,ssh 等等。

TCP 代理基本配置

TCP 代理的基本架构:

Client <=> ProxyServer <=> EndPoint

一个 TCP 代理的基本配置模板:

yaml
server:
  tcp:
    enable: true
    # tcp 代理类型,none为内网穿透,proxy 为 tcp 代理, socks5 为 socks5 代理
    type: "proxy"
    host: "0.0.0.0"
    # type proxy 为 socket 代理,多个 port 则绑定多个本地端口
    # 多个对应,则每个 port 都和 target 应一一对应
    port: 3306, port1
    # 本地代理端口, type 为 proxy 时无效
    rpcPort: 9012
    key: client
    compress_type: none

proxy_setting:
  - "/3306":
      type: "tcp"
      target: "3306"
      proxy_pass: "tcp://192.168.1.10:3306"
  - "/port1":
      type: "tcp"
      target: "port1"
      proxy_pass: "tcp://192.168.1.10:6379"

说明:

  • port: 一次性代理多个端口号,逗号【英文】分割;proxy_setting 下必须对应每个 port 的 location,不能不一致;
  • proxy_setting.type 必须为 tcp,指定为 tcp 穿透的 location;
  • proxy_setting.name 是可以随意指定的,但 proxy_setting.target 必须和 port 一致,每个 proxy_setting.target 应该和 port 定义的端口号一一对应;
  • proxy_pass.proxy_pass 是配置 tcp endpoint 的地址,一般为:tcp://host:port 地址,当然,tcp:// 的协议前缀可以不写;

TCP 代理一定需要指定后端的服务 ip 和 端口号。