在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用于转发流量的端口。

相关推荐
leeyi1 小时前
把软件装进不能上网的机房——一套建好了、还没上过战场的交付工程(第101篇)
docker·aigc·agent
YIAN4 小时前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
IT大白鼠6 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐14 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien200416 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
报错小能手16 小时前
Kubernetes入门实战课 3
云原生·容器·kubernetes
天远Date Lab17 小时前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_9620746817 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
小张同学a.18 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
大模型丫丫18 小时前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器