内网穿透工具FRP部署到宝塔Docker容器
1.服务端FRPS安装与配置
服务器需要有固定的公网IP
创建frp目录:
mkdir /frps/conf
vi /frps/conf/frps.ini
也可以直接在宝塔文件管理中添加
添加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构建镜像
github因为某些原因可能无法下载,若无法下载,用kgithub代替,
例:https://kgithub.com
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"]
构建完成后会有两条记录,使用长的那一条;
Dockert添加项目模板
frps:镜像换成自己的
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
拉取镜像
添加容器
如果容器未启动失败,检查/frps/conf/frps.ini 是否创建正确,权限是否为root,另外镜像有可能下载失败,代理地方检查下。
放行端口
在云服务器端和宝塔中系统防火墙中,放行对应端口,7000、7500、7001-7100等
此时可正常访问FRP服务端管理控制台
2.客户端FRPC安装与配置
本次项目所使用的是windows操作系统,没有固定ip
下载软件包
下载资源包,解压后,进入目录
修改配置文件,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
此时,配置的端口就可以正常访问了
参考文献: