FRP 内网穿透、反向代理

FRP 内网穿透、反向代理,第1张

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

本文将以暴露内网 Web 服务为例,实践 frp 的安装部署。更多应用场景,可见 frp 示例[2]

frp 主要由 客户端(frpc) 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

可以在 Github 的 Release[3] 页面中下载到最新版本的客户端和服务端二进制文件。

本文公网、内网机器都是 Linux x86_64 ,所以选择了 frp_0.39.0_linux_amd64.tar.gz 。解压:

拷贝 frps 文件进公网机器,假设其 IP 为 x.x.x.x :

修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:

安装 supervisor 进行部署,后台长期运行:

拷贝 frpc 文件进内网机器,假设其 IP 为 192.168.1.100 :

修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x , local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains 。

将 www.yourdomain.com 的域名 A 记录解析到 IP x.x.x.x 。

简单运行服务,进行测试:

以 systemd 进行部署,后台长期运行:

[1] frp: https://github.com/fatedier/frp

[2] frp 示例: https://gofrp.org/docs/examples/

[3] Release: https://github.com/fatedier/frp/releases

[TOC]

由于没有公网IP,无法远程连接家里的电脑,搜到了 frp 这个项目,尝试使用后发现效果不错,所以写出安装过程分享。

frp是一个反向代理工具,可以将流量转发到目标主机,包括TCP,UDP,HTTP,HTTPS。其基本原理是目标主机安装客户端连接到代理服务器建立固定连接,客户主机通过代理服务器连接到目标主机进行访问。

市面上有向日葵,TeamViewer也是类似原理,只不过这里变成代理服务器需要我们自己提供,比如从腾讯云或者阿里云购买一台轻量服务器作为代理服务器,有固定的公网IP可以访问。自建服务器的好处是带宽独享,可以有更稳定的连接效果。

而制作镜像是希望能够方便多次部署。

SELinux是关闭状态,不需要处理

防火墙是关闭状态,把防火墙开启

提前开放一段端口范围,用于frp流量转发。

查看docker

docker还没安装,需要自己安装。

添加docker的安装源。

查看docker-ce版本

这里看到提示 versionlock ,由于只是安装frp,所以先把锁删掉。

Docker可以默认安装最新版本,或者指定版本安装,分别指令如下。

这里直接安装最新版本,等待安装完成

安装完后确认docker版本,并启动docker服务

登录代理服务器,创建目录并将frp复制到目录下

将frps.ini备份并编辑frps.ini。

编辑Dockerfile

配置完毕,可以开始构建镜像

构建需要拉取CentOS,根据网速可能需要等待一会儿

查看镜像,可以看到镜像已经制作完成,TAG是v1

基于镜像开启容器

查看监听端口是否开启

查看容器日志

目前看来一切正常。尝试访问监控面板。

之前配置端口 dashboard_port = 20001,假设代理服务器IP是106.13.127.200,那么通过 http://106.13.127.200:20001 访问监控面板

正常情况下,会提示输入之前配置的用户和密码,并看到如下页面

代理服务器配置好后,配置目标主机,

关于远程连接的配置这里不做说明,默认已配置好远程连接的参数,只是需要代理服务器中转。

frpc和frps配置类似,编辑frpc.ini

具体配置

运行frpc

查看frpc的日志frpc.log

查看frps的日志

目标主机与代理服务器成功建立TCP和UDP连接

客户主机打开远程桌面连接,输入IP和端口进行连接106.13.127.200:20010

可以看到成功连接,并且已启用UDP

frp也支持P2P模式,即客户主机和目标主机直接建立连接,理论上会有更好的连接效果。但是由于现实中的网络环境,这种模式可能失败。本人尝试过有失败情况,也有成功情况。可以参考frp文档自行尝试。

Windows远程桌面会尝试使用UDP提供更好的效果,所以这里同时配置了TCP和UDP代理。如果希望有更好的效果,可以考虑配置GPU渲染。关于远程桌面的流量和GPU有机会其他文章说明。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/693467.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-02
下一篇2023-08-02

发表评论

登录后才能评论

评论列表(0条)

    保存