frp内网穿透云服务器。云服务器映射多个家庭局域网内网端口。家庭Windows主机内网运行多个web程序

这篇文章最终要实现的效果是,把云服务器的公网IP绑定到自己本地局域网上的主机一样的效果。相当于局域网主机有了一个自己的公网IP地址。

FRP (Fast Reverse Proxy) 是一个用 Go 语言编写的高性能反向代理应用程序,主要用于内网穿透。它允许位于 NAT 或防火墙后的内网服务通过在公共网络上部署一个 frp 服务器(通常称为 frps)来对外提供服务。通过在客户端(frpc,即 frp 客户端)配置相应的代理规则,外部网络上的用户可以访问这些被防火墙或 NAT 限制的内部资源。

核心功能
  • 内网穿透:FRP 可以帮助内网服务穿透 NAT 和防火墙,使得这些服务可以从外部网络访问。
  • 反向代理:支持 TCP、UDP、HTTP、HTTPS 等多种协议的反向代理。
  • 负载均衡:FRP 支持通过配置多个入口节点来实现简单的负载均衡。
  • 加密传输:FRP 支持通过自定义设置使用加密传输,确保数据在传输过程中的安全性。
  • 身份验证:FRP 服务端和客户端支持多种身份验证方式,保证连接的安全性。
  • 访问控制:可以通过配置文件限制访问权限,管理不同客户端的访问规则。
组件说明
  1. frps(FRP Server)

    • 部署在具有公网 IP 地址的服务器上。
    • 负责接收来自 FRP 客户端的连接请求,并将请求转发到后端的具体服务。
    • 可以配置多种监听端口,支持不同的服务和协议。
  2. frpc(FRP Client)

    • 部署在内网环境中,需要进行穿透的服务器上。
    • 负责将内网服务通过建立到 FRP 服务器的连接暴露给外部网络。
    • 可以配置多个代理规则,以支持多个内网服务的穿透。
配置实例

以下是一个基本的 FRP 服务器和客户端配置的示例:

FRP 服务器配置(frps.ini)

[common]
bind_port = 7000

FRP 客户端配置(frpc.ini)

[common]
server_addr = x.x.x.x  # 替换为 FRP 服务器的公网 IP
server_port = 7000

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

在此配置中,FRP 客户端将本地的 SSH 服务(通常运行在端口 22)通过 FRP 服务器暴露在公网的 6000 端口上。这意味着,任何能访问 FRP 服务器 IP 地址在 6000 端口的用户都可以通过这个端口连接到内网的 SSH 服务。

使用场景

FRP 非常适合以下使用场景:

  • 内网的 Web 服务需要暴露到互联网上。
  • 访问部署在内网的 API 或数据库服务器。
  • 远程办公时,访问公司内部网络资源。
  • IoT 设备远程管理和数据访问。

总之,FRP 是一个功能强大且灵活的内网穿透和反向代理工具,适用于多种网络穿透和服务暴露需求。

实际操作

1.配置服务器

## 准备一个云服务器,具有公网Ip的服务器,建议使用香港服务器,免域名备案

输入wget命令下载frp服务器

wget https://github.com/fatedier/frp/releases/download/v0.41.0/frp_0.41.0_linux_amd64.tar.gz

1.下载完成后的文件夹执行以下命令
在这里插入图片描述

tar -zxvf frp_0.41.0_linux_amd64.tar.gz

2.生成对于文件夹

cd frp_0.41.0_linux_amd64

3.查看所有文件

ll

在这里插入图片描述

vim frps.ini

4.配置服务端的文件,dashboard_port是web控制面板的端口号
在这里插入图片描述
5.执行命令,运行服务端,日志文件会输出在nohop.out中

nohup ./frps -c ./frps.ini &

6.查看日志,若是输出successful表示启动成功

cat nohup.out

在这里插入图片描述
7.访问web控制面板。地址为,ip:7500。若出现以下界面,表示服务器配置成功
在这里插入图片描述

2.配置windows,自己的主机。去github下载对应windows的压缩包。找到v0.41版本

2.1.下载frp的windows压缩包

https://github.com/fatedier/frp/releases?page=3

请添加图片描述

2.2.解压到一个文件夹

在这里插入图片描述

2.3.配置fprc.ini

type一定要选择tcp的方式,并且指定local 和remote端口,否则remote的端口会随机生成
[common]
server_addr =x.x.x.x
server_port = 7000


[local_80]
type = tcp
local_port = 80
remote_port=80
[local_3000]
type = tcp
local_port = 3000
remote_port=8080

在这里插入图片描述

这里我将本地的80端口映射到了远程服务器上也是80端口,本地的3000端口映射到远程的8080端口。当我访问远程主机 ip:80后会映射到我本地的localhost:80端口。访问远程的ip:8080端口会映射到我本地开启的localhost:3000端口。这样就实现的内网穿透

在这里插入图片描述

2.4.cmd进入控制框,执行 frpc.exe文件

一定要使用cmd的方式执行exe文件,否则执行运行不了。

在这里插入图片描述
在这里插入图片描述

这里是我已经开启了,所以会报错error。到此,服务器就完成了外网映射内网。

2.5查看服务器web端的tcp注册界面,显示online表示注册成功。地址为,ip:7500

在这里插入图片描述

2.6输入服务器ip地址+端口号访问测试。成功!

这里就实现了访问远程服务器—》远程服务器转发----》内网windows主机

在这里插入图片描述

3.购买域名,完成自定义域名功能

3.1阿里云或者腾讯购买一个非常便宜的域名,我买好了8RMB一年。然后配置dns解析

在这里插入图片描述

配置域名解析

在这里插入图片描述
在这里插入图片描述

点击确定后就完成了自定义域名绑定。可以使用域名访问内网的应用了,绑定后稍微等1min。因为阿里云要解析同步数据。在这里插入图片描述

查看远程web控制面板,有数据。

在这里插入图片描述

猜测一下为什么不用http,要使用tcp呢?

HTTP(超文本传输协议)和 TCP(传输控制协议)都是网络通信的重要协议,它们在网络中扮演着不同但互补的角色。理解它们之间的关系,有助于更好地把握现代网络通信的工作原理。

TCP - 传输控制协议

TCP 是一种传输层协议,它为上层应用提供了一种可靠的数据传输服务。TCP 确保数据可以在网络中从一端可靠地传输到另一端,即确保数据的完整性和正确性。TCP 主要的特点包括:

  • 面向连接:在数据开始传输之前,TCP 需要源和目标之间建立连接。
  • 可靠传输:TCP 通过序号、确认应答、重传机制等确保数据正确无误地到达目标地。
  • 流控制和拥塞控制:TCP 有机制来调整数据的发送速率,以匹配接收方的处理速度和网络的当前状态。
  • 有序传输:TCP 保证数据按照发送顺序到达接收端。
HTTP - 超文本传输协议

HTTP 是一种应用层协议,用于分布式、协作式、超媒体信息系统。HTTP 是 Web 上使用的主要协议,用于在 Web 浏览器和服务器之间传输网页和其他数据。HTTP 主要特点包括:

  • 无状态协议:HTTP 协议自身不保存之前的请求记录,每次请求之间是独立的。
  • 基于请求-响应模式:客户端发送请求后,服务器回送响应。
  • 可扩展:HTTP 允许传输任意类型的数据对象,通过 MIME 类型标识数据的格式。
它们之间的联系

HTTP 和 TCP 之间的主要联系是,HTTP 建立在 TCP 提供的服务之上。HTTP 作为应用层协议,使用 TCP 在网络中传输数据,依赖 TCP 提供可靠性和顺序性保证。

  • 依赖关系:HTTP 依赖于 TCP 来确保数据包的可靠性、顺序和错误检测。当你通过浏览器访问一个网站时,浏览器(HTTP 客户端)首先与服务器建立一个 TCP 连接,然后通过这个连接发送和接收 HTTP 消息。
  • 性能影响:TCP 的性能(如连接建立的延迟、重传等)可以直接影响 HTTP 的响应时间和效率。

总结来说,HTTP 和 TCP 是现代互联网通信的基石,它们共同协作,使得网络通信既可靠又高效。HTTP 利用 TCP 的传输服务在用户和网络服务之间高效地交换信息。

大胆猜测为什么使用tcp连接也能实现http访问内网应用。(若有错误请鸽鸽告知)

http在应用层,而tcp在运输层。故frp只会解析到tcp层后,就会把数据包转发给内网的主机。这里frp不需要解析到http层,因为frp作为一个中转站,只是负责转发数据而已,更简单点说,frp也可以是一个运行在网络层的路由器。只负责报文的存储转发和路由而已。故可以不使用http层与内网进行通信。
当内网应用接收到tcp的连接后,交给程序,最后封装好数据再次返回给frp,frp拿到数据后返回给客户端。

在这里插入图片描述

以下对于网络模型进行讲解

五层网络模型,又称为TCP/IP五层模型,是用来描述计算机网络通信的一种模型。这个模型从下到上分为物理层、数据链路层、网络层、传输层和应用层。这些层次定义了网络通信的不同方面,并且各自负责不同的功能。下面详细介绍每一层的功能和相关协议:

1. 物理层

物理层负责在物理媒体(如电缆、光纤等)上进行原始的数据传输,不关心数据的含义和结构。物理层的任务主要是确保原始数据可靠地在网络介质上进行传输。物理层包括的设备有网线、光纤、调制解调器等,以及相关的接口标准,如RJ45、100BASE-T等。

2. 数据链路层

数据链路层的主要任务是将原始比特流转换成逻辑的结构化数据包,称为帧。这一层提供介质访问和错误检测功能,确保数据在网络设备间准确无误地传输。此层的协议包括以太网(Ethernet)、PPP(Point-to-Point Protocol)等。数据链路层设备包括交换机、网桥等。

3. 网络层

网络层负责在多个网络间转发数据包,这包括决定数据的路径和路由。网络层使用的协议主要是IP协议,包括IPv4和IPv6。此层的设备有路由器,它用来连接不同的网络,确保数据包能找到从源头到目的地的最佳路径。

4. 传输层

传输层负责提供端到端的数据传输服务,这包括建立、管理和终止会话。传输层确保数据的完整性和正确顺序传输到目的地。这一层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的连接,确保数据无误并顺序到达;UDP则提供更快但不可靠的连接。

5. 应用层

应用层是最靠近用户的一层,负责处理特定的应用服务细节。这一层的协议包括HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。应用层直接为用户的应用程序(如网页浏览器、电子邮件客户端)提供服务。

总结

五层网络模型为网络设计和开发提供了一种结构化的方式,使得网络通信的每一个方面都能被逐一考虑和实现。每一层都执行其特定的功能,同时支持上层的服务并利用下层的服务。通过这种方式,网络的设计和管理变得更为模块化和清晰。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windos 安装docker

文章目录 安装1.下载安装包2.双击安装软件 验证修改国内镜像地址FAQDocker Engine stopped 小结 安装 1.下载安装包 到官网下载适配的安装包:https://www.docker.com/products/docker-desktop/ 2.双击安装软件 选择ok 等待安装依赖 安装完成以后会重启电脑&am…

【已解决】黑马点评项目Redis版本替换过程中误删数据库后前端显示出现的问题

为了实现基于Redis的Stream结构作为消息队列,实现异步秒杀下单的功能,换Redis版本 Redis版本太旧了,所以从3.2.1换成了5.0.14 此时犯了一个大忌,因为新的Redis打开后,没有缓存,不知道出了什么问题&#xf…

Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享

作者 | 老杨 出品 | 上海开源智造软件有限公司(OSCG) 概述 在本文中,我们将深入研讨如何于 Odoo 18 中构建 JavaScript(JS)对话框或弹出窗口。对话框乃是展现重要讯息、确认用户操作以及警示用户留意警告或错误的行…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …

探索CSDN博客数据:使用Python爬虫技术

探索CSDN博客数据:使用Python爬虫技术 在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和py…

【蓝桥杯选拔赛真题96】Scratch风车旋转 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch风车旋转 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

LeetCode:222.完全二叉树节点的数量

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:222.完全二叉树节点的数量 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二…

CNN和Transfomer介绍

文章目录 CNN和Transfomer介绍CNN和Transfomer的区别1. **基本概念**2. **数据处理方式**3. **模型结构差异**4. **应用场景区别** 自注意力机制1. **自注意力机制的概念**2. **自注意力机制的实现步骤**3. **自注意力机制的优势** Transformer结构组成1. **多头注意力层&#…

【数据结构练习题】栈与队列

栈与队列 选择题括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈设计循环队列面试题1. 用队列实现栈。[OJ链接](https://leetcode.cn/problems/implement-stack-using-queues/solutions/)2. 用栈实现队列。[OJ链接](https://leetcode.cn/problems/implement-queue-using-stack…

python 定时任务管理封装

主逻辑代码 # -*- coding: utf-8 -*- # import apscheduler import pandas as pd from datetime import datetime # 导入调度器,此处使用BackgroundScheduler阻塞调度器 from apscheduler.schedulers.background import BackgroundScheduler # 导入触发器&#xf…

MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程

1 部署要求 1.1 服务器配置 部署服务器要求: 操作系统:Ubuntu 22.04 / CentOS 7.6 64 位系统CPU/内存:4C/8GB 以上磁盘空间:100GB 1.2 端口要求 在线部署MaxKB需要开通的访问端口说明如下: 端口作用说明22SSH安装…

LCAN-FOBR设备在风力发电项目的消防通讯中的使用

LCAN-FOBR设备在风力发电项目的消防通讯中的使用 在风力发电项目中,所有的风机内部的状态都需要能够在中控室备被监控到,不论是风机的工作状态还是风机内部的消防状态,以便中控室的工作人员都够根据观测到的信息及时的做出反应,避…

Linux扩展——shell编程

前置&#xff1a;Linux基础及命令复习 目录 shell概述Shell脚本入门案例 sh bash ./ . source 变量系统预定义变量 $HOME $PWD $SHELL等自定义变量 unset readonly补充&#xff1a;开启子Shell进程的常见方法 (...) $(...) ... <(...) >(...) 特殊变量 $n $# $* $ $&…

计算机网络-GRE Over IPSec实验

一、概述 前情回顾&#xff1a;上次基于IPsec VPN的主模式进行了基础实验&#xff0c;但是很多高级特性没有涉及&#xff0c;如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等&#xff0c;以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…

【运维笔记】向日葵远程:输入法大写无法切换至小写

项目场景&#xff1a; 向日葵&#xff1a;远程客户电脑ubuntu系统 客户电脑&#xff1a;windows 10 &#xff0c;并安装向日葵 服务器&#xff1a;ubuntu系统 问题描述 维护ubuntu时突然无法切换成小写&#xff0c;导致无法运维 原因分析&#xff1a; 大写键被锁住 解决方案…

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件

本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息&#xff0c;页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…

AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航

作者&#xff1a;Gengze Zhou, Yicong Hong, Qi Wu 单位&#xff1a;阿德莱德大学&#xff0c;澳大利亚国立大学 论文链接&#xff1a; NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models &#xff08;https://ojs.aaai.org/index.p…

react杂乱笔记(一)

程序“npx”无法运行: 找不到应用程序所在位置 行:1 字符: 1 解决方法; 不要在vscode中执行命令,在cmd 中可以执行 Module not found: Error: Cant resolve web-vitals in D:\learn\react-basic\src ERROR in ./src/reportWebVitals.js 5:4-24 Module not found: Error: Cant…

【计算机视觉】opencv-停车位检测原理及代码演示

概述 本文介绍了一种基于OpenCV库的停车场空位检测方法。通过本项目演示&#xff0c;可以对opencv库有更深刻的理解。文章详细阐述了检测原理、算法流程以及代码实现。 一、原理介绍 基于OpenCV的停车位检测原理涉及多个图像处理步骤&#xff0c;以下将结合相关公式详细介绍每…

华为认证考试模拟题测试题库(含答案解析)

你还在为华为认证数通考试的备考而烦恼吗&#xff1f; 还在纠结如何高效复习&#xff0c;掌握考点吗&#xff1f; 腾科IT教育为广大考生提供了华为认证考试模拟题库&#xff0c;让你在考试前轻松应对各种题型&#xff0c;提升做题能力与考试信心&#xff01; 【单选题】 PPP…