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

利用frp和腾讯云服务器将内网暴露至外网(内网穿透)

功能介绍

此文目的是将本身闲置的电脑作为服务器暴露给外网,我们本身家用的宽带是只能访问外网,外网是不能够自动访问内网的。无论是电信还是移动宽带,一般情况下我们的宽带的所属路由器IP都是虚拟IP,跟公网IP有着本质的不同。网络访问需要根据固定IP来访问,如果我们所属的IP一直变动,人家就无法固定访问。如果想要固定IP,电信和移动好像都是要每个月额外加钱。要想将内网暴露出来,还是得有一个公网IP,我本身有一个腾讯云服务器,所以利用这个服务器可以将内网服务暴露出来。

实现步骤

1. 下载frp安装包

可以到github中进行下载:https://github.com/fatedier/frp/releases
frp介绍:所谓frp是专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议,本质上就是在有公网IP的云服务器中启动frps服务,然后在需要暴露的内网电脑中启动frpc客户服务,主动与frps建立长连接。外部通过公网IP+端口访问时,frps将请求转发给frpc,frpc转至内部ip+端口实现服务请求。这样就将服务暴露出来了。
我的笔记本已经安装了linux系统,所以直接选择对应的linux版本
frp官网使用介绍:https://gofrp.org/zh-cn/docs/examples/ssh/
在这里插入图片描述

2. 服务端配置(公网服务器)

  1. 将安装包上传至公网服务器中并解压,修改frps.toml配置
    在这里插入图片描述
bindPort = 7000                # 客户端连接端口
dashboardPort = 7500           # 监控面板端口
dashboardUser = "admin"        # 面板用户名
dashboardPassword = "yourpwd"  # 面板密码
  1. 启动服务端
./frps -c frps.toml
  1. 设置开机自启(Systemd,如果没有安装Systemd的话需要先安装)
    创建服务文件 /etc/systemd/system/frps.service
[Unit]
Description=Frp Server  # 自定义名称
After=network.target    # 自定义    [Service]
ExecStart=/path/to/frps -c /path/to/frps.toml  # 这个路径要改为自己的服务路径,前后两个都要改,一个是服务一个是配置文件[Install]
WantedBy=multi-user.target
  1. 保存之后刷新配置,重启服务
sudo systemctl enable frps && sudo systemctl start frps

3. 客户端配置(内网设备)

  1. 将安装包同样放至内部电脑中解压
    在这里插入图片描述
  2. 修改frpc.toml配置
serverAddr = "公网IP"   # 替换为服务器公网IP
serverPort = 7000       # 与服务端bindPort一致# 场景2:映射Web服务
[[proxies]]
name = "web-service"
type = "tcp"
localPort = 8080   # 本地服务的端口
remotePort = 8081 # 绑定公网服务器对外暴露的端口
# customDomains = ["your.domain.com"]
  1. 启动客户端
./frpc -c frpc.toml

4. 安全强化

  1. 启动token验证
    服务端frps.toml添加:
auth.token = "your_secure_token"

客户端frpc.toml添加:

auth.token = "your_secure_token"

5.验证连接

  1. 将公网IP必须的端口在防火墙中配置暴露出来,一个是绑定端口7000,一个是公网服务器对外暴露的端口8081,至于监控面板端口需不需要暴露看自己。
    在这里插入图片描述

  2. 验证,http://IP:8081 我本身就是启动了一个tomcat来简单验证下
    在这里插入图片描述

http://www.lqws.cn/news/206713.html

相关文章:

  • Java毕业设计:办公自动化系统的设计与实现
  • 使用有限计算实现视频生成模型的高效训练
  • Redis:现代应用开发的高效内存数据存储利器
  • 三菱变频器快速与ModbusRTU转profibusDP网关通讯案例
  • 【补题】Educational Codeforces Round 107 (Rated for Div. 2) D. Min Cost String
  • 基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
  • Python-进程
  • 腾讯 ovCompose 跨平台框架发布,几年后还会有人用吗?
  • 计算机基础知识(第五篇)
  • 《光子技术成像技术》第二章 预习2025.6.7
  • WPF八大法则:告别模态窗口卡顿
  • 408第一季 - 数据结构 - 树与二叉树
  • .Net Framework 4/C# 泛型的使用、迭代器和分部类
  • stm32—ADC和DAC
  • iview中的table组件点击一行中的任意一点选中本行
  • PCA笔记
  • phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
  • ​线路板快速打样服务中的交期管理策略:猎板PCB的极速交付实践​​
  • Redis:Hash数据类型
  • Redis线程安全深度解析:单线程模型的并发智慧
  • 黑马点评【基于redis实现共享session登录】
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • Redis高可用架构
  • 【Go核心编程】第十三章:接口与多态——灵活性的艺术
  • 安卓基础(Java 和 Gradle 版本)
  • Android USB 通信开发
  • LeetCode 118 杨辉三角 (Java)
  • Python项目中添加环境配置文件
  • python如何统计图片的颜色分布
  • Spark 之 AQE