frp专注于内网穿透的反向代理应用,部署使用实战教程
最近公司业务调整优化,将大部分项目都迁移到了云服务器上托管运行。包括开发环境基本上也迁移了到了云服务器。
开发环境+测试环境+演示环境+线上环境 都整了云服务器上,这样服务器的压力偏大。再加上公司闲置了不少服务器。
于于是乎就想起了公司“废物”利用了!本文内容全部是实战操作!
准备工作
1)一台有公网IP的服务器(博主使用的是一台物理机 下行 10M 上行 100M)
2)内网服务器:
2 台 CentOS 7.8 系统 服务器,一台数据库,一台WEB服务。
1 台Windows 服务器,用于做跳板机访问。
开源仓库
https://github.com/fatedier/frp
常见编译
打包后不同的的可执行文件适用不同的平台!以下供大家参考!
darwin/386
:对应 Mac x86darwin/amd64
:对应 Mac amd64linux/386
:对应 Linux x86linux/amd64
:对应 Linux amd64Windows/386
:对应 Windows x86Windows/amd64
:对应 Windows amd64
支持协议
TCP & UDP
常见的TCP和UDP协议转发,也是用的比较多的一种!
HTTP & HTTPS
仅需要将网站转发到外网访问,可以使用这个。这样不会浪费端口。
STCP & SUDP
TCP 和 UDP 类型的服务提供一种安全访问的访问能力。避免让端口直接暴露在公网上导致任何人都能访问到。
XTCP
采用 P2P 的方式进行打洞穿透,如果能成功,后续的流量将不会经过 frps,而是直接通信,不再受到 frps 所在服务器的带宽限制。
TCPMUX
支持将单个端口收到的连接路由到不同的代理。有点和HTTP(S)相似。
部署步骤
目录说明
我们下载的源码基本上都包含3部分。
-rwxr-xr-x 1 1001 docker 9064448 Aug 3 23:22 frpc -rw-r--r-- 1 1001 docker 9503 Aug 3 23:25 frpc_full.ini -rw-r--r-- 1 1001 docker 126 Aug 3 23:25 frpc.ini -rwxr-xr-x 1 1001 docker 12054528 Aug 3 23:22 frps -rw-r--r-- 1 1001 docker 5010 Aug 3 23:25 frps_full.ini -rw-r--r-- 1 1001 docker 26 Aug 3 23:25 frps.ini -rw-r--r-- 1 1001 docker 11358 Aug 3 23:25 LICENSE drwxr-xr-x 2 1001 docker 88 Aug 3 23:25 systemd
frpc 开头的为客户端运行
frps 开头的为服务端运行
systemd 为 systemctl 服务,维持 frps[c]在后台运行的
.ini 配置文件
配置文件
这里主要介绍简单配置,不介绍太复杂的内容。
服务端配置
主要是绑定的端口 13333,客户端必须链接到这个端口。
dashboard开头的配置是 frp提供的一个监控台,可选的。
token 就是密码了,越复杂越好。
vhost 虚拟主机,指定了80端口 和 443端口。
[common] bind_port = 13333 dashboard_addr = 0.0.0.0 #dashboard_port = 13334 #dashboard_user = admin #dashboard_pwd = dh147258369 token =5#!Lxxxxx123131dddd vhost_http_port = 80 vhost_https_port = 443
客户端配置
下面是我客户端的配置。
common 远程服务器的 IP 端口 TOKEN
TCP 用的比较多一些,比如SSH,MYSQL等
一般WEB站点 HTTP / HTTPS 就用的非常多了。
我没有将复杂的配置在这个配置文件完成,还大部分是在NGINX里面做了一下。
比如 SSL 证书,HTTP 跳转 HTTPS 等
[common] server_addr = 124.xxx.xxx.xxx server_port = 13333 token = 5#!Lxxxxx123131dddd [mysql] type = tcp local_ip = 127.0.0.1 local_port = 3306 remote_port = 13306 [ssh-110] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 13322 [api-web-http] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = api.ruyo.net [api-web-https] type = https local_ip = 127.0.0.1 local_port = 443 custom_domains = api.ruyo.net [tool-web-http] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = tool.ruyo.net [tool-web-https] type = https local_ip = 127.0.0.1 local_port = 443 custom_domains = tool.ruyo.net
Server部署
1)从git上下载代码,依此执行一下代码即可
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_386.tar.gz -O frp.tar.gz tar -zxvf frp.tar.gz -C ./ mkdir /etc/frp cp frp_0.37.1_linux_386/frps /usr/bin/frps cp frp_0.37.1_linux_386/frps.ini /etc/frp/frps.ini cp frp_0.37.1_linux_386/systemd/frps.service /usr/lib/systemd/system/frps.service systemctl status frps.service systemctl start frps.service
CLIENT部署
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_386.tar.gz -O frp.tar.gz tar -zxvf frp.tar.gz -C ./ mkdir /etc/frp cp frp_0.37.1_linux_386/frpc /usr/bin/frpc cp frp_0.37.1_linux_386/frpc.ini /etc/frp/frpc.ini cp frp_0.37.1_linux_386/systemd/frpc.service /usr/lib/systemd/system/frps.service systemctl status frpc.service systemctl start frpc.service
Windows
这里主要介绍Windows客户端如何部署。
直接下载最新版本frp
https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_windows_386.zip
解压后,修改配置文件
控制台直接输入:frpc.exe -c frpc.ini 即可启动!
后台运行
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM frpc.exe -c frpc.ini
在frpc.exe目录新建一个文本文件,复制上面的内容保存。修改后缀名为 start-frpc.bat
双击即可运行!
开机启动
可以利用任务计划来运行!缺定不太稳定,如果开机不登陆账号,无法启动服务。
1)Win + R 组合快捷键,打开运行对话框,然后输入命令 taskschd.msc ,点击下方的“确定”打开服务,如下图所示。
2)新建任务计划
3)输入任务名称,按图勾选!
4)新建触发器,选择 启动时
5)新建操作,选择bat脚本。起始于 设置一下目录
6)保存的时候,验证一下登陆账号和密码
开机启动2
这里分享的是 @net.ee 大佬分享的CMD运行脚本,核心是利用nssm来维护 frp的进程后台守护运行,开机启动服务 等!
如果大家相对nssm 了解一下请移步:http://www.nssm.cc/
文件下载:大佬提供文件下载 / 分流下载地址(提取码:9197)
下载压缩包减压后,得到如图文件。
分别针对的是 32位系统,64位系统,XP系统。
根据自己的系统选择不同目录中文件复制里面到 frp的目录中即可!
双击运行即可!
亲测,体验非常棒!再也不用担心Windows系统自动重启导致连不上的问题了!
使用总结
1)密钥一定要设置并且要复杂一些。
2)内网机器A 能否启动FRP 转发 到内网机器B? 答案:不能,内网机器B需要安装客户端!
3)能*墙吗?答案:能,但是没有加密非常容易导致端口或者IP被Q。
4)如果使用比较敏感的端口比如:80,443,8080,8888,请保证你的域名有备案且接入(国外服务器不用担心这个问题)。
版权声明:
作者:我是小马甲~
链接:https://fandai.gezi.workers.dev/16879.html
来源:如有乐享
文章版权归作者所有,未经允许请勿转载。
liammmm
我是小马甲~@liammmm