基于Docker的FRP内网穿透部署

4,655 阅读3分钟

安装docker(如果已安装请直接下一步)

安装docker

1.搭建服务端

服务端就是你拥有公网IP的服务器

安装好docker的服务后,创建一个目录用于存放frp的配置文件:

# 创建存放目录
mkdir -p /opt/docker/frps
# 创建frps.ini文件
vim /opt/docker/frps/frps.ini

frps.ini的内容如下:

[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = admin
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081


# 身份验证
token = 12345678

使用以下命令运行frp服务端:

docker run --restart=always --network host -d -v /opt/docker/frps/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

如果执行没有任何报错,那么这样我们就在服务器端创建好了一个服务,注意:如果你使用云服务器的话,需要将对应的端口放开,比如7000的tcp端口。

2.访问web页面

使用http://ip:7500,其中ip为你的服务器ip,使用网页打开。

3.搭建客户端

客户端是你本地想要被映射出去的服务器

同样的,客户端上也使用docker来搭建,当然也可以使用普通二进制来搭建。

mkdir -p /opt/docker/frpc
vim /opt/docker/frpc/frpc.ini

将下面的配置粘贴进去,把server_addr改成你自己的服务器公网ip,根据自己的情况修改自己的配置文件,比如我把192.168.31.100这台服务器的22端口代理到公网服务器的18002端口,就可以如下配置。

[common]
# server_addr为FRPS服务器IP地址
server_addr = x.x.x.x
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 12345678


# [ssh] 为服务名称,下方此处设置为,访问frp服务段的2288端口时,等同于通过中转服务器访问127.0.0.1的22端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP 
# local_port 为目标端口
# remote_port 为远程端口

[ssh]
type = tcp
local_ip = 192.168.31.100
local_port = 22
remote_port = 18022

如果你还需要创建更多的代理,则需要在后方继续配置,注意[]内的内容不能与之前的名称重复。比如把主机192.168.31.101的3389端口代理到公网18023端口上:

……
[rdp]
type = tcp
local_ip = 192.168.31.101
local_port = 3389
remote_port = 18023

保存配置,创建客户端。

docker run --restart=always --network host -d -v /opt/docker/frpc/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc

成功之后访问对应的公网ip就能访问到我们的内网了。

4. 使用docker UI进行管理

在客户端安装dockerUI(Portainer)

Portainer介绍

Portainer 是一个轻量级的基于Web的Docker管理 GUI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。它由可在任何 Docker 引擎上运行的单个容器组成,旨在使部署更简单 。

Portainer 是 DockerUI 的作者重新造的一个新轮子,DockerUI 只能用于单机,无法使用 docker 的swarm ,目前已停止开发。

portainer安装

拉取portainer-ce镜像(portainer/portainer/portainer已被抛弃)

docker pull portainer/portainer-ce

创建一个数据卷

docker volume create portainer_data

启动portainer容器

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

访问客户端的9000端口

ece2faf7abef5ab6820ae314bd16d662.png 修改客户端的配置文件 -- /opt/docker/frpc/frpc.ini

修改成功后直接通过UI管理界面重启容器即可,会中断服务然后生效配置文件。

f4e49215c48a04700eb9ed6acf0450e0.png