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

相关推荐
运维行者_1 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
刚入门的大一新生2 小时前
Linux-Linux第一个系统程序-进度条
linux·运维·服务器
梦想的旅途22 小时前
企业微信自动化实战:客户资料自动修改与备注同步
运维·自动化·企业微信
梦想的旅途22 小时前
企业微信自动化实战:客户通讯录备份与关系自动迁移
运维·自动化·企业微信
FlightYe2 小时前
linux系统编程(八):阻塞与非阻塞IO对比
android·linux·运维·服务器·github·vim
淮北4943 小时前
ubuntu22 默认输入法调整频率
运维·服务器·git·ubuntu·elasticsearch
Percep_gan3 小时前
切割服务器日志
运维·服务器
骇客野人3 小时前
阿里云运维手册(通用生产版|云上运维标准化文档)
运维·阿里云·云计算
九硕智慧建筑一体化厂家4 小时前
交通基础设施直流照明系统,隧道与轨道交通照明新方案
运维·人工智能·智慧城市