frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
说直白点,我主要是想用来:
- 访问内网(现在能访问,但直接访问其它的内网地址还有点问题);
- 安装frpc的电脑开web服务的内网没问题,可以访问;
- 访问不了其它的内网,就先用用远程桌面连接吧。(当然,这个也有第三方的工具,但TeamView免费不好用,Todesk免费还行、就是分辨率、稳定性这些还是差一些)
反正服务器本来就有,就顺便试一下。
frp中文文档:https://github.com/fatedier/frp/blob/dev/README_zh.md
完整文档:https://gofrp.org
release版本下载:https://github.com/fatedier/frp/releases
准备工作:
一共3台机子:
- Ubuntu服务器(带Docker,有公网ip):用来安装frp server端
- 办公室Windows10(已安装docker):安装frp client端
- 本机Windows10:远程连接办公室电脑
frp实现了啥:
比如我办公室Windows10中运行了一个web服务,局域网可以访问,通过以下地址访问:192.168.1.110:5000
但外网是无法访问的。
然后我的Ubuntu服务器(公网ip:43.142.94.65),分别安装了frps、frpc端。
然后通过frp,外面就可以用:43.142.94.65:18188 来访问 192.168.1.110:5000 了。(这里5000端口映射到服务器的18188端口了)
一、搭建frp server(服务器端)
云服务器:带Docker的Ubuntu20.04
1.创建配置文件(frps.ini)
先建个frp的目录,随便放哪里,比如我就放在用户目录(/home/ubuntu
)下:
1 | mkdir frp |
可以直接在服务器(Linux)系统中用vi frps.ini
创建配置文件、编辑、保存。
也可以在本地直接创建好了,用FTP工具上传到 /home/ubuntu/frp
目录下。
frps.ini 文件内容如下:
1 | [common] |
token尽量复杂一些,用Python的话,可以用secrets库生成一下随机密码。
用的是腾讯云轻量服务器,所以要在【防火墙】中先把这些服务器上要用到的端口开一下,即:
7000、7500、7080、7081 四个端口。
2.创建frps容器
1).下载frp服务器镜像 snowdreamtech/frps
docker官方镜像网址:https://hub.docker.com/r/snowdreamtech/frps
1 | docker pull snowdreamtech/frps |
碰到没有权限的时候,命令前面加上sudo
就行。
2).启动容器
我这里配置文件在:/home/ubuntu/frp/frps.ini
1 | docker run --restart=always --network host -d -v /home/ubuntu/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps |
1 | --network host:网络模式host |
启动后,通过docker ps -a
命令查看容器列表。
创建好后,打开网址:服务器ip:7500 就可以看到frp面板了。(我这是:43.142.94.65:7500)
如果出现无法访问的情况,可以在以下网站上查询一下,看服务器端口是否开放:
https://tool.chinaz.com/port
二、搭建frp client(客户端)
办公室Windows10(已安装docker)
安装docker方法:https://yeasy.gitbook.io/docker_practice/install/windows
1.创建配置文件(frpc.ini)
先建个frp的目录,随便放哪里,比如我就放在(E:\frp
)下.
frpc.ini 文件内容如下:
1 | [common] |
这里可以建多个,比如我这就开了3个:ssh、RDP、web_host。
最后对应的访问地址为:FRPS服务器IP地址:remote_port
远程桌面连接地址:43.142.94.65:18189
web访问地址:43.142.94.65:18289 对应本机的 127.0.0.1:5002
用的是腾讯云轻量服务器,所以要在【防火墙】中把这些服务器上要用到的端口开一下,即:
2288、18189、18289 三个端口。
2.创建frpc容器
可以在docker软件中操作,反正跟服务器端差不多的命令,我这就直接用命令了。
1).下载frp客户端镜像 snowdreamtech/frpc
docker官方镜像网址:https://hub.docker.com/r/snowdreamtech/frpc
打开Windows Powershell/命令提示符 用命令下载镜像:
1 | docker pull snowdreamtech/frpc |
2).启动容器
我这里配置文件在:E:/frp/frpc.ini
1 | docker run --restart=always --network host -d -v E:/frp/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc |
启动后,通过docker ps -a
命令查看容器列表。
再刷新刚才打开的网址:服务器ip:7500 就可以看到frp面板了。(我这是:43.142.94.65:7500)如下图所示:
三、远程桌面连接
当然,首先,要在办公室Windows10(已安装docker)这台机子上开启远程桌面:
远程桌面连接地址:43.142.94.65:18189
在Windows系统中打开【远程桌面连接】,输入连接地址和远程连接的计算机的用户名:
注意,Windows10在【体验】选项中,可以选择【LAN(10 Mbps或更高)】,也可以选择【自动检测连接质量】。默认是【低速宽带】,连接上之后,字体变样,感觉很丑、看起来不舒服。
而Windows11的话,默认是【自动检测连接质量】,就没事问题,连接上后自动检测的效果挺好的。
就成功连接啦!
更多关于frp的介绍、配置文件说明,都在官方的文档中有:https://gofrp.org
参考文章:自建内网穿透服务器
frp客户端 login to server failed:EOF解决方法
frp客户端容器启动失败- 本文标题:Docker搭建frp内网穿透服务器
- 本文作者:HDUZN
- 创建时间:2022-06-18 11:54:07
- 本文链接:http://hduzn.cn/2022/06/18/Docker搭建frp内网穿透服务器/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!