文章目录
-
- 2.1、创建配置文件
- [2.2 、创建frps容器](#2.2 、创建frps容器)
-
- 3.1、安装docker
- 3.2、创建配置文件
- [3.3 、创建frpc容器](#3.3 、创建frpc容器)
-
环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、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
- 下载 Linux 内核更新包、将 WSL 2 设置为默认版本(按照参考链接走)
- Ubuntu系统下载以及安装选择自己适合版本
- 官方没有找到Centos的,可以在这里下载安装即可:https://github.com/mishamosher/CentOS-WSL/releases/tag/7.9-2211
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、创建配置文件
bash
cd /home
mkdir frp
cd frp
vim frps.toml
frps.toml (最新版镜像配置文件由frps.ini变化为frps.toml文件了)内容:
go
[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
bash
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文件
bash
#启动docker并查看状态,保证是running
systemctl start docker
systemctl status docker
注意:有时候docker一阵阵的会处于dead阶段,但是不影响docker ps等命令的使用,如果一阵时间后启动不起来或者启动有问题,建议重装WSL2,重装命令:
bash
wsl --list
wsl --unregister 系统名
3.2、创建配置文件
bash
cd /home
mkdir frp
cd frp
vim frpc.toml
frpc.toml (最新版镜像配置文件由frpc.ini变化为frpc.toml文件了)内容:
bash
[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服务
bash
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
,结果如下:
总:虽然我这本地的计算机其实也是连着互联网的,但是我没有单独的开放端口什么的,这应该就可以证明内网穿透了,可以通过将自己的笔记本电脑置于内网(局域网),然后在测试下,应该也没问题,有小伙伴测试了,可以@我下。