内网穿透工具FRP部署到宝塔Docker容器

发布时间 2023-09-03 13:08:20作者: 林锋1349

1.服务端FRPS安装与配置

服务器需要有固定的公网IP

创建frp目录:

mkdir /frps/conf
vi /frps/conf/frps.ini

也可以直接在宝塔文件管理中添加
image

添加frps.ini文件内容

[common]
bind_port = 7000
#这里填入的token客户端frpc要用到
token = xxxxxx
#控制台账户
dashboard_user = user
#dashboard 控制台密码
dashboard_pwd = password
#dashboard 控制台端口,启动成功后可通过浏览器访问如http://ip:7500
dashboard_port = 7500

Docker构建镜像

image

github因为某些原因可能无法下载,若无法下载,用kgithub代替,
例:https://kgithub.com

image

FROM alpine:3.18

MAINTAINER "LF"

#frp版本
ENV FRP_VERSION 0.49.0

#github因为某些原因可能无法下载,若无法下载,用kgithub代替,kgithub是国内的一个加速代理
RUN mkdir -p /frps \
    && cd /frps \
    && wget https://kgithub.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \
    && mv frp_${FRP_VERSION}_linux_amd64.tar.gz frp.tar.gz \
    && tar -xzf frp.tar.gz -C ./ --strip-components=1  \
    && rm -f frp.tar.gz

#SERVER端口
EXPOSE 7000

#网页端管理端口
EXPOSE 7500 

WORKDIR /frps

ENTRYPOINT ["./frps","-c","frps.ini"]

构建完成后会有两条记录,使用长的那一条;
image

Dockert添加项目模板

frps:镜像换成自己的

image

version: "2.3"
services:
  frps:
    image: sha256:a3f009da34fea87b851c4a606f6f86f0016d6825ee19eebe2d9bfd5053c022b8
    container_name: frps
    restart: always
    #直接使用主机网络模式
    network_mode: host
    volumes:
      - /frps/conf/frps.ini:/frps/frps.ini:ro

拉取镜像

image

添加容器

image

image

如果容器未启动失败,检查/frps/conf/frps.ini 是否创建正确,权限是否为root,另外镜像有可能下载失败,代理地方检查下。

放行端口

在云服务器端和宝塔中系统防火墙中,放行对应端口,7000、7500、7001-7100等
image

image

此时可正常访问FRP服务端管理控制台
image

2.客户端FRPC安装与配置

本次项目所使用的是windows操作系统,没有固定ip

下载软件包

下载地址1

下载地址2

image

下载资源包,解压后,进入目录

image

修改配置文件,frpc.ini,主要不要使用记事本工具,建议使用notepad++,根据自己业务需要开放端口

[common]
#frps的服务器配置,和上一份frps的配置需要一致
#服务器的公网ip
server_addr = 111.222.333.444
#服务器的端口
server_port = 7000
#服务器的token
token = xxxxxx
#客户端也有管理页面,和服务端管理不一样,这个是直接本地ip+端口范围
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = user
admin_pwd = password

#需要映射服务名,需要唯一,建议把映射的本地端口以及远程目标端口写上,方便服务端控制台区分
[ftp-21to7002]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 21
#远程目标端口
remote_port = 7002

[ftp-bdmode1]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 30000
#远程目标端口
remote_port = 30000

[ftp-bdmode2]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 30001
#远程目标端口
remote_port = 30001

[ftp-bdmode3]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 30002
#远程目标端口
remote_port = 30002

[ftp-bdmode4]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 30003
#远程目标端口
remote_port = 30003

[ftp-bdmode5]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 30004
#远程目标端口
remote_port = 30004

[ftp-ftp-990to1990]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 990
#远程目标端口
remote_port = 1990

[ftp-8888to7003]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 8888
#远程目标端口
remote_port = 7003

[web1-80to7004]
type = tcp
local_ip = 127.0.0.1
#需要映射的本地端口
local_port = 80
#远程目标端口
remote_port = 7004

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

在当前目录打开cmd管理员窗口,启动frpc客户端

注意,该cmd窗口不能关掉,否则就断开了。

frpc.exe -c .\frpc.ini

image

此时,配置的端口就可以正常访问了

image

参考文献:

frp官方文档
docker-compose搭建FRP内网穿透