深入解析:frp实现内网穿透,公网服务器或云服务器配置frps,本地内网配置frpc
FRP (Fast Reverse Proxy) 是一个高性能的反向代理工具,可用于内网穿透,将内网服务暴露到公网。以下是一个完整的 FRP 内网穿透配置指南,包括服务端(frps)和客户端(frpc)的配置方法。
1. 服务端配置(frps)
服务端需要运行在具有公网 IP 的服务器上(如云服务器)。
(1) 下载并安装 frps
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
cd frp_0.51.3_linux_amd64
(2) 配置 frps.toml
bindPort = 7000 # frp 服务端监听端口
auth.method = "token"
auth.token = "your_password" # 设置一个密码用于客户端连接
webServer.addr = "0.0.0.0"
webServer.port = 7500 # frp 控制面板端口
webServer.user = "admin"
webServer.password = "admin" # 控制面板登录密码
保存到 /etc/frp/frps.toml
。
(3) 启动 frps
./frps -c /etc/frp/frps.toml
或使用 systemd 管理(推荐):
使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frps 服务。
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
相关命令:
# 设置 frps 开机自启动
sudo systemctl enable frps
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
(4) 防火墙开放端口
sudo ufw allow 7000 # frp 服务端端口
sudo ufw allow 7500 # frp 控制面板端口
2. 客户端配置(frpc)
客户端运行在内网机器上,用于将本地服务映射到公网。
(1) 下载并安装 frpc
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
cd frp_0.51.3_linux_amd64
(2) 配置 frpc.toml
serverAddr = "your_server_ip" # 替换为你的服务器 IP
serverPort = 7000 # 与服务端 bindPort 一致
auth.method = "token"
auth.token = "your_password" # 与服务端 auth.token 一致
[[proxies]]
name = "ssh" # 代理名称
type = "tcp" # 代理类型(tcp/http/udp)
localIP = "127.0.0.1"
localPort = 22 # 本地 SSH 端口
remotePort = 6000 # 远程访问端口(通过 server_ip:6000 访问 SSH)
保存到 /etc/frp/frpc.toml
。
(3) 启动 frpc
./frpc -c /etc/frp/frpc.toml
或使用 systemd 管理:
sudo systemctl enable frpc
sudo systemctl start frpc
3. 测试连接
- SSH 内网穿透测试
- 在本地机器运行:
ssh -p 6000 username@your_server_ip
- 即可连接到内网机器。
- HTTP 服务穿透
- 如果想暴露 Web 服务(如 80 端口),修改
frpc.toml
:
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["your_domain.com"] # 需要域名解析到服务器 IP
- 然后访问
http://your_domain.com
即可访问内网 Web 服务。
4. 常见问题
(1) 连接失败
- 检查
serverAddr
是否正确(服务器 IP)。 - 检查
serverPort
是否开放(ufw allow 7000
)。 - 检查
auth.token
是否一致。
(2) 权限问题
- 确保
frps
和frpc
有可执行权限:
chmod +x frps frpc
(3) 查看日志
journalctl -u frps -n 50 # 服务端日志
journalctl -u frpc -n 50 # 客户端日志
5. 进阶配置
- 多端口映射:在
frpc.toml
添加多个[[proxies]]
。 - HTTPS 支持:使用
type = "https"
并配置 TLS。 - 负载均衡:多个客户端绑定同一个
remotePort
。
这样,你的内网服务就可以通过 FRP 安全地暴露到公网了!