跳转至

VPS 使用 Docker 快速部署 Frp 实现内网穿透

Frp 简介

Frp (Fast Reverse Proxy) 是一个专注于内网穿透的高性能反向代理应用。它可以帮助您轻松地将内网服务暴露到公网。 项目地址:https://github.com/fatedier/frp

环境要求

  • 一台具有公网 IP 的服务器(VPS)作为 Frp 服务端
  • 一台内网设备作为 Frp 客户端
  • 两台设备都需要安装 Docker

服务端 Frp 部署

更新系统,并安装 curl 以及 Docker

# 更新系统并安装 Docker
sudo apt update
sudo apt install curl -y
curl -fsSL https://get.docker.com | sh

1. 创建配置目录

mkdir frps && cd frps

2. 创建配置文件

创建 frps.yaml 配置文件,以下是基础配置说明:

# frp 服务端配置
bindAddr = "0.0.0.0"    # 监听所有网卡
bindPort = 7000         # frp 通信端口

# 安全认证配置
auth.method = "token"
auth.token = "token123456"  # 请修改为复杂的随机字符串

# Web 管理面板配置
webServer.addr = "0.0.0.0"  # 面板监听地址
webServer.port = 7500       # 面板访问端口
webServer.user = "admin"    # 面板登录用户名
webServer.password = "admin" # 面板登录密码

3. 创建 Docker Compose 配置

创建 docker-compose.yml 文件:

version: "3"
services:
    frps:
        image: snowdreamtech/frps:0.61.0
        container_name: frps
        restart: always
        network_mode: host
        volumes:
            - ./frps.yaml:/etc/frp/frps.yaml

4. 启动服务

docker compose up -d

服务启动后,可通过 http://<服务器IP>:7500 访问管理页面。

客户端 Frp 配置

同样,需要安装 Docker 以及 curl

sudo apt update
sudo apt install curl -y
curl -fsSL https://get.docker.com | sh

创建配置目录

mkdir frpc && cd frpc

创建配置文件 frpc.yaml,配置说明如下:

# frp 服务端连接信息
serverAddr = "x.x.x.x"  # 替换为你的服务器公网 IP
serverPort = 7000       # 与服务端配置保持一致

# 安全认证配置
auth.method = "token"
auth.token = "token123456"  # 与服务端配置保持一致

# SSH 服务穿透配置示例
[[proxies]]
name = "ssh"           # 代理服务名称
type = "tcp"           # 协议类型
localIP = "127.0.0.1"  # 本地服务 IP
localPort = 22         # 本地服务端口
remotePort = 6000      # 映射到服务器的端口

2. 创建 Docker Compose 配置

创建 docker-compose.yml 文件:

version: "3"
services:
    frpc:
        image: snowdreamtech/frpc:0.61.0
        container_name: frpc
        restart: always
        network_mode: host
        volumes:
            - ./frpc.yaml:/etc/frp/frpc.yaml

3. 启动服务

docker compose up -d

服务端一键部署脚本

将以下内容保存为 install_frps.sh:

#!/bin/bash

# 更新系统并安装必要组件
sudo apt update && sudo apt install -y curl

# 安装Docker
curl -fsSL https://get.docker.com | sh

# 创建frps目录
mkdir -p frps && cd frps

# 创建配置文件
cat > frps.yaml << EOF
bindAddr = "0.0.0.0"
bindPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
EOF

# 创建docker-compose配置
cat > docker-compose.yml << EOF
version: "3"
services:
  frps:
    image: snowdreamtech/frps:0.61.0
    container_name: frps
    restart: always
    network_mode: host
    volumes:
      - ./frps.yaml:/etc/frp/frps.yaml
EOF

# 启动服务
docker compose up -d

echo "Frp服务端部署完成!"
echo "请访问 http://服务器IP:7500 进入管理界面"

使用方法:

chmod +x install_frps.sh
./install_frps.sh

客户端一键部署脚本

将以下内容保存为 install_frpc.sh:

#!/bin/bash

# 更新系统并安装必要组件
sudo apt update && sudo apt install -y curl

# 安装Docker
curl -fsSL https://get.docker.com | sh

# 创建frpc目录
mkdir -p frpc && cd frpc

# 创建配置文件
# 修改以下配置 serverAddr 为服务端地址,serverPort 为服务端端口,auth.token 为服务端认证token
cat > frpc.yaml << EOF
serverAddr = "0.0.0.0"
serverPort = 7000

auth.method = "token"
auth.token = "token123456"

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
EOF

# 创建docker-compose配置
cat > docker-compose.yml << EOF
version: "3"
services:
  frpc:
    image: snowdreamtech/frpc:0.61.0
    container_name: frpc
    restart: always
    network_mode: host
    volumes:
      - ./frpc.yaml:/etc/frp/frpc.yaml
EOF

# 启动服务
docker compose up -d

echo "Frp客户端部署完成!"
echo "请访问 http://localhost:40001 进入管理界面"

使用方法:

chmod +x install_frpc.sh
./install_frpc.sh

重要安全提示

  1. 务必修改默认的 auth.token,建议使用随机字符串生成器生成
  2. 更改管理面板的默认用户名和密码
  3. 建议配置防火墙,只开放必要的端口
  4. 定期检查并更新 frp 版本以修复潜在的安全问题

常见问题排查

  1. 确保服务器防火墙已开放 7000(frp 通信端口)和 7500(管理面板端口)
  2. 检查客户端配置中的 serverAddr 是否正确填写了服务器公网 IP
  3. 验证服务端和客户端的 auth.token 是否一致

监控和维护

1. 日志查看

# 查看服务端日志
docker logs -f frps

# 查看客户端日志
docker logs -f frpc

2. 服务状态检查

# 检查容器状态
docker ps | grep frp

# 检查端口占用
netstat -tunlp | grep frp
本文阅读量  次
本站总访问量  次