云计算百科
云计算领域专业知识百科平台

在Linux上搭建FRP服务器及Docker部署FRP实现内网穿透方案一(FRP直接HTTPS)

在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需在服务器防火墙放行


六、安全增强实践

  • 端口最小化开放ufw allow 7000,80,443,7500/tcp # 仅开放必要端口
  • 启用TLS加密:服务端配置 transport.tls.force = true
  • 面板访问限制:通过Nginx反向代理添加HTTPS和IP白名单
  • 定期更新:关注GitHub Releases修复漏洞

  • 七、常见问题排查

    问题现象解决方案
    客户端连接失败 检查auth.token一致性及防火墙规则
    面板无法访问 确认webServer.addr非127.0.0.1
    HTTPS穿透证书错误 客户端配置crtPath和keyPath证书路径
    服务间歇性断开 增加transport.heartbeatTimeout = 30

    完整配置参考:FRP官方文档


    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 在Linux上搭建FRP服务器及Docker部署FRP实现内网穿透方案一(FRP直接HTTPS)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!