深入解析: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 安全地暴露到公网了!
xisesmzuhdnhruyrjzoylljgqzpzxo