当前位置: 首页 > article >正文

frp内网穿透部署,轻松实现内网服务对外访问

FRP(Fast Reverse Proxy)是一种轻量级、高性能的反向代理工具,利用反向代理技术将公网请求转发至内网服务器上,并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时,FRP能够将公网与内网之间的隔离突破,使得公网用户可以直接访问内网服务器上的资源,从而实现远程访问和管理。同时,FRP可以实现在内网环境下使用自定义域名访问web服务器,并且支持TCP和UDP的端口转发。

简单讲就是可以实现将家里的应用与服务映射到公网IP上,前提是有云服务器,可以考虑下腾讯云或者阿里云,一年几十块可以玩下。

环境: 云服务器CentOS8(有公网IP) Frpv0.52.3(2023-12-07版本)

使用示意图: FRP

完整配置文档地址:Frp完整文档

下载安装

因为托管在github,可能需要科学上网,或者后台私信。 下载地址 服务器端一般用Linux,下载对应版本。客户端可以是Linux或者windows. 下载

在服务器上进行解压,其实里面东西不多,包含了服务器端和客户端启动文件和配置文件。 frps是服务器端,frpc是客户端,都有对应的配置文件.toml,如果是作为服务器端可以删除frpc的文件。

[root@centos8 ~]# cd /www/frp
[root@centos8 frp]# ls -la
total 30004
drwxr-xr-x  2 www  www      4096 Dec  7 12:32 .
drwxr-xr-x 28 root root     4096 Dec  7 10:25 ..
-rwxr-xr-x  1 root root 13905920 Oct 24 10:56 frpc
-rwxr-xr-x  1 root root      142 Oct 24 10:57 frpc.toml
-rwxr-xr-x  1 root root 16789504 Oct 24 10:56 frps
-rwxr-xr-x  1 root root      118 Dec  7 10:54 frps.toml
-rwxr-xr-x  1 root root    11358 Oct 24 10:57 LICENSE

服务器端配置

步骤:

1、开启云服务器安全组端口7000(客户端与服务器连接)、7500(服务器监控面板端口)、7001(自定义内网应用端口)

2、开启云服务器防火墙firewalld端口

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7500/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --reload

3、修改配置文件

# 修改frps.toml
vim frps.toml

#
 与客户端连接端口,默认7000
bind_port =  7000

#
 配置服务器监控面板
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
webServer.addr = "0.0.0.0"

4、配置修改完成之后可以直接执行,就是执行frps,然后指定配置文件为frps.toml

# 修改下执行权限,防止没有足够权限
chmod +x ./frps

# 运行服务
./frps -c ./frps.toml

使用systemctl管理服务进程

如果每次都手动运行服务应该会在前台运行,不能退出,如果ctrl + c退出,frp服务也就结束了,因此建议使用systemctl进程管理实现服务的启动停止和重启。

在/usr/lib/systemd/system/里面添加一个服务配置文件frps.service

vim /usr/lib/systemd/system/frps.service

#
 内容如下,记得修改对应的目录
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Restart=on-failure
RestartSec=5s
WorkingDirectory=/www/wwwroot/frp                            # 工作目录
ExecStart=/www/wwwroot/frp/frps -c /www/wwwroot/frp/frps.toml # 修改为对应目录
[Install]
WantedBy=multi-user.target

#
 保存退出
systemctl daemon-reload                                      # 刷新
systemctl start frps                                         # 启动服务

#
 查看对应的服务和端口有没有正常运行
systemctl status frps

#
 查看有没有7000,7500端口
netstat -nltp

客户端配置

客户端只需要能够上网即可,填写固定的Frps公网地址就行,然后配置内网服务以及端口,默认只能代理客户端本机的服务。

Linux frpc客户端配置

如果使用linux客户端的话也是使用上面下载的版本,删除掉frps开头的文件即可。然后修改frpc.toml。

vim frpc.toml

# frpc.toml内容,记得修改自己的IP
serverAddr = "14.56.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 7001

# 保存退出,启动客户端服务,和上面服务器原理一致,需要开通服务器对应端口7001
./frpc -c ./frpc.toml

也可以使用systemctl进行frpc服务管理,与上面frps的一致就不重复了。在/usr/lib/systemd/system/里面创建一个frpc.service文件,然后把启动文件和对应的配置文件写上,刷新systemctl。

Windows Frpc客户端配置

如果使用window客户端下载window版本的版本frp_0.52.3_windows_amd64.zip windows客户端

frpc.toml配置如下

serverAddr = "14.29.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "web-test"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 7001

然后客户端需要到cmd命令行运行 frpc.exe -c frpc.toml 进入到frp目录,启动frpc.exe 使用 frpc.toml配置文件 完成之后提示已经启动

frpc启动
frpc启动

内网访问: 内网网站

外网访问: 外网访问

window如果把cmd黑色窗口关闭则服务停止,因此需要设置后台运行,或者设置开机自启,通过计划任务运行,在此不做说明,可以私信。

frps服务器管理界面

通过在frps上配置服务面板监控代理状态。 http://ip:7500 可以查看连接状态。 FRPS

注意如果代理ssh、http等可以使用tcp类型,如果想要使用域名需要有自己的域名解析。

每个proxies代表一个应用,如果需要新增内网应用都需要开启对应的端口。

不建议代理大文件传输,因为是基于云服务器带宽的,取决于公网带宽限制。

好处是没有代理数量限制,数据掌握在自己手中,不需要第三方。

本文由 mdnice 多平台发布


http://www.kler.cn/news/162804.html

相关文章:

  • Gan论文阅读笔记
  • SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
  • 解释区块链技术的应用场景和优势。
  • LinuxBasicsForHackers笔记 -- 压缩和归档
  • AIGC创作系统ChatGPT网站源码,Midjourney绘画,GPT联网提问/即将支持TSS语音对话功能
  • 【漏洞复现】万户协同办公平台ezoffice wpsservlet接口存在任意文件上传漏洞 附POC
  • 因为 postman环境变量全局变量设置好兄弟被公司优化了!
  • C语言精选——选择题Day39
  • 共享娱乐宝库:电视盒子影视源分享攻略
  • 常用Nmap脚本
  • 新时代商业旨意:传统商家如何变革?
  • 潮落云起:中国云桌面的产业变局
  • maven学习笔记总结
  • TCP/IP_整理起因
  • 【已解决】MySQL:执行存储过程报错(MySQL字符集和排序方式冲突)
  • 计算机网络入侵检测技术研究
  • n个人排成一圈,数数123离队
  • 在 Mac 上使用浅色或深色外观
  • 扁平的MutableList元素每隔若干元素一组装入新MutableList,Kotlin
  • Fabric.js 实战开发使用介绍
  • 谈谈c语言中的sizeof
  • 天文馆元宇宙3d展厅打造沉浸式的参观体验
  • Spring Boot实现接口幂等
  • 国产接口测试工具APIpost
  • 数据结构线性表-栈和队列的实现
  • kafka高吞吐、低延时、高性能的实现原理
  • yarn和npm的区别
  • QToolTip 是 Qt 框架中用于显示工具提示(Tooltip)的类
  • LLaMA-Factory微调ChatGLM3报错: Segmentation fault (core dumped)
  • 工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计