在docker环境部署frp

说明

容器化部署frp。

一个frp server可以连接多个frp client,使frp client的端口通过frp server暴露。

本文采用带EIP的frp server,无EIP的但可以访问互联网的frp client。

环境检查

frp server有EIP,无需查询。

查询frp client出口IP

bash 复制代码
curl ipinfo.io
curl myip.ipip.net
curl ifconfig.me

frp server的网络安全配置应当放行frp client的出口方向IPv4和IPv6所有端口。

frp-server

bash 复制代码
# 创建专用目录
mkdir /frps
cd /frps
# 创建配置文件
vim frps.toml

追加以下内容,完整配置参考https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml

bash 复制代码
# 当前环境提供给客户端建立连接的端口
bindPort = 7000

# 控制面板监听的IP,不要改动,对EIP支持不好。
webServer.addr = "0.0.0.0"
# 访问控制面板的端口号
webServer.port = 7500
# 控制面板账户
webServer.user = "admin"
# 控制面板密码,建议用复杂密码
webServer.password = "admin"

# 配置服务端的鉴权
auth.method = "token"
# 令牌。生成token使用命令openssl rand -hex 32
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"

查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps

例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1

配置compose.yaml,内容如下

bash 复制代码
services:
  frp-server:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1
    container_name: frp-server
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /frps/frps.toml:/opt/frps/frps.toml:ro
    command: ["-c", "/opt/frps/frps.toml"]

部署容器

bash 复制代码
docker compose up -d

日志文件看到下图所示内容表示部署成功,

浏览器访问IP:7500,输入配置文件内置的账户密码admin

frp-client

bash 复制代码
mkdir /frpc
cd /frpc
vim frpc.toml

追加以下内容,参考

bash 复制代码
# frp-server的EIP
serverAddr = "IP"
# frp-server提供服务的端口
serverPort = 7000
# frp-server的令牌
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"
# 示例
[[proxies]]
# 在frp-server必须全局唯一。
name = "ssh-client1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 在frp-server必须全局唯一。
remotePort = 23

查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps

例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1

配置compose.yaml,内容如下

bash 复制代码
services:
  frp-client:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1
    container_name: frp-client
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /frpc/frpc.toml:/opt/frpc/frpc.toml:ro
    command: ["-c", "/opt/frpc/frpc.toml"]

部署容器

bash 复制代码
docker compose up -d

日志看到下图所示,表示连接成功,

在frp server的web界面可见

测试验证

以上述配置为例,在互联网任意可以访问frp server EIP的位置,ssh -v -p 23 frp-client的系统账户@frp-server的EIP,即可登录到frp client。端口23是frp client配置的占用frp server用于转发流量的端口。

相关推荐
骇客野人2 小时前
Redis 完整安装部署方案(Linux,分【源码编译】+【Docker】两种,推荐生产用源码,测试快速用 Docker)
运维
九皇叔叔4 小时前
Kubernetes 资源管理方式详解:命令式与声明式管理
docker·容器·k8s
蓝速科技5 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
chicheese5 小时前
Linux 面试速查表:从初级到高级,附高频场景答题模板
linux·运维
Linux-lucky6 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
智能运维指南6 小时前
2026年ITSM系统怎么选?四款主流方案与五维评估模型
运维·itsm·嘉为蓝鲸
我命由我123457 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
骇客野人7 小时前
测试环境MySQL迁移Vastbase(海量数据库)完整改造与落地实施方案
运维·服务器
迪康Defender7 小时前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
zly35008 小时前
VMware Converter Standalone 物理机转化为虚拟机后源1硬盘变成了2个硬盘(2个硬盘文件)虚拟机无法启动。
linux·运维·服务器