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 和 端口号。