基于frp实现外网访问个人本地服务器

news2024/11/19 4:16:42
    • 适用对象

想要通过frp实现内网服务被外网访问的人。

    • 关键词描述

内网:内网指的是局域网,几台或者几十台电脑之间互访,也叫私网。

外网:指的是我们上的Internet网络,也叫公网。

    • 需要具备的知识基础和条件

1:外网服务器一台(还是需要有个公网ip的,一般推荐云服务器,对应云服务器会分配一个公网ip)

2:内网服务器一台

3:frp包以及基础的配置知识

    • 主体流程图如下

我们可以看出,公网用户想要访问到我们内网的服务,还是需要有一个公网的服务器(此处用的云服务器)做转发,才能实现的。而我们frp技术就是链接公网服务器和内网服务器的。这样,用户访问了公网服务器(云服务器),然后公网把对应请求处理转发给内网,内网服务器回复给了公网服务器,然后公网服务器转回给用户。

    • frp服务实现流程

gitHub下载地址:点击此处下载:https://github.com/fatedier/frp/releases

一定要注意:ubuntu linux 下载的是amd 不是 arm 后缀

    • 服务器端部署

    • 将Linux版frp上传至服务器,解压文件

tar -zxvf frp_0.46.1_linux_amd64.tar.gz
    • 进入解压后frp目录,编辑frps.ini配置文件,创建日志目录

注意这次操作的是frps 后缀是s

cd frp_0.46.1_linux_amd64
vim frps.init
# 这个需要和下面的日志输出路径对应
mkdir -p /opt/frp/log/  

做如下配置并且保存:

# 绑定服务端端口,给客户端连接的通道,都是7000 等熟悉了自己再调整
bind_port = 7000
# 设置客户端token,对应的客户端,也需要配置,有一定的安全保证,加上
token = !QAZ@WSX#EDC
# 日志 -- 这个可以查看转发和客户端是否链接成功,是排除错误的关键。可以用cat命令监听
log_file = /opt/frp/log/frps.log
log_level = info
# 日志最多保存天数
log_max_days = 3

保存:

按住esc后  输入 qw:  回车保存
    • 启动服务端

在当前目录执行: nohup  ./frps -c ./frps.init &
    • 核对服务是否成功启动

cat /opt/frp/log/frps.log

能看到 7000 successful 就可以了,7002是我配置的别的端口

    • 客户端部署

下载对应平台的frp包,我的客户端也是ubuntu,所以我用之前下号包frp_0.46.1_linux_amd64.tar.gz 就可以了

    • 将Linux版frp上传至服务器,解压文件

tar -zxvf frp_0.46.1_linux_amd64.tar.gz
    • 进入解压后frp目录,编辑frpc.ini配置文件,创建日志目录

注意这次操作的是frpc 后缀是c

cd frp_0.46.1_linux_amd64
vim frpc.init

编辑frpc.ini 初始化文件

[common]
# 把 **.**.**.**  换成你服务器的ip
server_addr = **.**.**.**
# 这个和服务器common标签下的保持一致
server_port = 7000
# 和服务器的token保持一致
token = !QAZ@WSX#EDC

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 自定义端口,定义后,frps 服务端会自动启动且监听对应端口
[ubuntu-web]
# 有些地方在用https,https只是针对https有针对扩展,tcp模式同样可以进行 https 和 http 转发
type = tcp
# 如果是你本地其他电脑的服务,可以换成192.168.31.11等本地地址,若果服务和frpc在同一电脑地址下,用127.0.0.1
local_ip = 127.0.0.1
local_port = 443
remote_port = 8082
    • 启动服务端

注意这次操作的是frpc 后缀是c

在当前目录执行: nohup  ./frpc -c ./frpc.init &
    • 核对服务是否成功启动

注意:现在要去 服务器端 看握手,现在换到服务器frps 所在的后台执行命令

cat /opt/frp/log/frps.log

应该可以看到在 服务器端 激活了 客户端 配置的端口 8082

    • 正常情况下所有操作都结束了,可以愉快访问服务器了,但是通常结果是不正常,所以我给大家列一下常见问题

  1. 通过telnet **.**.**.** 端口号 确认端口可用,如果不可用看看是不是云服务器安全组没有放开对应端口

  1. 去服务器log下核对当前异常问题,核对服务器init 客户端init文件是不是有错别字

  1. postman如果请求失败,用浏览器试一试是否可以。(我是开始postman一致失败,浏览器可以,可能配置问题)

    • 小建议

成功运行了后,你再考虑什么https 配置,nginx 转发之类的操作,不然只会更懵逼。

1:为什么有了公网服务器,还需要这么麻烦,用内网部署,再公网转发?

主要是云服务器很贵,其实我们可以用本地的高配置,加上公网的转发,把自己的本地高配服务通过低配云服务器暴露在公网,达到成本最小化的目的。

例如:

本地常规电脑配置通常达到:16G内存 + 1T硬盘

云服务器购买最低配置:2G内存+40G硬盘

2:服务可控,例如花生壳之类的,总体价格会贵近百块,而且我们可以针对购买的云服务器有更多的操作(云服务买新客优惠的买一年)。

其他的好处欢迎留言补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java异常分类常见使用场景

今天在自己实现RxJava框架时,发现一些参数异常、流关闭异常等,Rxjava框架是会抛出相应的异常的,所以自己编写实现这块源码的时候,渐渐的也需要使用到这些知识,这里对这块做一下回顾总结。 使用 我们代码编写实现中&am…

开年喜讯!知道创宇一连斩获2022年度“IT168技术卓越奖”三项大奖

近日,业界知名IT垂直门户媒体IT168发布“2022年度IT168技术卓越奖”获奖名单,知道创宇凭借强大的技术优势与出色的产品能力脱颖而出,一举斩获网络安全领域三项大奖: 知道创宇创始人、CEO赵伟获评“数字化转型领军人物” ScanV-互…

【C++】优先级队列priority_queue/仿函数(函数对象)

这里写目录标题一.优先级队列1.优先级队列的介绍2.priority_queue的定义与使用二.仿函数/函数对象三.优先级队列的模拟实现一.优先级队列 1.优先级队列的介绍 1)注意优先级队列和队列不是一个东西,队列是容器,优先级队列是一种容器适配器&am…

服务监控之promethues+grafana,直接送你上大师,这还不上热门吗

最近的项目需要上监控,虽然之前也是使用这个方案,但是作为使用者一直没有太关注细节,也没有真正的去部署过,刚好凑着这次机会,彻底掌握下这套监控系统 1、监控系统架构 监控的架构这个图几乎每个文章都有&#xff0c…

学习JS,实现自动打字机动效

前几天遇到一个需求,产品告诉我说,希望这些字可以像自动打字那样,一个一个的出来,于是在完成需求的同时,顺便把这个方法记录出来,看大家是否也需要。 目录 1、实现思路 2、html布局和css样式 3、预定义…

【数据库】什么是关系型数据库和非关系型数据库

数据库分类关系型数据库非关系型数据库键值对存储数据库列存储数据库搜索引擎数据库面向文档数据库图形数据库数据库优缺点应用程序都离不开数据库,那不同的数据结构,就会存放在不同的数据数据库中,所以数据库按数据结构分为关系型数据库和非…

spring事务失效的一些场景

1、 Transactional 只能作用在public修饰的方法上 spring事务的实现AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute返回null,即不支持事务。 2…

ORB-SLAM3算法和代码学习——跟踪参考关键帧TrackReferenceKeyFrame

0总述 无论是跟踪恒速运动模型还是跟踪参考关键帧,本质上都是基于帧间匹配跟踪。 跟踪恒速模型是当前帧和上一帧之间的匹配,使用基于恒速模型计算得到的位姿作为优化的初始位姿,基于网格和搜索半径寻找匹配关系。 跟踪参考关键帧是当前帧和…

SpringCloudAlibabaSentinel实现网关动态限流

目录 1.SpringCloudAlibabaSentinel实现网关动态限流 1.概念和来历 2.概览及控制台搭建 3.控制台有哪些能力 4.功能及设计理念 5.限流的几种方法 2.SpringCloud Alibaba Sentinel 的降级功能 1.yml中添加配置 2.编写配置类 3.编写兜底工具类 3.Sentinel还对Feigin实…

代码整洁之道,好的代码就是为了更美好的生活

概述 美国童子军有一条简单的军规:让营地比你来时更干净。当梳理代码时,坚守此军规:每次 review 代码,让代码比你发现它时更整洁。 一位大神说过:“衡量代码质量的唯一有效标准:WTF/min”,并配…

14.Isaac教程--Jetbot应用示例

Jetbot应用示例 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 本节介绍如何将 Isaac SDK 与 NVIDIA 新的高性能模拟平台 Omniverse 集成,以让 Jetbot 在模拟中跟随球。 本节作为使用三个 Jetbot 应用程序进入 Omniverse 和 Isaac …

国产的蓝光存储设备能算信创产品吗?

这个问题是客户前几天问我的,笔者只能实事求是的告诉他:目前还不能算!首先蓝光存储产品暂时未被列入信创名录,其次蓝光存储中最核心的读写设备(蓝光光驱)的技术专利和生产工艺基本被日本企业(索…

LeetCode 101. 对称二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 101. 对称二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 1…

高端运动耳机哪个品牌最好、公认最好的跑步耳机品牌排名

在健身、运动的时候,过程往往是很枯燥的,这时候,如果能有动感的音乐在旁,调动我们的积极性,就再好不过了,所以很多人在运动的时候都会选择佩戴一款运动蓝牙耳机。不过适合运动的蓝牙耳机少之又少&#xff0…

七、MySQL 多表查询详解(附练习题及答案----超详细)

文章目录一、笛卡尔积(或交叉连接)的理解二、多表查询分类讲解2.1 分类1:等值连接 vs 非等值连接2.2 分类2:自连接 vs 非自连接2.3 分类3:内连接 vs 外连接2.4 SQL99语法实现多表查询2.4.1 内连接2.4.2 左连接2.4.3 右…

System Description 步骤

纲要: 在有了Composition以后,下一步就是把它分配到ECU里面。 1. Create System Description Import DBC file, select ECUs and CAN Frames under the DBC. Then it will create "SystemDescription.arxml" file. [1] 2. Check the content…

地图下载器代码结构设计及功能实现

jcef包引入表结构设计后台关键代码结构前端关键代码结构功能展示启动页底图切换绘制选择下载区域行政区划切换选择下载区域下载关键代码import { InnerMqClient } from ../../rx/inner-mq.service;import { SubmitService } from ../../service/submit.service;import { MapBas…

马蹄集 字符判断

字符判断 难度:白银 时间限制:1秒 巴占用内存:64M 输入一个字符,判断是数字字符、大写字母、小写字母、算术运算符、 关系运算符、逻辑运算符,还是其他字符,分别输出Number?”, "Capital letter?”,…

Springboot集成knife4j文档时,接口信息没有显示

我使用的 SpringBoot、knife4j 版本jar包如下所示&#xff1a;<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version><relativePath/> …

kube-bench初体验

kube-bench是一个通过运行CIS Kubernetes benchmark中记录的checker来检查Kubernetes是否安全部署的工具。测试&#xff0c;找gap&#xff0c;audit&#xff0c;都可以啊关于CIS k8s benchmark 参见 CIS Kubernetes Benchmarks (cisecurity.org)就是说&#xff0c;想做k8s加固&…