FRP(Fast Reverse Proxy)是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。FRP 由两部分组成:frps
(服务端)和 frpc
(客户端)。以下是使用 frpc
配置实现内网穿透的详细步骤:
一、准备工作
-
下载 FRP
从 FRP 官方 GitHub 仓库(https://github.com/fatedier/frp)下载对应操作系统的版本,解压后得到frps
和frpc
可执行文件。 -
环境要求
- 一台有公网 IP 的服务器(运行
frps
)。 - 一台内网设备(运行
frpc
)。
- 一台有公网 IP 的服务器(运行
二、配置步骤
1. 配置服务端(frps)
在服务端(有公网 IP 的机器)上编辑 frps.ini
文件,示例如下:
[common]
bind_port = 7000 # 服务端监听端口,用于与客户端通信
vhost_http_port = 8080 # HTTP 服务的公网访问端口(可选)
bind_port
:客户端连接服务端的端口,需确保该端口在防火墙中开放。vhost_http_port
:如果需要通过 HTTP 访问内网服务,可配置此端口。
启动服务端:
./frps -c frps.ini
2. 配置客户端(frpc)
在内网设备上编辑 frpc.ini
文件,示例如下:
``
[common]
server_addr = [服务端公网IP] # 服务端地址
server_port = 7000 # 与服务端
bind_port` 一致
[web]
type = http # 穿透协议类型(如 http、tcp、udp 等)
localport = 80 # 内网服务端口
customdomains = [你的域名或公网IP] # 可选,绑定域名或公网 IP
```
说明:
- [web]
:自定义的隧道名称,可随意命名。
- type
:协议类型,根据内网服务选择(如 HTTP 服务用 http
,SSH 用 tcp
)。
- local_port
:内网服务的实际端口。
- custom_domains
:如果需要通过域名访问,可配置域名;否则直接使用服务端 IP。
启动客户端:
./frpc -c frpc.ini
三、验证内网穿透
-
HTTP 服务验证
如果配置了 HTTP 穿透(如type = http
),在浏览器中访问http://[服务端公网IP]:8080
,应能访问内网 HTTP 服务。 -
TCP 服务验证
如果配置了 TCP 穿透(如type = tcp
),可通过telnet
或其他工具连接服务端端口,验证是否转发到内网服务。
四、进阶配置
-
加密通信
在frps.ini
和frpc.ini
中添加token
参数,确保通信安全:[common] token = your_secure_token
-
多服务配置
在frpc.ini
中添加多个隧道,例如:
```ini
[ssh]
type = tcp
localport = 22
remoteport = 6000 # 公网访问 SSH 的端口[web]
type = http
local_port = 80
``` -
日志与调试
启动frps
和frpc
时添加-v
参数查看详细日志,帮助排查问题。
五、常见问题
-
连接失败
- 检查服务端
bind_port
是否在防火墙中开放。 - 确保客户端能访问服务端公网 IP。
- 检查服务端
-
域名无法访问
- 确保域名已解析到服务端公网 IP。
- 检查
custom_domains
配置是否正确。
-
性能问题
- 根据需求调整
frps
和frpc
的并发连接数、超时时间等参数。
- 根据需求调整
六、示例场景
需求:将内网 Web 服务(端口 80)通过公网 IP 访问。
配置:
- 服务端 frps.ini
:
[common]
bind_port = 7000
vhost_http_port = 8080
- 客户端 frpc.ini
:
```ini
[common]
serveraddr = 123.123.123.123
serverport = 7000
[web]
type = http
local_port = 80
``
- 访问方式:
http://123.123.123.123:8080`
通过以上步骤,即可使用 frpc
实现内网穿透。根据实际需求调整配置,确保安全性和性能。