在Linux上搭建FRP服务器及Docker部署FRP实现内网穿透
一、FRP基础知识与版本变化
- 服务端:frps(运行于公网服务器)
- 客户端:frpc(运行于内网设备)
二、原生部署FRP服务端(Linux)
1. 下载与解压
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
tar -zxvf frp_*.tar.gz && cd frp_0.62.1_linux_amd64
如果下载比较慢,可以本地科学下载后上传到服务器上:
2. 配置服务端(frps.toml)
# 基础通信
bindPort = 7000
# HTTP/HTTPS代理(按需启用)
vhostHTTPPort = 80
vhostHTTPSPort = 443
# 安全认证
auth.method = "token" # 鉴权方式
auth.token = "your_secure_token" # 强密码建议12位以上
transport.tls.force = true # 强制TLS加密
# 监控面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin@Secure123"
# 高级设置(按需配置)
allowPorts = [{ start = 20000, end = 60000 }] # 仅限制客户端通过FRP服务端暴露的远程端口,防止客户端随意占用敏感端口(如22/80/443等)
log.level = "warn" # 减少日志量
log.maxDays = 7 # 日志保留天数
3. 启动与守护进程
# 测试启动
./frps -c frps.toml
# 注册systemd服务(开机自启)
sudo tee /etc/systemd/system/frps.service <<EOF
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
ExecStart=$(pwd)/frps -c $(pwd)/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable –now frps
三、Docker部署FRP服务端(配置文件挂载主机)
1. 创建主机目录与配置文件
mkdir -p /data/frps && vim /data/frps/frps.toml # 内容同上
2. 启动Docker容器
docker run -d –name frps \\
–restart=always \\
-p 7000:7000 -p 80:80 -p 443:443 -p 7500:7500 \\
-v /data/frps/frps.toml:/etc/frp/frps.toml \\
snowdreamtech/frps:latest
关键参数说明:
- -v:将主机/data/frps目录挂载至容器配置路径,实现配置持久化
- 端口映射:按需开放7000(通信)、80/443(HTTP/S)、7500(面板)
四、客户端连接配置(frpc.toml)
1. 通用配置模板
serverAddr = "your_server_ip" # 服务器公网IP或域名
serverPort = 7000
auth.method = "token"
auth.token = "your_secure_token" # 与服务端一致
# 示例1:SSH穿透
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000 # 通过服务器6000端口访问
# 示例2:Web服务(HTTP)
[[proxies]]
name = "web"
type = "http"
localPort = 8080
customDomains = ["test.yourdomain.com"] # 需域名解析至服务器IP
# 示例3:远程桌面(Windows)
[[proxies]]
name = "rdp"
type = "tcp"
localPort = 3389
remotePort = 13389
2. 启动客户端
Windows客户端下载:
# Linux
./frpc -c frpc.toml
# Windows
frpc.exe -c frpc.toml
五、常用服务穿透示例
SSH | type="tcp", localPort=22 | ssh -p 6000 user@server_ip |
HTTP网站 | type="http", customDomains=["域名"] | http://域名 |
远程桌面(RDP) | type="tcp", localPort=3389 | mstsc server_ip:13389 |
Samba文件共享 | type="tcp", localPort=445 | \\\\server_ip\\share -p 4450 |
注:remotePort需在服务器防火墙放行
六、安全增强实践
七、常见问题排查
客户端连接失败 | 检查auth.token一致性及防火墙规则 |
面板无法访问 | 确认webServer.addr非127.0.0.1 |
HTTPS穿透证书错误 | 客户端配置crtPath和keyPath证书路径 |
服务间歇性断开 | 增加transport.heartbeatTimeout = 30 |
完整配置参考:FRP官方文档
评论前必须登录!
注册