docker搭建frp内网穿透
华子目录
- 实验前的准备工作
- 1.`frp`介绍
- 1.1`frp`的工作原理
- 2.`docker`简介
- 3.下载`frp`
- 4.配置docker镜像加速
- 5.准备`frp`服务端和`frp`客户端
- 6.`frp`客户端与`frp`服务端关闭`firewalld`和`selinux`
- 实验步骤
- 1.docker下运行nginx服务
- 2.上传`frp包`
- 3.解压`frp包`
- 4.配置frp-server端配置文件
- 5.配置frp-client端配置文件
- 6.执行frp脚本启动
- 测试
实验前的准备工作
1.frp
介绍
frp
是一款高性能的内网穿透
工具,它采用客户端-服务端
的模式,通过中转服务器
将外部
网络的请求
转发到内部网络
中的指定计算机
。
1.1frp
的工作原理
客户端
向frp
服务器发送请求,请求
服务器分配一个唯一的客户端ID
。frp
服务器分配一个唯一的客户端ID
,并将其返回给客户端
客户端
使用分配的客户端ID
连接到frp服务器
,以便服务器可以知道客户端连接的计算机和端口
- 当
外部网络
发出请求时,frp
服务器将请求转发
到客户端
上
2.docker
简介
这里我们需要弄清楚4
点:
docker
镜像:一个特殊
的文件系统
docker
容器:docker
镜像运行时的实体
docker
仓库:存放docker
镜像文件的地方docker
数据卷:- 数据持久性:即使
容器
被删除
,Volume
中的数据也不会丢失,因为它们存储在宿主机上
。 - 数据共享:多个容器可以共享同一个
Volume
,使得数据共享变得简单方便。
- 数据持久性:即使
3.下载frp
- https://github.com/fatedier/frp/releases/tag/v0.56.0
4.配置docker镜像加速
- 由于目前国内的
docker
镜像站被全面封杀
,这里博主找到了一个为数不多的docker
镜像加速站,亲测可用
{"registry-mirrors": ["https://dockerhub.icu"]
}
5.准备frp
服务端和frp
客户端
IP | 说明 |
---|---|
172.25.254.99 | frp服务端 |
172.25.254.66 | frp客户端,web服务器 |
6.frp
客户端与frp
服务端关闭firewalld
和selinux
实验步骤
1.docker下运行nginx服务
- 查看
docker
运行状态
[root@frp-client ~]# systemctl is-active docker
active
- 做docker数据卷
[root@frp-client ~]# docker volume create myVolume
myVolume
[root@frp-client ~]# docker volume ls
DRIVER VOLUME NAME
local 7a2f4cc60c2a165c35b65678e090966a35169b41a6a924dbffde63a3fa5c1f61
local 9c2ddeac03bf2ca05d624d9bcc15f43be690c30770206e27e149ab34e5d4208b
local 33eb668b5b2b00e576cc7b1516fedd39b00d5e4d2b785721bc4d4db57f710e65
local 35ce78b1622154a1d2200be9436b177f05b763632985969aed3050fdefcd230b
local 866d9b3799c81138487c29c9b506a81d12b4bf607073d97aaac1e41a52655575
local 5653f75b05220d4a2acb5b01d6d812c6e6fb1e8b6605da946b7ff89f9b7aa83b
local 2656990227a34c0f5e8022aa8a05a7be0c91554a28b2d71e8f4a51d73a5e36f4
local my-web
local myVolume
[root@frp-client ~]# docker volume inspect myVolume
[{"CreatedAt": "2024-08-06T23:51:22+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/myVolume/_data","Name": "myVolume","Options": null,"Scope": "local"}
]
[root@frp-client ~]# cd /var/lib/docker/volumes/myVolume/_data
[root@frp-client _data]# ls
[root@frp-client _data]#
- 运行nginx容器
[root@frp-client ~]# docker run -itd -v myVolume:/usr/share/nginx/html -p 8080:80 --name web nginx
571ece7fe9981eb9b1ced8c6e6503b4aea68e3b8feac81a6d9750c50e804fa6e
[root@frp-client ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
571ece7fe998 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp, :::8080->80/tcp web
- 上传网页文件到
数据卷
中
[root@frp-client ~]# cd /var/lib/docker/volumes/myVolume/_data
[root@frp-client _data]# ls
50x.html CSS img index.html js
- 简单测试
2.上传frp包
- 将下好的
frp包
使用mobaxterm
上传到frp-server
端和frp-client
端的/root
下
[root@frp-server ~]# ls
公共 模板 视频 图片 文档 下载 音乐 桌面 anaconda-ks.cfg frp_0.56.0_linux_amd64.tar.gz
[root@frp-client ~]# ls
公共 模板 视频 图片 文档 下载 音乐 桌面 anaconda-ks.cfg frp_0.56.0_linux_amd64.tar.gz
3.解压frp包
[root@frp-server ~]# tar -zxvf frp_0.56.0_linux_amd64.tar.gz
frp_0.56.0_linux_amd64/
frp_0.56.0_linux_amd64/frpc.toml
frp_0.56.0_linux_amd64/frpc
frp_0.56.0_linux_amd64/frps
frp_0.56.0_linux_amd64/LICENSE
frp_0.56.0_linux_amd64/frps.toml
[root@frp-client ~]# tar -zxvf frp_0.56.0_linux_amd64.tar.gz
frp_0.56.0_linux_amd64/
frp_0.56.0_linux_amd64/frpc.toml
frp_0.56.0_linux_amd64/frpc
frp_0.56.0_linux_amd64/frps
frp_0.56.0_linux_amd64/LICENSE
frp_0.56.0_linux_amd64/frps.toml
frpc
是客户端启动脚本
,frpc.toml
是客户端配置文件
frps
是服务端启动脚本
,frps.toml
是服务端配置文件
4.配置frp-server端配置文件
[root@frp-server frp_0.56.0_linux_amd64]# vim frps.toml
[root@frp-server frp_0.56.0_linux_amd64]# cat frps.toml
bindPort = 7000 #frp监听端口
vhostHTTPPort = 8888 #当访问8888时
5.配置frp-client端配置文件
[root@frp-client frp_0.56.0_linux_amd64]# vim frpc.toml
[root@frp-client frp_0.56.0_linux_amd64]# cat frpc.toml
serverAddr = "172.25.254.99" #服务端IP地址
serverPort = 7000 #frp监听端口[[proxies]]
name = "web-http"
type = "http"
localIP = "127.0.0.1"
localPort = 8080 #frp客户端的端口
customDomains = ["172.25.254.99"]
6.执行frp脚本启动
- 先启动服务端,
-c
用来告诉frps
服务端去加载哪个配置文件
[root@frp-server frp_0.59.0_linux_amd64]# ./frps -c frps.toml
- 再启动客户端,
-c
用来告诉frps
服务端去加载哪个配置文件
[root@frp-client frp_0.59.0_linux_amd64]# ./frpc -c frpc.toml