内网穿透FRP

cat
9
2025-08-27

frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。此外,还可以通过 xtcp 实现 P2P 通信。

官网上下载可能会比较慢,可以用我下载好的压缩包。frpc: 客户端可执行程序,运行在内网环境中 frpc.toml:客户端配置文件,定义如何连接服务端和暴露内网服务 frps:服务端可执行程序,运行在公网服务器上 frps.toml:服务端配置文件,定义服务端如何接收客户端连接和转发流量。

服务器docker安装

docker run --restart=always --network host -d -v /文件/frps/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

frps.toml配置文件如下

# ==============================
# FRP 服务器端(frps.ini)配置
# ==============================

# 绑定监听地址(默认 `0.0.0.0` 代表监听所有 IP)
bindAddr = "0.0.0.0"

#  服务器监听端口(客户端需要通过该端口连接 FRP 服务器)
bindPort = 7000

# HTTP 端口(用于内网 HTTP 代理穿透)
vhostHTTPPort = 80

# HTTPS 端口(用于内网 HTTPS 代理穿透)
vhostHTTPSPort = 443

# 子域名支持
# 可以通过 `subDomainHost` 解析动态子域名
# 例如:如果 `subDomainHost` 配置为 "example.com"
# 那么客户端可以使用 `test.example.com` 访问内网服务
# 如果你没有域名或不使用此功能,请删除此行!
# 如果你要用IP直连例如:168.0.0.1:8848,就把这行删掉,不要配置!
#subDomainHost = "xxxx.com"  # 请替换为你的真实域名

# =============================================
# Web 控制台(Dashboard)配置
# =============================================

# 监控界面监听地址(`0.0.0.0` 代表所有 IP 可访问)
webServer.addr = "0.0.0.0"

# Web 管理面板端口(可在浏览器访问,默认 7500)
# 你可以通过 `http://你的公网IP:7500` 访问 FRP 管理面板
webServer.port = 7500

# Web 控制台管理账号(可自定义)
webServer.user = "admin"

# Web 控制台密码(请自行修改)
webServer.password = "123456789"

# =============================================
# 身份验证(Authentication)配置
# =============================================

#  认证方式(防止未经授权的客户端连接)
# 目前 FRP 支持 `token` 和 `oidc` 方式,我们选用token
auth.method = "token"

#  Token 认证(客户端需要匹配相同 token 才能连接)
# 通俗来说就是密码,写一个你能记住的,尽量长一点
# 示例: 123-abc-123abc 
auth.token = "admin"   # 请自行修改,不要用我的

客户端口docker 安装

docker run --restart=always --network host -d -v /文件/frpc/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

frpc.toml配置文件

# 服务端地址(这里要填你有公网IP的服务器的IP或者是服务器的域名)
serverAddr = "81.1.1.1"
# 服务器端口(Frp 服务端监听的端口)
serverPort = 7000

# 连接协议
#transport.protocol = "tcp"

# 认证方式
auth.method = "token"
# 认证所使用的 Token(要和你刚才配置的服务端token完全一样!)
auth.token = "admin"

# 端口代理配置
[proxies]
# 代理名称(标识该代理的名称,根据你的喜好填写)
name = "text"
 type = "tcp"   # IP+端口直连用这个
#type = "tcp"
# 本地 IP(Frp 客户端需要将流量转发到的本地地址)
localIP = "127.0.0.1"
# 本地端口(Frp 客户端需要将流量转发到的本地端口,根据你要穿透的端口来填写)
localPort = 88
remotePort = 8844
# 这个端口和localPort 配置的一模一样,这样才能正常访问!
# web代理配置
[proxies]
name = "blog_http"
type = "http"
localPort = 80
customDomains = "123.cat.com"
[proxies]
name = "blog_https"
type = "https"
localPort = 443
customDomains = "123.cat.com"

服务跟客户端口分别启就可以在服务的管理面板看到客户端上线了,内网映射就成功了

动物装饰