使用 frp 进行内网穿透
frp 是一个开源的内网穿透工具,可以使外网设备访问内网防火墙后的设备/服务器。
比如可以买一个 99元/年 的阿里云低配 ECS,然后把自己相对高配的旧电脑放在家里。
家里的旧电脑通过 frp 连上 ECS 之后,外网设备就可以通过 ECS 访问这台旧电脑了。
这种方案适合搭建自己的代码管理系统、CI/CD、个人博客、小型论坛、股票系统等等。
server 端(阿里云ECS)的配置
# #################################
# frps.yaml - frp 服务端配置
# 说明:此文件仅用于阅读和管理
# #################################
# 绑定的服务监听地址(默认仅本地回环),如需公网访问请设置为 0.0.0.0
bindAddr: "0.0.0.0"
# frp 服务默认监听 7000 端口(供家里旧电脑使用)
bindPort: 7000
# 可选:使用 KCP 协议加速(UDP)时监听的端口
# kcpBindPort: 7000
# 可选:QUIC 协议监听端口(建议单独配置)
# quicBindPort: 7001
# 可选:UDP 协议端口(供 UDP 转发使用)
# bindUdpPort: 7002
# 设置 token,用于客户端认证
authentication:
method: "token" # 可选:"token"、"oidc"
token: "your_secure_token_here"
# 是否启用 TLS 加密
# transport:
# tls:
# enable: true
# certFile: "/path/to/cert.pem"
# keyFile: "/path/to/key.pem"
# 仪表盘 dashboard 配置(用于查看连接状态)
webServer:
addr: "0.0.0.0" # 监听地址(本地可设为127.0.0.1,公网需设为0.0.0.0)
port: 7500 # dashboard 监听端口
user: "admin" # 登录用户名(可选)
password: "admin" # 登录密码(可选)
# tlsEnable: false # dashboard 是否启用 HTTPS(默认 false)
# 日志相关配置
log:
level: "info" # 日志级别:trace, debug, info, warn, error
to: "./frps.log" # 日志输出文件路径(默认 stdout)
maxDays: 7 # 日志保留天数
disablePrintColor: false
# 最大客户端连接数限制
maxPoolCount: 100
# TCP 多路复用(提升性能)
tcpMux:
enable: true
# keepaliveInterval: 60
# 是否允许客户端访问 frps 的配置接口(高危)
# allowPorts: [80, 443, 22] # 控制哪些端口可被客户端映射
# 控制哪些客户端可以连接(基于 ID 认证,可选)
# clients:
# - id: clientA
# token: abc123
# 允许的代理类型
# allowProxyTypes:
# - tcp
# - udp
# - http
# - https
# - stcp
# - xtcp
# 自定义 DNS 解析器
# dnsServer: "8.8.8.8"
# 自定义端口映射范围限制(防止乱用)
# portRange:
# min: 10000
# max: 20000
client 端(家里旧电脑)的配置
# #################################
# frpc.yaml - frp 客户端配置
# #################################
# 服务器的 ip
serverAddr: "x.x.x.x"
# 服务器的端口(与服务端 bindPort 对应)
serverPort: 7000
# 客户端身份认证(与服务端 token 必须一致)
authentication:
method: "token"
token: "your_secure_token_here"
# 可选:客户端自己的唯一 ID(用于多客户端场景)
# user: "my-client-id"
# 日志相关设置
log:
level: "info" # 可选:trace, debug, info, warn, error
to: "./frpc.log" # 日志输出路径
maxDays: 7 # 日志保留天数
disablePrintColor: false # 是否禁用彩色输出
# TCP 多路复用(默认开启)
tcpMux:
enable: true
# 连接 frps 的协议类型(可选:tcp, kcp, quic, websocket, wss)
# transport:
# protocol: "tcp"
# #################################
# 定义需要穿透的服务(proxies)
# 支持多个,格式类似数组项
# #################################
proxies:
# 此处开启一个 ssh 服务
- name: "ssh" # 内网服务的名称(可任意)
type: "tcp" # 基于 tcp
localIP: "127.0.0.1" # 从公网访问内网服务的地址,默认为本机的 "127.0.0.1"
localPort: 22 # 从公网访问内网服务的端口,默认为本机的 22 端口(ssh-server)
remotePort: 7001 # 公网通过 "ssh -p 7001 root@x.x.x.x" 访问 frp 客户端的 ssh-server,即:frps 服务器的 7001 端口的数据都会被转发给内网的 ssh 服务
# 此处开启一个 http 服务
- name: "web" # 内网服务的名称(可任意)
type: "http" # 基于 tcp
localPort: 8200 # 暴露给公网用户的端口,可以通过 http://x.x.x.x:8200 访问内网的 http 服务器
remotePort: 8200 # 公网映射端口
# customDomains: "www.yourdomain.com" # 自定义域名(如开启,取消前面的注释)
# STCP 加密通道(适合内网 P2P)
# - name: "secure-service"
# type: "stcp"
# localPort: 9000
# secretKey: "shared_key"
# UDP 穿透示例(如 DNS)
# - name: "dns"
# type: "udp"
# localPort: 53
# remotePort: 1053
# #################################
# 可选:插件、自定义域名、多用户、TLS等高级配置
# #################################
# 支持插件,如 HTTPS → 本地 HTTP 转换
# - name: "https-plugin"
# type: "https"
# plugin:
# name: "https2http"
# localAddr: "127.0.0.1:80"
# crtPath: "/path/to/cert.crt"
# keyPath: "/path/to/cert.key"
# hostHeaderRewrite: "127.0.0.1"

浙公网安备 33010602011771号