利用Frp实现内网穿透(docker实现)

  • 环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、WSL子系统
  • 涉及知识:docker、Frp

1、WSL子系统配置

之前都在VM虚拟机上创建linux系统,但是最近发现了一个宝藏软件,这是windwos系统自带的,安装非常方便,强烈推荐。参考连接:https://learn.microsoft.com/zh-cn/windows/wsl/install

注意:因为后面使用docker,其中WSL1对docker的支持不如WSL2,推荐安装WSL2,查看版本:wsl -l -v

而wsl2的支持需要开启虚拟机功能,如下图进行开启,如果Hyper-V平台无法勾选,请在Bios中进行开启,参考链接:https://jingyan.baidu.com/article/8ebacdf0df465b49f65cd5d5.html
在这里插入图片描述

2、腾讯云服务器安装frps

Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp中文文档:https://github.com/fatedier/frp/blob/dev/README_zh.md
完整文档:https://gofrp.org

云服务器Centos7:已安装Docker

安装命令:
yum-config-manager --add-repo http://mirrors.aliyun.c om/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

2.1、创建配置文件

cd /home
mkdir frp
cd frp
vim frps.toml

frps.toml (最新版镜像配置文件由frps.ini变化为frps.toml文件了)内容:

[common]
# 监听端口
bind_port = 6868
# 面板端口
dashboard_port = 7878
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = 123456789
# 身份验证
token = swz

用的是腾讯云轻量服务器,所以要在【防火墙】中先把这些服务器上要用到的端口开一下,即:
6868、7878 两个端口

2.2 、创建frps容器

  • 拉取镜像:docker pull snowdreamtech/frps
  • 启动容器:docker run --restart=always --network host -d -v /home/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
  • 查看容器状态,创建成功:docker ps -a
    在这里插入图片描述
  • 查看frps的管理端面板:公网服务器ip:7878,用户:admin、密码:123456789
    在这里插入图片描述

语法解析🐱‍🏍

–network host:网络模式host
-v /home/frp/frps.ini:/etc/frp/frps.ini:配置文件映射
–name frps:容器名称,可以随便取
-d 后台运行

–network host 配置解析🎶:
    直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换。容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace,同时容器将不会虚拟出自己的网卡,而是使用宿主机的IP和端口,如下图host模式所示:
在这里插入图片描述
参考链接:https://blog.csdn.net/Aaron_neil/article/details/128964896

3、WSL2子系统Centos服务器安装frpc服务

子系统安装 见上面目录一,安装后打开页面如下图所示:

在这里插入图片描述

3.1、安装docker

yum update -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-18.03.1.ce
systemctl start docker

执行完systemctl start docker后发现报错:Failed to get D-Bus connection: Operation not permitted
解决方法:https://www.jianshu.com/p/e670ae82e97a,其中内部网址打不开的话,按照链接直接修改/usr/bin/systemctl文件

#启动docker并查看状态,保证是running
systemctl start docker
systemctl status docker

注意:有时候docker一阵阵的会处于dead阶段,但是不影响docker ps等命令的使用,如果一阵时间后启动不起来或者启动有问题,建议重装WSL2,重装命令:

wsl --list
wsl --unregister 系统名

3.2、创建配置文件

cd /home
mkdir frp
cd frp
vim frpc.toml

frpc.toml (最新版镜像配置文件由frpc.ini变化为frpc.toml文件了)内容:

[common]
# server_addr为FRPS服务器IP地址,即公网服务器的ip
server_addr = xxxxx
# server_port为服务端监听端口,bind_port,与frps.toml中保存一致
server_port = 6868
# 身份验证,与frps.toml中保存一致
token = swz
admin_addr = 127.0.0.1
admin_port = 7400	
admin_user = admin
admin_pwd = admin
[admin_ui]
type = tcp
local_port = 7400
remote_port = 5556
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 5555

用的是腾讯云轻量服务器,所以要在【防火墙】中先把这些服务器上要用到的端口开一下,即:
5556、5555两个端口,其中7400端口是fprc的管理端页面,会自动在WSL2机器上开启这个服务,后面[admin_ui]配置了可以通过公务服务器:5556来访问管理端页面;[web]这个配置是通过公务服务器:5555来访问WSL2(127.0.0.1)的8080端口服务,这个服务后面我会配置一个nginx服务,具体见后面讲解。

3.3 、创建frpc容器

  • 拉取镜像:docker pull snowdreamtech/frpc

  • 启动容器:docker run --restart=always --network host -d -v /home/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

  • 查看容器状态,创建成功:docker ps -a
    在这里插入图片描述

  • 查看frpc的管理端面板:公网服务器ip:5556,用户:admin、密码:admin,当看到下图时,说名内网穿透已经实现了。为了进一步验证穿透的能力,下面我将单独启动一个nginx的镜像进行穿透。
    在这里插入图片描述

4、WSL2子系统Centos服务器安装nginx服务

 docker search nginx
 docker pull nginx
 docker pull nginx:1.21.5
 docker run --rm --name nginx-test -p 8080:80 -d nginx:1.21.5

注:这里nginx版本可以随意选择,有的拉取不下来,可以多试试几个版本。
语法解析🐱‍🏍

–name nginx-test:容器名称,可以随便取
-d :后台运行
-p 8080:80 : 端口映射,因为默认是桥接模式,所以需要端口映射,8080是WSL2机器(docker宿主机)的端口,80是docker服务-nginx的启动端口。
–rm :它表示在容器退出时立即删除容器。

使用 docker ps查看服务是否启动,如下图:
在这里插入图片描述

  • 查看 frps 管理端
    在这里插入图片描述
  • 查看 frpc 管理端
    在这里插入图片描述
  • 以上证明配置无误,然后进行访问:http://公网服务器:5555,结果如下:
    在这里插入图片描述

总:虽然我这本地的计算机其实也是连着互联网的,但是我没有单独的开放端口什么的,这应该就可以证明内网穿透了,可以通过将自己的笔记本电脑置于内网(局域网),然后在测试下,应该也没问题,有小伙伴测试了,可以@我下。

参考链接:
https://i007it.com/2022/06/18/Docker%E6%90%AD%E5%BB%BAfrp%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E6%9C%8D%E5%8A%A1%E5%99%A8/

  • 34
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Studying_swz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值